From 861bb6c1b0958236ad93717f98d347aa6152bd09 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Mon, 11 Aug 1997 09:56:58 -0600 Subject: Initial revision From-SVN: r14764 --- gcc/.gdbinit | 95 + gcc/COPYING | 340 ++ gcc/COPYING.LIB | 482 ++ gcc/ChangeLog | 10652 +++++++++++++++++++++++++++++++++++++ gcc/ChangeLog.0 | 6671 +++++++++++++++++++++++ gcc/ChangeLog.1 | 9207 ++++++++++++++++++++++++++++++++ gcc/ChangeLog.10 | 10185 +++++++++++++++++++++++++++++++++++ gcc/ChangeLog.2 | 7229 +++++++++++++++++++++++++ gcc/ChangeLog.3 | 8063 ++++++++++++++++++++++++++++ gcc/ChangeLog.4 | 10783 +++++++++++++++++++++++++++++++++++++ gcc/ChangeLog.5 | 8954 +++++++++++++++++++++++++++++++ gcc/ChangeLog.6 | 8173 +++++++++++++++++++++++++++++ gcc/ChangeLog.7 | 10376 ++++++++++++++++++++++++++++++++++++ gcc/ChangeLog.8 | 11080 +++++++++++++++++++++++++++++++++++++++ gcc/ChangeLog.9 | 9968 +++++++++++++++++++++++++++++++++++ gcc/INSTALL | 1906 +++++++ gcc/NEWS | 24 +- gcc/ORDERS | 4003 ++++++++++++++ gcc/README | 26 + gcc/README-bugs | 144 + gcc/SERVICE | 1460 ++++++ gcc/TESTS.FLUNK | 39 + gcc/bi-parser.c | 980 ++++ gcc/bi-parser.h | 12 + gcc/c-decl.c | 25 +- gcc/c-gperf.h | 186 + gcc/c-parse.c | 3859 ++++++++++++++ gcc/c-parse.h | 64 + gcc/c-parse.y | 2176 ++++++++ gcc/cccp.1 | 674 +++ gcc/cexp.c | 2142 ++++++++ gcc/config.in | 32 + gcc/config/a29k/xm-unix.h | 43 + gcc/config/alpha/alpha.h | 17 + gcc/config/alpha/xm-linux.h | 3 + gcc/config/arm/xm-linux.h | 24 + gcc/config/arm/xm-netbsd.h | 10 + gcc/config/i386/dgux.h | 2 +- gcc/config/i386/xm-bsd386.h | 11 + gcc/config/i386/xm-dgux.h | 12 + gcc/config/i386/xm-freebsd.h | 4 + gcc/config/i386/xm-gnu.h | 5 + gcc/config/i386/xm-linux.h | 24 + gcc/config/i386/xm-netbsd.h | 4 + gcc/config/i386/xm-sun.h | 27 + gcc/config/i386/xm-sysv3.h | 4 + gcc/config/i386/xm-winnt.h | 24 + gcc/config/i860/i860.h | 6 +- gcc/config/i860/xm-fx2800.h | 7 + gcc/config/m68k/mot3300-crt0.S | 2 +- gcc/config/m68k/mot3300Mcrt0.S | 2 +- gcc/config/m68k/xm-altos3068.h | 7 + gcc/config/m68k/xm-amix.h | 47 + gcc/config/m68k/xm-aux.h | 9 + gcc/config/m68k/xm-hp320.h | 19 + gcc/config/m68k/xm-linux.h | 4 + gcc/config/m68k/xm-m68kv.h | 15 + gcc/config/m68k/xm-netbsd.h | 4 + gcc/config/m68k/xm-sun3.h | 5 + gcc/config/m68k/xm-tower.h | 4 + gcc/config/m88k/dgux.h | 2 +- gcc/config/m88k/m88k.h | 4 +- gcc/config/mips/elflorion.h | 24 + gcc/config/mips/nws3250v4.h | 36 + gcc/config/mips/xm-iris3.h | 8 + gcc/config/mips/xm-iris4.h | 18 + gcc/config/mips/xm-netbsd.h | 2 + gcc/config/mips/xm-news.h | 6 + gcc/config/mips/xm-nws3250v4.h | 9 + gcc/config/mips/xm-sysv.h | 38 + gcc/config/mips/xm-sysv4.h | 11 + gcc/config/ns32k/xm-genix.h | 9 + gcc/config/ns32k/xm-netbsd.h | 10 + gcc/config/sparc/xm-netbsd.h | 4 + gcc/config/sparc/xm-pbd.h | 13 + gcc/config/vax/x-vax | 3 + gcc/config/vax/xm-vaxv.h | 7 + gcc/config/xm-freebsd.h | 33 + gcc/config/xm-linux.h | 47 + gcc/config/xm-netbsd.h | 27 + gcc/config/xm-svr3.h | 33 + gcc/config/xm-svr4.h | 35 + gcc/configure | 4911 +++++++++++++++++ gcc/cp/parse.c | 8338 +++++++++++++++++++++++++++++ gcc/cp/parse.h | 91 + gcc/cstamp-h.in | 1 + gcc/gcc.1 | 4167 +++++++++++++++ gcc/gcc.c | 60 + gcc/gcc.hlp | 406 ++ gcc/gcc.texi | 4793 +++++++++++++++++ gcc/getopt.c | 34 +- gcc/getopt.h | 30 +- gcc/getopt1.c | 34 +- gcc/gstab.h | 17 + gcc/install.texi | 55 +- gcc/install1.texi | 15 + gcc/invoke.texi | 444 +- gcc/just-fixinc | 2 +- gcc/md.texi | 19 + gcc/move-if-change | 17 + gcc/objc/objc-parse.c | 5103 ++++++++++++++++++ gcc/objc/objc-parse.y | 2938 +++++++++++ gcc/obstack.c | 151 +- gcc/obstack.h | 186 +- gcc/pself.c | 1 + gcc/pself1.c | 1 + gcc/pself2.c | 1 + gcc/pself3.c | 1 + gcc/stab.def | 24 +- gcc/texinfo.tex | 4 +- gcc/tm.texi | 235 +- gcc/version.c | 1 + 112 files changed, 162377 insertions(+), 437 deletions(-) create mode 100644 gcc/.gdbinit create mode 100644 gcc/COPYING create mode 100644 gcc/COPYING.LIB create mode 100644 gcc/ChangeLog create mode 100644 gcc/ChangeLog.0 create mode 100644 gcc/ChangeLog.1 create mode 100644 gcc/ChangeLog.10 create mode 100644 gcc/ChangeLog.2 create mode 100644 gcc/ChangeLog.3 create mode 100644 gcc/ChangeLog.4 create mode 100644 gcc/ChangeLog.5 create mode 100644 gcc/ChangeLog.6 create mode 100644 gcc/ChangeLog.7 create mode 100644 gcc/ChangeLog.8 create mode 100644 gcc/ChangeLog.9 create mode 100644 gcc/INSTALL create mode 100644 gcc/ORDERS create mode 100644 gcc/README create mode 100644 gcc/README-bugs create mode 100644 gcc/SERVICE create mode 100644 gcc/TESTS.FLUNK create mode 100644 gcc/bi-parser.c create mode 100644 gcc/bi-parser.h create mode 100644 gcc/c-gperf.h create mode 100644 gcc/c-parse.c create mode 100644 gcc/c-parse.h create mode 100644 gcc/c-parse.y create mode 100644 gcc/cccp.1 create mode 100644 gcc/cexp.c create mode 100644 gcc/config.in create mode 100644 gcc/config/a29k/xm-unix.h create mode 100644 gcc/config/alpha/xm-linux.h create mode 100644 gcc/config/arm/xm-linux.h create mode 100644 gcc/config/arm/xm-netbsd.h create mode 100644 gcc/config/i386/xm-bsd386.h create mode 100644 gcc/config/i386/xm-dgux.h create mode 100644 gcc/config/i386/xm-freebsd.h create mode 100644 gcc/config/i386/xm-gnu.h create mode 100644 gcc/config/i386/xm-linux.h create mode 100644 gcc/config/i386/xm-netbsd.h create mode 100644 gcc/config/i386/xm-sun.h create mode 100644 gcc/config/i386/xm-sysv3.h create mode 100644 gcc/config/i386/xm-winnt.h create mode 100644 gcc/config/i860/xm-fx2800.h create mode 100644 gcc/config/m68k/xm-altos3068.h create mode 100644 gcc/config/m68k/xm-amix.h create mode 100644 gcc/config/m68k/xm-aux.h create mode 100644 gcc/config/m68k/xm-hp320.h create mode 100644 gcc/config/m68k/xm-linux.h create mode 100644 gcc/config/m68k/xm-m68kv.h create mode 100644 gcc/config/m68k/xm-netbsd.h create mode 100644 gcc/config/m68k/xm-sun3.h create mode 100644 gcc/config/m68k/xm-tower.h create mode 100644 gcc/config/mips/elflorion.h create mode 100644 gcc/config/mips/nws3250v4.h create mode 100644 gcc/config/mips/xm-iris3.h create mode 100644 gcc/config/mips/xm-iris4.h create mode 100644 gcc/config/mips/xm-netbsd.h create mode 100644 gcc/config/mips/xm-news.h create mode 100644 gcc/config/mips/xm-nws3250v4.h create mode 100644 gcc/config/mips/xm-sysv.h create mode 100644 gcc/config/mips/xm-sysv4.h create mode 100644 gcc/config/ns32k/xm-genix.h create mode 100644 gcc/config/ns32k/xm-netbsd.h create mode 100644 gcc/config/sparc/xm-netbsd.h create mode 100644 gcc/config/sparc/xm-pbd.h create mode 100644 gcc/config/vax/x-vax create mode 100644 gcc/config/vax/xm-vaxv.h create mode 100644 gcc/config/xm-freebsd.h create mode 100644 gcc/config/xm-linux.h create mode 100644 gcc/config/xm-netbsd.h create mode 100644 gcc/config/xm-svr3.h create mode 100644 gcc/config/xm-svr4.h create mode 100755 gcc/configure create mode 100644 gcc/cp/parse.c create mode 100644 gcc/cp/parse.h create mode 100644 gcc/cstamp-h.in create mode 100644 gcc/gcc.1 create mode 100644 gcc/gcc.hlp create mode 100644 gcc/gcc.texi create mode 100644 gcc/gstab.h create mode 100644 gcc/install1.texi create mode 100755 gcc/move-if-change create mode 100644 gcc/objc/objc-parse.c create mode 100644 gcc/objc/objc-parse.y create mode 100644 gcc/pself.c create mode 100644 gcc/pself1.c create mode 100644 gcc/pself2.c create mode 100644 gcc/pself3.c create mode 100644 gcc/version.c 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. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/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. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, + MA 02111-1307, USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/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 + + * tree.c (int_fits_type_p): Negative ints never fit unsigned + types, and unsigned ints with top-bit-set never fit signed types. + +Sat Aug 2 16:25:43 1997 Per Bothner + + * Makefile.in (EXTRA_C_OBJS): Removed. + (C_AND_OBJC_OBJS): New. Subsumes EXTRA_C_OBJS and OBJC_CCOMMON. + * objc/Make-lang.in (OBJC_CCOMMON): Removed. + +Sat Aug 2 16:11:57 1997 Doug Evans + + * configure.in: Build .gdbinit for top level build dir here. + (AC_OUTPUT): Pass oldstyle_subdirs to configure.lang. + * configure.lang: Fix building of .gdbinit for oldstyle lang subdirs. + +Sat Aug 2 13:48:15 1997 Ken Raeburn + + * cse.c (cse_insn): Ignore paradoxical SUBREGs unless we are + looking for such. + +Sat Aug 2 13:25:33 1997 Tristan Gingold (gingold@email.enst.fr) + + * calls.c (expand_call): If -fcheck-memory-usage, use pseudo-register, + check indirectly called function is executable, and set rights of + memory for aggregate as write only. + (store_one_arg): If -fcheck-memory-usage, set rights for pushed + stack argument. + * c-decl.c (init_decl_processing): Add + __builtin_aggregate_incoming_address. + * explow.c (expr_size): Call expand_expr with appropriate flag. + * expr.c (expand_builtin, case BUILT_IN_AGGREGATE_INCOMING_ADDRESS): + New case. + (expand_assignment, expand_expr, emit_push_insn, store_expr): + Insert calls to chkr_check_addr, chkr_set_right, and chkr_copy_bitmap + when -fcheck-memory-usage. + (get_push_address, get_memory_usage_from_modifier): New functions. + * expr.h: Add expand_modifier flags. + (chkr_*_libfunc): New decls. + (memory_use_mode): New declaration. + * flags.h (flag_check_memory_usage, flag_prefix_function_name): New + declaration. + * function.c (put_var_into_stack, assign_parms): If + -fcheck-memory-usage, set the rights of pushed variable. + * optabs.c (chkr_{check_addr,set_right}_libfunc): New definitions. + (chkr_{copy_bitmap,check_exec}_libfunc): Likewise. + (init_optabs): Initialize these chkr_*_libfunc. + * stmt.c (expand_computed_goto): If -fcheck-memory-usage, check that + computed address of a goto is executable. + (expand_asm, expand_asm_operands): If -fcheck-memory-usage, + disallow asm statments. + * toplev.c (flag_check_memory_usage, flag_prefix_function_name): New + variable. + (f_options): Add `check-memory-usage' and `prefix_function_name'. + (main): Disable `-fomit-frame-pointer' if `-fcheck-memory-usage' is set + and the machine can't debug without the frame pointer. + * tree.h (built_in_function): Add BUILT_IN_AGGREGATE_INCOMING_ADDRESS. + * varasm.c (make_function_rtl, make_decl_rtl): Add a prefix when + flag_prefix_function_name_usage is set. + (assemble_name): Strip the CHKR_PREFIX. + * alpha.c (alpha_builtin_saveregs): If -fcheck-memory-usage, + set rights of saved registers. + * clipper.c (clipper_builtin_saveregs): Likewise. + * m88k.c (m88k_builtin_saveregs): Likewise. + * pa.c (hppa_builtin_saveregs): Likewise. + * sparc.c (sparc_builtin_saveregs): Likewise. + +Sat Aug 2 08:01:12 1997 Richard Kenner + + * c-decl.c (grokdeclarator): Give error for `long double' and + refine text of some error messages. + + * alpha.h (FLOAT_VALUE_TYPE, INTIFY, FLOATIFY, FLOAT_ARG_TYPE): Define. + * i860.h (FLOAT_VALUE_TYPE): Fix typo; was FLOAT_TYPE_VALLUE. + + * calls.c (store_one_arg): Allow stack_slot to be SP in + ARGS_GROW_DOWNWARD case. + + * c-decl.c (parmlist_tags_warning): Only suppress warning on + union if anonymous. + + * libgcc2.c (_trampoline): Rework last change; both getpagesize + and mprotect are in cygwin32. + + * reload1.c (reload): Add IN_ADDR to IN_ADDR_ADDR when computing + needs since they conflict. + + * print-rtl.c (indent): Move to file level; was static in print_rtx. + (print_inline_rtx): New function. + * reload.c (debug_reload): Rework to make output more compact. + + * dwarfout.c (output_compile_unit_die): Add support for Pascal. + * dwarf2out.c (gen_compile_unit_die): Likewise. + + * c-typeck.c (lvalue_p, case BIND_EXPR, RTL_EXPR): Return 1 if array. + + * Makefile.in (OBJC_OBJC): Delete from here. + + * varasm.c (compare_constant_1, case STRING_CST): Compare TYPE_MODE. + (record_constant_1, case STRING_CST): Record TYPE_MODE. + + * tree.c (contains_this_placeholder_p): Delete. + (contains_placeholder_p): Now contains code from above function. + (contains_placeholder_p, case 'r'): Don't look at offset info. + * expr.c (expand_expr, case PLACEHOLDER_EXPR): Find innermost + matching and don't check contains_placeholder_p. + +Fri Aug 1 17:15:07 1997 Per Bothner + + * objc/objc-act.c (lang_init): Don't check_newline #if USE_CPPLIB. + * c-lex.c (lang_init): Remove (recently moved here). + * c-lang.c (lang_init): Restore, but add #if !USE_CPPLIB. + +Fri Aug 1 11:26:45 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (pa_reorg): Explode ADDR_DIFF_VEC insns too. + +Thu Jul 31 19:37:22 1997 Ian Lance Taylor + + * libgcc2.c (getpagesize): Don't compile if __CYGWIN32__. + +Thu Jul 31 16:04:42 1997 Stan Cox + + * i386.c (output_to_reg, output_fix_trunc): Use scratch memory, + if available, instead of dynamically extending the stack. + (put_condition_code, print_operand): Added reverse_cc to reverse the + comparison when $ah is accessed directly instead of using eflags + + * i386.md (*trunc*): Use scratch memory for output_fix_trunc. + (movsicc_1, movhicc_1) Change alternative 3 to: + jCC L1; mov; jmp L2; L1:mov; L2: + (movsfcc, movdfcc, movxfcc): Force constant operands to memory. + (movsfcc_1, movdfcc_1, movxfcc_1): Change alternative 3 as above. + +Thu Jul 31 16:04:42 1997 Jason Merrill + + * i386.h (MAX_FIXED_MODE_SIZE): Define. + +Thu Jul 31 16:04:42 1997 Robert Lipe + + * i386/sco5.h (SWITCHES_NEED_SPACES) Define. + Required by the COFF (but not ELF) linker. + +Wed Jul 30 15:03:52 1997 Per Bothner + + * demangle.h (DMGL_JAVA): New option to request Java demangling. + * cplus-dem.c: Various changes to produce Java output when passed + DMGL_JAVA. Thus "::" becomes "." and "JArray" becomes "Foo[]". + (main): Support --java and -j flags to set DMGL_JAVA. + +Wed Jul 30 08:56:08 1997 Philip Blundell + + * configure.in (arm-*-*): Replace with arm-*-aout. + * arm/aout.h (SET_ASM_OP): Define by default. + * arm/riscix.h (SET_ASM_OP: Undefine. + * arm.h (CPP_SPEC): Add %(subtarget_cpp_spec). + (SUBTARGET_CPP_SPEC): New macro. + * arm/linux.h: Include aout.h rather than arm.h directly. + (TARGET_CPU_DEFAULT): Define. + ({ASM,CPP}_SPEC): Remove. + * arm/t-linux (MULTILIB_OPTIONS): Use -mapcs-NN instead of -mN. + (LIB1ASMSRC): Use generic ARM version. + (CROSS_LIBGCC1): Define. + * arm/lib1funcs-linux.asm: Remove. + +Tue Jul 29 17:57:47 1997 Per Bothner + + * Add hooks for using autconf-style Makefile.in in language subdirs. + * configure.in (all_outputs, oldstyle_subdirs): New variables. + Pass all_outputs to AC_OUTPUT. + * configure.lang: Only iterate over oldstyle_subdirs. + + * Patches to use cpplib with cc1 #if USE_CPPLIB. + * configure.in (--enable-c-cpplib): New option. + (extra_c_flags, extra_c_objs): New variables. + * Makefile.in (EXTRA_C_OBJS): New variable. + (INTERNAL_CFLAGS): Add @extra_c_flags@. + (C_OBJS): Add $(EXTRA_C_OBJS). + * c-lex.c (generally): Replace getc and ungetc by macros GETC and + UNGETC. Avoid explicit references to finput. + (yy_get_token): New function, that calls cpp_get_token. + (init_parse): New function - calls init_lex. + (finish_parse): New function (called by compile_file). + (GET_DIRECTIVE_LINE): New macro wrapper replaces get_directive_line. + (lang_init): Don't check_newline - already know main_input_filename. + (handle_sysv_pragma): Remove FILE* parameter. + * toplev.c (finput): Remove #if USE_CPPLIB. + (compile_file): #if USE_CPPLIB don't open input file here, + do it in cpp_start_read. Call init_parse instead of init_lex. + At end, call finish_parse instead of fclose(finput). + +Mon Jul 28 15:48:29 1997 Brendan Kehoe + + * integrate.c (expand_inline_function): Use xmalloc instead of + alloca for the LABEL_MAP. + (save_for_inline_copying): Likewise. + +Mon Jul 28 11:22:16 1997 Jason Merrill + + * toplev.c (compile_file): Also emit any deferred TREE_PUBLIC inlines. + (rest_of_compilation): Use decl_printable_name instead of DECL_NAME + to identify functions in the RTL dump files. + + * dwarf2out.c (add_location_or_const_value_attribute): + leaf_renumber_regs_insn. Also eliminate_regs here. + (add_AT_location_description): Not here. Don't emit anything + for a variable that has been optimized away. + (add_const_value_attribute): Likewise. + + * dwarfout.c (location_or_const_value_attribute): + leaf_renumber_regs_insn. Also eliminate_regs here. + (location_attribute): Not here. + + * stor-layout.c (layout_type): Fix ancient code to match ancient + comment. Use mode of field for one-field structs. + +Sun Jul 27 12:09:02 1997 Richard Kenner + + * function.c (put_var_into_stack, trampoline_address): Treat + inline_function_decl like current_function_decl. + * expr.c (expand_expr, case LABEL_DECL): Likewise. + (expand_expr, case SAVE_EXPR): Handle top-level SAVE_EXPR by + moving into current function; abort if in incorrect context. + * fold-const.c (fold_range_test, fold): Avoid making SAVE_EXPR + if at top level. + + * dwarfout.c (ASM_OUTPUT_SOURCE_FILENAME): Delete default value. + + * alpha.h (TARGET_SWITCHES): Add -mno-byte. + + * expr.c (get_inner_unaligned_p): Deleted. + (expand_assignment): Remove special-case of constant array. + (expand_expr, case ARRAY_REF): Likewise, and clean up remaining code. + + * explow.c (probe_stack_range): Do probing with loop if more + than a small number. + +Fri Jul 25 15:42:34 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * configure.in: Finish fixing calculation if default thread + support is enabled. + +Fri Jul 25 15:30:09 1997 Doug Evans + + * Makefile.in (native): Depend on config.h. + (gcc.o): Depend on Makefile, not config.status. + +Fri Jul 25 10:56:50 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (pa_reorg): If TARGET_BIG_SWITCH, then do not explode + ADDR_VEC insns. Slightly rework code which explodes ADDR_VEC + insns. + * pa.h (TARGET_BIG_SWITCH): Define. + (TARGET_SWITCHES): Add "big-switch" and "no-big-switch". + (CASE_VECTOR_MODE): Use TI or DI depending on TARGET_BIG_SWITCH. + (CASE_DROPS_THROUGH): Remove definition. + (ASM_OUTPUT_ADDR_VEC_ELT): Rewrite to handle TARGET_BIG_SWITCH. + (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. + * pa.md (casesi): Rework to avoid some potential long branch + problems (also makes generated code faster!). Handle + TARGET_BIG_SWITCH. + (casesi0): Corresponding changes. + +Fri Jul 25 08:36:47 1997 Richard Kenner + + * calls.c: (expand_call): If -fstack-check and temp needed + for arg is too large, use alloca. + * expr.c (expand_expr, case MODIFY_EXPR): Don't preexpand calls + if LHS is an indirect via a constant pointer. + +Thu Jul 24 21:49:11 1997 Pat Rankin + + * bitmap.c (bitmap_operation): Reset CURRENT on deferred deletion. + +Wed Jul 23 23:52:14 1997 Chris Smith + + * convex.h (CHECK_FLOAT_VALUE): Fix OVERFLOW capitalization. + +Wed Jul 23 13:00:47 1997 Richard Earnshaw + + * configure.in (arm-*-netbsd*): Fix typo setting tmake_file. + +Wed Jul 23 06:39:35 1997 Richard Kenner + + * configure.in (alpha*): Put quotes around MASK_GAS. + +Tue Jul 22 15:24:45 1997 Brendan Kehoe + + * tree.c (array_type_nelts): Make sure the domain of TYPE is set + before we try to use it. + +Tue Jul 22 12:26:13 1997 Doug Evans + + * sparc.c (gen_v9_scc): Handle early clobber of result. + * sparc.md (seqdi_special): Don't clobber %xcc. + (snedi_special, seqdi_special_trunc, snedi_special_trunc): Likewise. + (snedi_zero, neg_snedi_zero, seqdi_zero, neg_seqdi_zero): Likewise. + (snedi_zero_trunc, seqdi_zero_trunc): Likewise. Renamed from ..._sp64. + (snedi_zero_trunc_sp32, seqdi_zero_trunc_sp32): Delete. + + * Makefile.in (Makefile): Pass xmake_file, tmake_file to + configure.frag + (distclean): Delete Make-host, Make-target. + * configure.in (host_overrides): Set to Make-host. + (dep_host_xmakefile): Loop over all elements in host_make_file. + (target_overrides): Set to Make-target. + (dep_tmake_file): Loop over all elements in tmake_file. + (configure.frag): Pass dep_host_xmake_file, dep_tmake_file. + * configure.frag: New arguments xmake_files, tmake_files. + Build Make-host, Make-target. + +Mon Jul 21 23:17:44 1997 Paul Eggert + + * objc/Make-lang.in, objc/Makefile.in: Comment out lines containing + just formfeeds. + +Mon Jul 21 14:05:46 1997 Doug Evans + + * Makefile.in (Makefile): Depend on config.status instead + of configure. + (config.status): Depend on configure. Run config.status --recheck + if out of date. + (cstamp-h.in): Use echo instead of touch. + + * reload1.c (reload_cse_mem_conflict_p): Restore handling of + (mem:BLK const0_rtx) meaning all memory is clobbered. + +Mon Jul 21 06:20:10 1997 Andreas Schwab + + * m68k.md (iorsi_zexthi_ashl16): Mark output operand as earlyclobber. + +Sun Jul 20 06:11:30 1997 Richard Kenner + + * configure.in (alpha*-*-*): Set cpu_type to alpha. + Change "alpha-" to "alpha*-" in all entries. + Set target_cpu_default for ev5 and ev56 systems. + Use symbolic names for target_cpu_default. + * alpha.c (override_options): Set default for alpha_cpu + from TARGET_CPU_DEFAULT. + * alpha.h (MASK_CPU_EV5): New macro. + + * tree.c (contains_placeholder_p): Call contains_this_placeholder_p. + (contains_this_placeholder_p): Renamed from contains_placeholder_p. + Added new arg, PL. + Rework to make more consistent, check more codes, and avoid + undefined fields. + * expr.c (expand_expr, case PLACEHOLDER_EXPR): Pick outermost + object in placeholder_list of right type without a PLACEHOLDER_EXPR. + +Sat Jul 19 18:00:01 1997 Richard Kenner + + * alpha.c (override_options): Allow processor of ev56 or 21164a. + (input_operand, case MEM): Correct test involving TARGET_BYTE_OPS. + * alpha.h (SECONDARY_{IN,OUT}PUT_RELOAD_CLASS): Don't need for + QImode or HImode if TARGET_BYTE_OPS. + (ASM_FILE_START): Write a .arch directive. + (STACK_CHECK_BUILTIN): New macro. + * alpha.md ({zero_,}extend[qh]i[dsh]i2): Rework TARGET_BYTE_OPS cases. + (mov[hq]i): Likewise. + (extend[qh]i[hsd]i2x): Add missing cases and fix typo in constraint. + (reload_{in,out}[qh]i): Disable for TARGET_BYTE_OPS. + +Fri Jul 18 23:24:57 1997 Jason Merrill + + * varasm.c (make_decl_rtl): Don't use ASM_FORMAT_PRIVATE_NAME for + local decls with TREE_PUBLIC set. + (bc_make_decl_rtl): Likewise. + +Fri Jul 18 22:16:28 1997 Doug Evans + + * configure.in: Invoke AC_CONFIG_HEADER. + Check for string.h, strings.h, stdlib.h, time.h, unistd.h. + Check for whether malloc/realloc/free need to be declared. + (links): Rename config.h to config2.h. + (AC_OUTPUT): Create cstamp-h. + * Makefile.in (config.in,cstamp-h.in): Add rules for. + (config.h,cstamp-h): Add rules for. + (distclean): Delete config2.h, cstamp-h. + (ALL_CFLAGS): Add @DEFS@. + * aclocal.m4, acconfig.h: New files. + + * Makefile.in (distclean): Delete Make-host, Make-target. + * configure.in (host_overrides): Set to host_xmake_file, don't create + Make-host. + (target_overrides): Set to tmake_file, don't create Make-target. + (language subdir support): Keep together. + + * c-decl.c (duplicate_decls): Set DECL_ABSTRACT_ORIGIN to olddecl + if inline function and not new definition. + + * configure.in: Don't loop trying to configure language subdirs. + Don't pass to configure.lang variables it doesn't use. + * configure.lang: Delete top level directory from loop. + Delete code not useful for language subdirs. + +Fri Jul 18 08:12:53 1997 Bernd Schmidt + + * toplev.c (rest_of_compilation): Call reload_cse_regs here. + * reload1.c (reload): Don't call it here. + (reload_cse_mem_conflict_p): Remove MEM_OFFSET and MEM_MODE args. + (reload_cse_mem_conflict_p, case MEM): Call anti_dependence. + (reload_cse_invalidate_mem): Update call to reload_cse_mem_conflict_p. + (reload_cse_regs): No longer static. + Call init_alias_analysis. + Ignore CLOBBER in a PARALLEL. + +Fri Jul 18 06:44:22 1997 Andreas Schwab + + * objc/Make-lang.in (objc-headers): Fix command for the new build + directory layout, don't pass srcdir variable. + * objc/Makefile.in (copy-headers): Use $(srcdir) from this + makefile, not the parent's. + +Thu Jul 17 16:03:03 1997 Doug Evans + + * configure.lang (EXTRA_HEADERS,EXTRA_PASSES,EXTRA_PARTS): Delete. + (EXTRA_PROGRAMS,EXTRA_OBJS,EXTRA_GCC_OBJS,MD_DEPS): Delete. + (version) Delete duplicate entry. + * configure.in (merged_frags): Delete unused variable. + (extra_headers_list): Move setting outside of subdir loop. + (extra_headers,extra_passes): Don't pass to configure.lang. + (extra_programs,extra_parts,extra_objs): Likewise. + (host_extra_gcc_objs,gxx_include_dir,md_cppflags): Likewise. + +Thu Jul 17 07:00:43 1997 Richard Kenner + + * expr.h (STACK_CHECK_*): Provide default values. + (probe_stack_range): New declaration. + * flags.h (flag_stack_check): Likewise. + * explow.c (allocate_dynamic_stack_space): Call probe_stack_range. + (emit_stack_probe, probe_stack_range): New functions. + * function.c (expand_function_end): If function is non-leaf and stack + checking is requested, emit needed probes. + * reload1.c (reload): If checking stack, verify frame small enough. + * stmt.c (expand_decl): If stack checking, use alloca for large vars. + * toplev.c (flag_stack_check): New variable. + (f_options): Add "stack-check". + + * reorg.c (mark_target_live_regs): Pass FIRST_PSEUDO_REGISTER to + call to EXECUTE_IF_SET_IN_REG_SET. + +Wed Jul 16 14:51:00 1997 Jason Merrill + + * i960.h (ASM_OUTPUT_ALIGNED_BSS): Define. + (ASM_OUTPUT_ALIGNED_LOCAL): Use standard method to convert ALIGN + to power-of-two of bytes. + + * sparc.h (ASM_OUTPUT_ALIGNED_BSS): Define. + * sparc/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Undef before definition. + +Wed Jul 16 14:34:09 1997 Klaus Espenlaub (kespenla@hydra.informatik.uni-ulm.de) + + * calls.c (emit_library_call_value): Initialize all argvec elements. + +Wed Jul 16 14:31:39 1997 Richard Kenner + + * global.c (global_conflicts): Pass FIRST_PSEUDO_REGISTER to + call to EXECUTE_IF_SET_IN_REG_SET. + +Wed Jul 16 10:57:03 1997 Richard Earnshaw (rearnsha@cambridge.arm.com) + + * From Rob Black (r.black@ic.ac.uk) and Mark Brinicombe + (amb@physig.ph.kcl.ac.uk): + * configure.in (arm-*-netbsd*): New configuration. + * arm/netbsd.h, arm/t-netbsd, arm/xm-netbsd.h: New files. + +Wed Jul 16 10:57:03 1997 Richard Earnshaw (rearnsha@cambridge.arm.com) + + * arm.c (tune_flags): New variable. + (target_{cpu,fpe}_name): Delete. + (arm_fpu_arch): New variable. + (arm_select): Also allow -march=... to configure just the + architecture. + (all_procs): Allow armv{2,2a,3,3m,4,4t} for use with -march=. + (arm_override_options): Handle -march=, but don't let -mcpu= + and -mtune= match the architecture names, since we can only + tune for an implementation. Rework selection of tuning options + for floating point. + (use_return_insn): Support interworking with Thumb code. + (arm_rtx_costs): Rework multiply costs so that cost is based on + the tune, not the architecture. + (f_register_operand): New function. + (output_return_instruction): Support interworking with Thumb code. + (output_func_epilogue): Support interworking with Thumb code. + Remove redundant calculation of code_size. Use floating-point + load-multiples if permitted. + (emit_sfm): New function. + (arm_expand_prologue): Use floating-point store-multiples if + permitted. + + * arm.h (CPP_CPU_ARCH_SPEC): Handle -march=... + (TARGET_OPTIONS): Add arch= and fp=. Delete fpe=. + (enum processor_type): Add PROCESSOR_NONE, for use in all_procs table. + (FP_DEFAULT): Default floating point architecture for generic + back-end. + (PREDICATE_CODES): Add f_register_operand. + + * arm.md (*push_fp_multi): New pattern. + + +Tue Jul 15 22:08:47 1997 Jim Wilson + + * Makefile.in (exeext): Set to build_exeext not exeext. + * configure.in (exeext): Delete redundant set and AC_SUBST call. + Change remaining AC_SUBST to use build_exeext instead of exeext. + +Tue Jul 15 15:48:25 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * configure.in: Fix calculation if default thread support is enabled. + +Tue Jul 15 13:38:46 1997 Mike Meissner + + * rtl.h (replace_regs): Declare. + +Mon Jul 14 16:18:19 1997 Jason Merrill + + * i960.h (ASM_OUTPUT_MI_THUNK): Define. + + * dwarf2out.c (gen_subprogram_die): Remove unreachable and redundant + code. + +Mon Jul 14 14:22:45 1997 Jeffrey A Law (law@cygnus.com) + + * calls.c (emit_library_call): Use right index into argvec array + when iterating over arguments which need to be pushed on the stack. + (emit_library_call_value): Likewise. + +Mon Jul 14 08:17:41 1997 Richard Kenner + + * gcc.c (convert_filename): Fix typo. + +Mon Jul 14 08:10:12 1997 Andreas Schwab + + * configure.in: Clear headers and lib2funcs before re-reading + config-lang.in. + + * m68k/linux.h (LINK_SPEC): Fix last change. + +Mon Jul 14 08:03:38 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * configure.in (sparc-*-linux-gnu{*,libc1*}): Add sparc/t-linux. + * sparc/t-linux: New file. + + * alpha/elf.h (LINK_SPEC): Fix typo. + * configure.in (alpha-*-linux-gnu*): Set tmake_file. + * alpha/t-linux: New file. + +Mon Jul 14 07:41:37 1997 Philippe De Muyter + + * m68k.c (output_{and,ior,xor}si3): New functions from patterns bodies. + * m68k.h (output_{and,ior,xor}si3): New extern declarations. + * m68k.md (adddi3, subdi3): Allow constant operand. + (anddi3, iordi3, xordi3): New patterns. + ({and,ior,xor}si3_internal): Use corresponding output_???si3 function. + +Mon Jul 14 07:33:11 1997 Fila Kolodny + + * configure.in (*-*-gnu*): Add crt{begin,end}S.o to extra_parts. + +Mon Jul 14 07:26:36 1997 Craig Burley + + * varasm.c (assemble_variable): If low part of size + doesn't fit in an int, variable is too large. + +Mon Jul 14 06:51:37 1997 Mike Meissner + + * bitmap.{h,c}: New files. + * Makefile.in (OBJS): Add bitmap.o. + (BASIC_BLOCK_H): New make variable for basic-block.h, bitmap.h. + ({flow,combine,regclass,local-alloc,reload1,reorg,sched}.o): Use + BASIC_BLOCK_H variable instead of basic-block.h. + * basic-block.h (*REG_SET): Delete old implementation; use bitmap.h. + (regset_{size,bytes}): Delete. + (regs_live_at_setjmp): Declare. + (EXECUTE_IF_SET_AND_RESET_IN_REG_SET): Delete. + * flow.c (init_regset_vector): Make global; don't take basic block + times # of pseduos as argument. + (life_analysis): Change all init_regset_vector calls. + Use free_regset_vector to release arrays only flow uses at end. + (allocate_for_life_analysis): Change init_regset_vector call. + Don't set regset_{size,bytes}. + (free_regset_vector): Call FREE_REG_SET to release any + memory allocated by each vector. + (propagate_block): Call FREE_REG_SET on dead/live. + (mark_used_regs): Don't use REGSET_ELT_TYPE anymore. + * output.h (allocate_for_life_analysis): Add declaration. + (regno_uninitialized, regno_clobbered_at_setjmp): Likewise. + (dump_flow_info, flow_analysis): Likewise. + * regclass.c (init_reg_sets): Invoke INIT_ONCE_REG_SET. + (allocate_reg_info): Invoke MAX_REGNO_REG_SET. + (regset_release_memory): Free basic_block_live_at_start storage. + * reorg.c (mark_target_live_regs): Delete unused variables. + * sched.c (schedule_block): Free space associated with + reg_pending_sets and old_live_regs. + (schedule_insns): Free bb_{dead,live}_regs on first pass. + (sched_analyze_insn): Use EXECUTE_IF_SET_IN_REG_SET and then clear. + * toplev.c (rest_of_compilation): Call regset_release_memory. + +Mon Jul 14 00:14:13 1997 Jason Merrill + + * toplev.c (main): Prefer DWARF 2 or stabs with -ggdb. + * ns32k/tek6000.h (PREFERRED_DEBUGGING_TYPE): DBX_DEBUG. + * alpha.h (PREFERRED_DEBUGGING_TYPE): SDB_DEBUG. + * mips.h (PREFERRED_DEBUGGING_TYPE): SDB_DEBUG. + +Sun Jul 13 15:11:08 1997 Richard Kenner + + * stupid.c (stupid_mark_refs): If setting reg set only in this + insn and not referenced, make REG_UNUSED note. + +Sun Jul 13 14:03:19 1997 Michael Meissner + + * gcc.c (process_command): If -save-temps and -pipe were specified + together, don't do -pipe. + +Sun Jul 13 12:27:03 1997 Doug Evans + + * gcc.c (main): Handle blank in version_string when comparing + with compiler_version. + +Sat Jul 12 01:53:55 1997 Jason Merrill + + * sparc.c (output_function_prologue): Fix offset from CFA. + (sparc_flat_output_function_prologue): Likewise. + +Fri Jul 11 09:49:15 1997 Jeffrey A Law (law@cygnus.com) + + * mips.c (epilogue_reg_mentioned_p): Delete unused function. + (mips_epilogue_delay_slots): Likewise. + (function_epilogue): Greatly simplify. + (mips_expand_epilogue): If we have a null prologue/epilogue, + then use a normal return insn. Emit blockage insns before + stack pointer adjustments. + (mips_can_use_return_insn): Renamed from simple_epilogue_p. All + callers changed. Do not use return insns if $31 is live in the + function or if generating profiling information. + * mips.h (DELAY_SLOTS_FOR_EPILOGUE): Delete. + (ELIGIBLE_FOR_EPILOGUE_DELAY): Likewise. + * mips.md (return): Remove expander and change the pattern to + look like a standard "return" insn. + (return_internal): Show use of $31 explictly. + (epilogue expander): Enable. + +Thu Jul 10 13:04:53 1997 Doug Evans + + * cccp.c (INO_T_EQ): Return 0 for MSDOS. + + * Makefile.in (CC): Use autoconf value. + +Tue Jul 8 18:08:00 1997 Jim Wilson + + * dwarf2out.c (gen_subprogram_die): When handling declarations, test + DECL_CONTEXT not decl_class_context before equate_decl_number_to_die. + +Tue Jul 8 16:47:13 1997 Michael Meissner + + * rs6000.md (movsi define_split): Use unsigned HOST_WIDE_INT, + not unsigned. + +Sat Jul 7 00:01:41 1997 Jim Meyering + + * i386/t-sol2 (crt[1in].o): Also depend on $(GCC_PASSES). + +Fri Jul 4 11:45:39 1997 Jason Merrill + + * dwarf2out.c (DWARF_CIE_HEADER_SIZE, DWARF_FDE_HEADER_SIZE, + size_of_cfi, size_of_fde, calc_fde_sizes, next_fde_offset, + cie_size): Lose. + (ASM_OUTPUT_DWARF_STRING): Move earlier. + (INCOMING_FRAME_SP_OFFSET): Provide default. + (initial_return_save): Adjust for CFA offset. + (dwarf2out_frame_debug): Lookup initial CFA offset when setting up. + (output_call_frame_info): Use label subtraction for length fields. + Add pointer to exception region information in for_eh case. + (dwarf2out_do_frame): New fn. + (dwarf2out_frame_init): Use INCOMING_FRAME_SP_OFFSET. + (dwarf2out_frame_finish): Don't bother emitting .debug_frame for + non-Irix targets. Just emit .eh_frame. + (output_die): Refer to an FDE with label subtraction. + * i386.h (INCOMING_FRAME_SP_OFFSET): Define. + * defaults.h (DWARF2_UNWIND_INFO): Define if + INCOMING_RETURN_ADDR_RTX is provided. + * final.c (final): Don't call dwarf2out_frame_debug unless we are + doing dwarf 2. + +Thu Jul 3 17:37:52 1997 Jim Wilson + + * fp-bit.c (unpack_d): Check fraction not sign to distinquish QNaN. + +Wed Jul 2 09:48:03 1997 Michael Meissner + + * loop.c (strength_reduce): Make sure register does not exceed the + table size when looking up the last UID. + +Wed Jul 2 07:47:44 1997 Nick Burrett + + * genoutput.c (process_template): Place increment expression + outside of putchar function call. + +Wed Jul 2 06:56:52 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * sparc/linux.h (LIBGCC_SPEC): Removed. + (CC1_SPEC): Add %{profile:-p}. + ({CPP,LIB,LINK}_SPEC): Choose glibc 1 or 2 depending on USE_GNULIBC_1. + * configure.in (sparc-*-linux-gnulibc1*): New configuration. + + * configure.in (powerpc-*-linuxgnu*): Default thread_file is posix. + Set xmake_file to x-linux. Add extra_parts. + * rs6000/linux.h (LINK_SPEC): Defined. + + * m68k/linux.h (LINK_SPEC): Pass -shared for -shared. + ({CPP,LINK}_SPEC): Choose for glibc 1 or 2 depending on USE_GNULIBC_1. + * configure.in (m68k-*-linux-gnu*): Default thread_file is `posix'. + (m68k-*-linux-gnulibc1): New configuration. + + * alpha/elf.h (LINK_SPEC): Change ld-gnu.so.1 to ld-linux.so.2. + * configure.in (alpha-*-linux-gnu*): Default thread_file is `posix'. + +Wed Jul 2 06:12:37 1997 Richard Kenner + + * alpha.md (divsi3, modsi3, udivsi3): Comment out. + (extendsfsd2_no_tp): Add alternative with output in MEM, input in REG. + + * configure.in (*-linux*): Add "-gnu" to names to match. + + * libgcc2.c (_trampoline): Add stdcall attribute to VirtualProtect + on i386. + + * objc/objc.gperf: Renamed from gperf. + +Wed Jul 2 05:42:19 1997 Andreas Schwab + + * objc/Make-lang.in ($(srcdir)/objc/objc-parse.c): Fix command + to use the right file names. + +Tue Jul 1 23:25:42 1997 Richard Kenner + + * reorg.c (redundant_insn): If INSN or possible match has REG_UNUSED + note, don't have match. + +Tue Jul 1 18:36:24 1997 Doug Evans + + * mips.c (mips_output_external): Don't output .extern's for + variables in user specified sections unless they're .sbss/.sdata. + +Tue Jul 1 18:30:26 1997 Jim Wilson + + * cse.c (find_best_addr): Add missing rtx_cost arguments. + + * fp-bit.c (float_to_usi): Move code for negative numbers before code + for infinity. Modify infinty code to only handle positive infinities. + +Tue Jul 1 11:16:41 1997 Robert Lipe + + * fixinc.sco: Restore pwd 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 + + * rs6000.md ({add,ior,xor}si3): Change to use define_expand wrapper + and split add/ior/xor of large constants early. + (andsi3): Remove 6/29 code to do and of large constants. + (nor, nand, eqv, maskir): Add names to all logical define_insns. + +Tue Jul 1 09:03:35 1997 Jeffrey A Law (law@cygnus.com) + + * h8300.h (BIGGEST_FIELD_ALIGNMENT): Remove definition. + * mips.h (BIGGEST_FIELD_ALIGNMENT): Likewise. + +Mon Jun 30 14:58:00 1997 Jeffrey A Law (law@cygnus.com) + + * sh.c (sh_expand_epilogue): Emit blockage insn before cutting + back stack. + +Sun Jun 29 11:27:07 1997 Michael Meissner + + * rs6000.h (TARGET_FLAGS): Add -m{,no-}update to suppress + creating load/store with update instructions, and also + -m{,no-}fused-madd to suppress the generation of fused add and + multiply instructions. Move debug flags to TARGET_OPTIONS. + (GO_IF_LEGITIMATE_ADDRESS): Don't allow PRE_{INC,DEC} if -mno-update. + (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto. + (rs6000_debug_{name,stack,arg}): Add declarations. + (toc_initialized): Likewise. + (got_no_const_operand): Likewise. + (PREDICATE_CODES): Add got_no_const_operand. + (toc_section): Make toc_initialized a global. + (RTX_COSTS): Set appropriate costs for add, logical operators that + are really two instructions. + + * rs6000.c (rs6000_debug_{name,stack,arg}): Add definitions. + (rs6000_override_options): Process debug flags. + (toc_initialized): Global to say toc initialized. + (small_data_operand): Use #if TARGET_ELF, not #ifdef TARGET_SDATA. + (rs6000_init_expanders): Likewise. + (SMALL_DATA_RELOC): Likewise. + (got_no_const_operand): Recognize SYMBOL_REF and LABEL_REF. + (rs6000_makes_calls): System V profiling doesn't count as a call. + (rs6000_stack_info): Likewise. + (rs6000_output_load_toc_table): Take register number argument to + determine register to load. Generate correct code if more than + one toc table is done in System V due to profiling or non-local + gotos. If System V toc is not initialized, initialize it now. + (rs6000_allocate_stack_space): Move code from output_prolog to + allocate stack space. Take -mno-update into account. + (output_prolog): Call rs6000_allocate_stack_space. Only set + rs6000_pic_func_labelno if not profiling. + (output_function_profiler): Implement System V profiling. + (and_operand): Don't call reg_or_short_operand. + (rs6000_finalize_pic): If not optimizing, insert a USE of the GOT + register as the last insn. + + * rs6000.md (load/store update): Take -mno-update into account. + If -msoft-float, support SF load/store with update to GPR regs. + (allocate_stack): Take -mno-update into account. + (add/subtract + multiply instructions): Take -mno-fused-madd into + account. + (nonlocal_goto_receiver): Specify register # to load. + ({add,and,ior,xor}si3): Recognize operation done with full 32 bit + constant, splitting latter if need be. + (andsi3 define_split): Fix up splitting andsi3 of large constant. + ({ior,xor}si3 define_split): Use GEN_INT to create integer rtx + values. + (movsi_got{,_internal}): Split the load of a CONST into load of + the SYMBOL_REF/LABEL_REF and an add. + (movsi): Know that addsi3 can handle large values now for NT. + + * sysv4.h (TARGET_SDATA): Remove explicit bit for -msdata. + (SUBTARGET_OVERRIDE_OPTIONS): Likewise. + (ASM_OUTPUT_ALIGNED_LOCAL): Likewise. + (SUBTARGET_SWITCHES): Indicate -m{,no-}sdata doesn't set any flags. + (ASM_SPEC): Only pass -m{,no-}reg-names if assembling .s/.S files. + (CC1_SPEC): If -msdata, invoke compiler with -msdata=default. + (PROFILE_BEFORE_PROLOGUE): Likewise. + (RS6000_MCOUNT): Define as "_mcount". + (toc_section): Make toc_initialized a global. + +Fri Jun 27 19:01:11 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * config/t-linux-gnulibc1: New file. + * configure.in (i[3456]86-*-linux*): Default thread_file is `posix'. + (i[3456]86-*-linux*gnulibc1): New case. + * config/linux.h (LIB_SPEC): Choose for glibc 1 or 2 depending + on USE_GNULIBC_1. + * i386/linux.h (CPP_SPEC, LINK_SPEC): Likewise. + +Fri Jun 27 19:00:52 1997 Ralf Baechle + + * config/linux.h (PREFERRED_DEBUGGING_TYPE): Undefine before define. + +Fri Jun 27 18:35:04 1997 Alan Modra + + * configure.in: Clean up Make-{host,target,hooks} in all + subdirs, not just '.'. + * Makefile.in (distclean): Delete */Make-{host,target,lang,hooks}. + +Fri Jun 27 18:27:11 1997 Fila Kolodny + + * config/xm-gnu.h (fcntl.h): Only include if not building libgcc.a. + +Fri Jun 27 18:17:44 1997 Doug Evans + + * configure.frag: Rewrite. + + * objc/Make-lang.in (OBJC_CCOMMON): Object files don't go in srcdir. + (OBJC_OBJS): Likewise. + (OBJC_O): Likewise. + (objc-parse.o, objc-act.o): Fix rules. + (objc/libobjc files): Fix rules. + +Fri Jun 27 13:23:38 1997 Andrew Cagney + + * fp-bit.c (float_to_si): Correct return value when Inf. + +Fri Jun 27 10:47:09 1997 Scott Christley + + * Makefile.in (DLLTOOL): Define.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 + + * stor-layout.c (layout_record, PCC_BITFIELD_TYPE_MATTERS): + Round up when calculating possible end address. + +Wed Jun 25 19:54:29 1997 Jim Wilson + + * unroll.c (final_giv_value): Verify that bl->initial_value is + invariant before trying to use it. + +Wed Jun 25 18:13:05 1997 Michael Meissner + + * rs6000/sysv4.h (WCHAR_TYPE{,_SIZE}): Make wchar_t long as per + ABI spec. + +Wed Jun 25 16:56:16 1997 Jason Merrill + + * sparc.h (INCOMING_RETURN_ADDR_RTX): Define. + (DBX_REGISTER_NUMBER): Fix frame pointer regno for -mflat. + * sol2.h (DBX_REGISTER_NUMBER): Likewise. + * sparc.c (save_regs): Emit dwarf2 frame debug info. + (output_function_prologue, sparc_flat_save_restore, + sparc_flat_output_function_prologue): Likewise. + + * dwarf2.h (enum dwarf_call_frame_info): Add DW_CFA_GNU_window_save. + * dwarf2out.c (dwarf_cfi_name, output_cfi): Support it. + (dwarf2out_cfi_label): Make non-static. + (initial_return_save): Support PLUS. + (dwarf2out_window_save, dwarf2out_return_save, + dwarf2out_return_reg): New fns. + + * dwarf2out.c (SECTION_FORMAT): Use PUSHSECTION_FORMAT, if defined. + (DEBUG_INFO_SECTION): Rename from DEBUG_SECTION. + (DEBUG_LINE_SECTION): Rename from LINE_SECTION. + * mips/iris6.h: Likewise. + +Wed Jun 25 16:25:41 1997 Scott Christley + + * Makefile.in (GCC_PASSES): Don't define with $(exeext). + * configure.in ({cc,stage_prefix}_set_by_configure): Eliminate extra + comma and don't pass value to configure.lang. + * objc/Make-lang.in (objc-runtime): Add objc-headers. + + * configure.in: Execute configure.frag in a shell. + + * configure.in (cross_overrides, build_overrides): Default to + /dev/null to help platforms where sed cannot handle empty filenames. + + * Reorganize thread implementation to make a clearly defined + front-end/back-end interface. + * objc/thr-{decosf1,irix,mach,os2,posix,pthreads,single}.c: Completely + rework according to new interface. + * objc/thr-{solaris,win32}.c: Likewise. + * objc/thr.c: Likewise. + * objc/thr.h: Define front-end/back-end interface functions and + structures. + +Wed Jun 25 16:14:10 1997 Ovidiu Predescu + + * Complete implementation of +load. + * objc/init.c (objc_send_load): New function. + (objc_class_tree): New structure. + (create_tree_of_subclasses_inherited_from): New function. + (__objc_tree_insert_class): New function. + (objc_tree_insert_class): New function. + (objc_preorder_traverse): New function. + (objc_postorder_traverse): New function. + (__objc_tree_print): New function. + (__objc_destroy_class_tree_node): New function. + (class_is_subclass_of_class): New function. + (__objc_exec_class): Allocate class tree list and load hash table. + (__objc_send_message_in_list): Rewrite using hash table. + (__objc_send_load): Remove calls to _objc_load_callback. + (objc_send_load): Make static. Create Tree of classes resembling + class hierarchy for all modules. Call __objc_send_load on all of + the modules in __objc_module_list. + (__objc_create_classes_tree): New function. + + * objc/encoding.h (method_get_sizeof_arguments): Fix typo. + * objc/objc-api.h (OBJC_ERR_BAD_STATE): New error code. + On NeXT redefine object_copy and object_dispose to avoid + a conflict with those defined in system library. + * objc/selector.c (__objc_register_instance_methods_to_class): New + function. + * objc/runtime.h: Likewise. Add missing function prototypes. + +Wed Jun 25 15:09:01 1997 Richard Kenner + + * Makefile.in (Makefile): Execute configure.frag from srcdir. + + * Makefile.in (configure): Target is $(srcdir)/configure. + +Tue Jun 24 15:18:14 1997 Jim Wilson + + * m68k.h (LIMIT_RELOAD_CLASS): Define. + + * recog.c (constrain_operands): When checking earlyclobbers, use + operands_match_p instead of rtx_equal_p. + + * dwarfout.c (field_byte_offset): Check for object_offset_in_bits + greater than bitpos_int and recompute object_offset_in_bytes if true. + + * mips.md (movdi_internal): Add x/J alternative. + (movdi_internal2): Add x/J alternative; change a/I to a/J. + (movsi_internal1, movsi_internal2): Change x/I alternative to x/J. + +Tue Jun 24 08:49:56 1997 Jeffrey A Law (law@cygnus.com) + + * pa.h (ASM_OUTPUT_SECTION_NAME): Fix typo. + +Mon Jun 23 22:48:00 1997 Jim Wilson + + * unroll.c (find_splittable_givs): Set splittable_regs_updates to + biv_count for reduced givs. + +Mon Jun 23 10:51:53 1997 Jeffrey A Law (law@cygnus.com) + + * mn10200.c, mn10200.h, mn10200.md: New files for mn10200 port. + * lib1funcs.asm, divmod.c, udivmod.c, udivmodsi4.c: Likewise. + * t-mn10200, xm-mn10200.h, va-mn10200.h: Likewise. + * Makefile.in (USER_H): Add va-mn10200.h. + * varargs.h, stdarg.h: Include va-mn10200.h. + * configure.in (mn10200-*-*): New target. + +Sun Jun 22 06:47:19 1997 Andreas Schwab + + * combine.c (force_to_mode): Don't do anything for ASM_OPERANDS insn. + +Sun Jun 22 06:29:28 1997 J. Kean Johnston + + * ginclude/stdarg.h: Protect va_list definition from SCO headers. + * ginclude/varargs.h: Likewise. + +Sat Jun 21 20:56:23 1997 Scott Christley + + * Make ObjC a front-end language. + * Makefile.in (LANGUAGES, COMPILERS, .PHONY, stmp-int-hdrs): Remove + specific references to ObjC compiler and source files. + ({mostly,dist,maintainer,}clean, install-normal): Likewise + (OBJC_OBJS, OBJC, OBJECTIVE-C, cc1obj, objc-runtime): Rules deleted. + (libobjc.a, sublibobjc.a, objc-parse.{o, c, y}): Rules deleted. + (objc-headers, install-libobjc): Rules deleted. + * objc/Make-lang.in: New file; from rules deleted above. + * objc/config-lang.in: New file. + * objc/Makefile.in: Changes to support ObjC as a front-end language; + renamed from Makefile.in. + * objc-act.{c,h}, objc-parse.{c,y}, objc-tree.def: Moved to objc dir. + +Sat Jun 21 07:54:36 1997 Robert Lipe + + * fixinc.sco (math.h): Correct the collision of "exception". + +Sat Jun 21 06:51:40 1997 Peter Gerwinski + + * rs6000.c (output_epilog): Name is "GNU Pascal", not all caps. + +Sat Jun 21 06:29:19 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * gcc.c (main): Check for and read ${libdir}/gcc-lib/specs to + override the default specs. + +Fri Jun 20 17:20:15 1997 Jim Wilson + + * mips.c (output_block_move): When loading addresses into registers, + add checks for ABI_N32 and ABI_64. + (mips_expand_prologue): Add check for SImode in code splitting + tsize_rtx when it is large_int. + +Fri Jun 20 09:07:31 1997 Russell King + + * configure.in (arm-*-linuxaout): New target. + * arm/lib1funcs-linux.asm, arm/linux-gas.h: New files. + * arm/linux.h, arm/t-linux, arm/xm-linux.h: New file. + * xm-linux.h: Undef some macros before defining them. + +Thu Jun 19 21:18:20 1997 Jim Wilson + + * dwarf2out.c (output_line_info): Always use DW_LNE_set_address instead + of DW_LNS_fixed_advance_pc for line number addresses. + (size_of_line_info): Adjust size calculation as per above change. + (text_end_label): Make it static. + +Thu Jun 19 14:55:49 1997 Brendan Kehoe + + * toplev.c (xmalloc): Only give the fatal msg if SIZE is non-zero. + +Sun Apr 27 23:19:13 1997 Ulrich Drepper + + * libgcc2.c (__eh_type): Remove `extern' to make this a definition. + +Wed Jun 18 18:10:16 1997 Per Bothner + + * dbxout.c (dbxout_type_fields): Skip field if DECL_IGNORED_P. + +Wed Jun 18 18:04:33 1997 Mike Stump + + * except.c (end_eh_unwinder): If we have a return instruction, we + have to make sure we use it and don't fall off the end of the + function in the unwinder. + +Wed Jun 18 14:27:58 1997 Mike Stump + + * flow.c (find_basic_blocks): Fix end case bug. + +Tue Jun 17 18:35:57 1997 Mike Stump + + * libgcc2.c (__eh_pcnthrow): Add support -fno-sjlj-exceptions + -fPIC exception handling on the SPARC. + * sparc.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Likewise. + * libgcc2.c (__eh_ffetmnpc): Remove. + +Mon Jun 16 20:28:51 1997 Jason Merrill + + * collect2.c (extract_string): Null-terminate. + +Mon Jun 16 14:38:44 1997 Michael Meissner + + * combine.c (set_nonzero_bits_and_sign_copies): Use REG_SET macros + instead of doing bit operations directly. + (try_combine,reg_dead_at_p): Ditto. + * caller-save.c (save_call_clobbered_regs): Ditto. + * reload1.c (reload): Ditto. + * local-alloc.c (update_equiv_regs,block_alloc): Ditto. + * sched.c (schedule_block): Dito. + +Sun Jun 15 20:46:12 1997 Jim Wilson + + * dwarf2out.c (dwarf2out_frame_debug): Handle IOR. + (struct limbo_die_struct): Define. + (TYPE_DECL_IS_STUB): Call decl_ultimate_origin if DECL_ABTRACT_ORIGIN + is set. + (limbo_die_count): Delete. + (libmo_die_list): Define. + (new_die): Add die to limbo_die_list instead of incrementing + limbo_die_count. + (add_AT_location_description): Renamed from add_location_attribute. + New parameter attr_kind. + (add_location_or_const_value_attribute, gen_subprogram_die, + add_bound_info): Change call to add_AT_location_description. + (add_bound_info): Add call to contains_placeholder_p. Ignore + MAX_EXPR and VAR_DECL. + (add_subscript_info): Ignore the index type if it is an unnamed + integral type. + (scope_die_for): Move check for function-local tags after code setting + containing_scope, and add check for non-NULL containing_scope + (add_type_attribute): If unnamed type, use TREE_TYPE instead. + (gen_enumeration_type_die, gen_struct_or_union_type_die): Call + add_child_die if die_parent is NULL. + (gen_subprogram_die): Ifdef out DW_AT_static_link code. + (decls_for_scope): Delete decrement of limbo_die_count. + (dwarf2out_finish): Add code to traverse the limbo_die_list, and + call add_child_die if die_parent is NULL. Delete limbo_die_count code. + * mips.c (mips_expand_prologue): If tsize_rtx is large_int, emit two + insns instead of one splitable insn, setting RTX_FRAME_RELATED_P. + +Fri Jun 13 19:33:35 1997 Brendan Kehoe + + * fixincludes: Also fix AIX NULL macro in sys/{dir,param,types}.h. + +Thu Jun 12 22:53:12 1997 Jim Wilson + + * m68k.md (mov[qhs]i): Remove pair of constraints which allow + offsetable memory addresses to be moved to the same for TARGET_5200. + +Thu Jun 12 15:33:01 1997 Jeffrey A Law (law@cygnus.com) + + * pa.h (SELECT_RTX_SECTION): Place symbolic operands into the + data section. + + * pa.c (emit_move_sequence): Rewrite code to handle arithmetic + involving plabels. + +Wed Jun 11 08:57:14 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * tree.c (unsave_expr_now): Avoid recursing into the parts of + the tree that are RTL. + +Thu Jun 12 09:43:55 1997 Jeffrey A Law (law@cygnus.com) + + * reorg.c (emit_delay_sequence): Call set_new_first_and_last_insn + after the new sequence insn has been spliced into the insn chain. + +Wed Jun 11 23:10:49 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.md (call, call_value): Use "call" instead of "calls" + for calls to named functions. + +Wed Jun 11 00:22:34 1997 Jim Wilson + + * configure, configure.in: Restore changes from Feb 15 to Apr 13 + lost during conversion to autoconf. + +Tue Jun 10 18:23:35 1997 Mike Stump + + * stmt.c (expand_decl_cleanup): Avoid core dumping when exceptions + aren't on. + +Tue Jun 10 18:22:30 1997 Jason Merrill + + * collect2.c (extract_string): New fn. + (main): Use it. + +Tue Jun 10 17:40:15 1997 Jim Wilson + + * expr.c (emit_group_load): Add case using gen_lowpart. + +Tue Jun 10 17:14:58 1997 Michael Meissner + + * rs6000/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 + + * Makefile.in (MAYBE_USE_COLLECT2): Renamed from MAYBE_USE_COLLECT. + +Mon Jun 9 19:42:21 1997 Jason Merrill + + * fold-const.c (fold): Don't do COND_EXPR -> MIN_EXPR folding if it + loses information that might be needed by a later use as an lvalue. + +Mon Jun 9 19:10:50 1997 Alexandre Oliva + + * configure.in: Don't override a user's setting for prefix + on platforms that use the native prefix. + +Mon Jun 9 19:00:49 1997 Brendan Kehoe + + * integrate.c (expand_inline_function): Use the mode of FNDECL's + result rtl, not the result type itself, in setting ARRIVING_MODE. + + * reload1.c (reload): Use xmalloc instead of alloca for the label + offsets in OFFSETS_AT and OFFSETS_KNOWN_AT. + +Mon Jun 9 15:16:52 1997 Mike Stump + + * flow.c (find_basic_blocks): Eliminate more dead code, enables + dead throws to be eliminated. + +Mon Jun 9 17:15:50 1997 Stephen L Moshier + + * alpha.c (check_float_value): Underflow and overflow constants + are different for FLOAT_VAX and default targets. + +Mon Jun 9 16:48:21 1997 Scott Christley + + * Makefile.in (Makefile): Process language fragments. + * configure.frag: New file. + * configure.in: Move language fragment processing to configure.lang.e + + * Makefile.in (GCC_PASSES): Prevent all compilers from being + built when only the C compiler is needed. + + * configure.in (cross_overrides, build_overrides): Use absolute + path to GCC top-level source directory. + + * configure.in: Save target alias for language directories. + + * configure.in (with-gxx-include-dir): New parameter for + setting the g++ header file directory. + * Makefile.in (gxx_include_dir): Use autoconf variable. + + * configure.in: Add parameter for setting local prefix. + + * configure.lang: New file. + * configure.in: Move language subdirectory Makefile processing + into configure.lang. + +Mon Jun 9 16:44:47 1997 Jim Wilson + + * sched.c (attach_deaths): Fix typo in Jun 4 change. + +Mon Jun 9 15:13:00 1997 Marc Lehmann (pcg@goof.com) + + * varasm.c (assemble_end_function): Switch back to function + section after outputting constant pool. + +Mon Jun 9 14:47:22 1997 Paul Eggert + + * tree.c (change_main_variant): Remove unused function. + (build_array_type): Remove obsolete references to + change_main_variant. + * c-decl.c (complete_array_type): Likewise. + + * c-common.c (c_build_type_variant): Don't futz with main type + variant of array since C Standard requires main type variant of + array-of-const also be array-of-const. + + * Makefile.in: Comment out lines containing just formfeeds. + + * Makefile.in (distclean): Remove config.bak. + (maintainer-clean): Output warning. + Do not remove `configure'. + +Mon Jun 9 14:44:17 1997 J.T. Conklin + + * configure.in (*-*-netbsd): Restore changes of Apr 13th lost in + autoconf conversion: tmake_file now t-netbsd; delete xmake_file. + +Mon Jun 9 14:39:29 1997 Richard Kenner + + * expr.c (expand_builtin, case BUILT_IN_FRAME_ADDRESS): + Use correct function name in error message. + + * Makefile.in (diff): Exclude bi-parser.h. + + * i386.h (CC1_CPU_SPEC): Renamed, was CC1_SPEC. + (CC1_SPEC): New macro. + (EXTRA_SPECS): Add "cc1_cpu". + * i386/linux.h (CC1_SPEC): New macro. + +Mon Jun 9 13:23:06 1997 Philippe De Muyter + + * m68k/next.h (TARGET_DEFAULT): Use MASK_68040, + not MASK_68040_ALSO. + * m68k/mot3300.h, m68k/ccur-GAS.h (TARGET_DEFAULT): Likewise. + + * m68k.h (MACHINE_STATE_{SAVE,RESTORE}): Test #ifdef __mcf52000__, + not if (TARGET_52000); fixed for mc68000 case. + + * m68k/mot3300.h (CPP_SPEC): Define __mc68020__ if no -m[c]68000 + command-line option given. + +Mon Jun 9 09:19:17 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * Makefile.in (target_alias): Substitute with target_alias. + + * final.c (final_scan_insn): Use single_set to check cc_status.flags. + +Mon Jun 9 09:09:07 1997 Andreas Schwab + + * c-common.c (check_format_info): Correct handling of the 'a' flag + which adds another pointer level. + +Sun Jun 8 00:34:25 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (conditional branch insns): Get length right for branches + to targets which can not be reached with a "bl" instruction. + * pa.c (output_cbranch): Handle branches to targets which can not + be reached with a "bl" instruction. + + * pa.md (alternate dbra pattern): Remove incorrect pattern. + +Sat Jun 7 23:30:25 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (struct defer_plab): Renamed to struct deferred_plabel. + Remove "symbol" field and replace with "name" field. + (output_function_epilogue): Don't output deferred plabels here. + (output_deferred_labels): New function. Output them here instead. + (output_call): Rewrite long call support. + * pa.h (ASM_FILE_END): Define. + (LEGITIMATE_CONSTANT_P): Never accept a function_label_operand. + * pa.md (HIGH and LO_SUM of function address): Remove patterns. + +Fri Jun 6 16:09:04 1997 Mike Stump + + * libgcc2.c (__eh_ffetmnpc): Add support for machines that cannot + access globals after throw's epilogue when -fno-sjlj-exceptions is + used. + * rs6000.c (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Likewise. + * mips.h (DONT_ACCESS_GBLS_AFTER_EPILOGUE): Likewise. + (INITIAL_ELIMINATION_OFFSET): Fix RETURN_ADDRESS_POINTER_REGNUM + for 64 bit words, with 32 bit pointers and variable endianness. + +Fri Jun 6 17:27:58 1997 Mike Meissner + + * regclass.c (allocate_reg_info): Fix off by one error. + +Fri Jun 6 17:17:41 1997 Doug Evans + + * basic-block.h (EXECUTE_IF_SET_IN_REG_SET): Fix setting of scan_rs_. + (EXECUTE_IF_SET_AND_RESET_IN_REG_SET): Likewise. + (EXECUTE_IF_AND_IN_REG_SET): Likewise. + (EXECUTE_IF_AND_COMPL_IN_REG_SET): Likewise. + +Fri Jun 6 15:42:59 1997 Stan Cox + + * i386.c (notice_cc_update): Set CC_FCOMI is this is a float compare. + +Fri Jun 6 15:12:38 1997 Jim Wilson + + * basic-block.h (REG_SET_TO_HARD_REG_SET): Fix typo. + + * sched.c (update_flow_info): When add extra REG_DEAD note for original + dest, handle case where last insn both uses and sets dest. + +Thu Jun 5 22:19:36 1997 Brendan Kehoe + + * fixinc.irix: Add declaration of __vfork to unistd.h. + + * i960/vx960-coff.h (CPP_SPEC): Always define CPU, even if they + use -ansi; the VxWorks headers assume it's always present. + * sparc/vxsparc.h (CPP_SPEC): Define, adding the CPU definition to + what came from sparc.h. + (CPP_PREDEFINES): Don't define it here. + +Thu Jun 5 13:40:33 1997 Mike Meissner + + * basic-block.c (OBSTACK_ALLOC_REG_SET): Rename from + OBALLOC_REG_SET. Add obstack pointer parameter. + + * flow.c (function_obstack): Add declaration. + (life_analysis): Don't allocate the space to hold to vector of + regsets here. + (init_regset_vector): Add pointer parameter and delete space + paramter. Use OBSTACK_ALLOC_REG_SET to allocate. Change callers. + (propagate_block): Use ALLOCA_REG_SET instead of bare alloca. + + * sched.c (schedule_block): Fix typo in yesterday's changes. + * reorg.c (mark_target_live_regs): Ditto. + +Thu Jun 5 09:44:49 1997 Jeffrey A Law (law@cygnus.com) + + * sh.c (trap_exit, sp_switch): New variables. + (print_operand, case '@'): If trap_exit is nonzero, then use + a trapa instead of an rte/rts to exit the current function. + (sh_expand_prologue): Switch stacks at function entry as needed. + (sh_expand_epilogue): Similarly at function exit. + (function_epilogue): Clear trap_exit and sp_switch too. + (sh_valid_machine_decl_attribute): New function. + * sh.h (VALID_MACHINE_DECL_ATTRIBUTE): Define. + (sp_switch): Declare. + * sh.md (sp_switch_1, sp_switch_2): New named patterns. + +Wed Jun 4 18:11:14 1997 Michael Meissner + + * basic-block.h (REGSET_ELT_BITS): Make this explicitly unsigned, so + that division and modulus of REGSET_ELT_BITS uses a pure shift. + (*_REG_SET): New macros to abstract the register set interface. + + * caller-save.c (save_call_clobbered_regs): Use new *_REG_SET + macros. + * flow.c (life_analysis,propagate_block,insn_dead_p): Ditto. + (regno_uninitialized,regno_clobbered_at_setjmp,mark_set_1): Ditto. + (mark_used_regs,dump_flow_info,global_conflicts): Ditto. + global.c (mark_elimination): Ditto. + * reorg.c (mark_target_live_regs): Ditto. + * sched.c (sched_{analyze_{1,insn},note_set}): Ditto. + (birthing_insn_p,attach_deaths,unlink_notes,schedule_block): Ditto. + + * sched.c (sometimes structure): Delete offset, bit fields, replace + with regno. + (new_sometimes_live): Take regno argument, not offset and bit. + Change all callers. + +Tue Jun 3 19:18:36 1997 Brendan Kehoe + + * fixincludes: Fix AIX NULL macro use of void*. + +Tue Jun 3 15:21:04 1997 Jason Merrill + + * sparc.h (ASM_OUTPUT_MI_THUNK): Handle -fpic. + +Mon Jun 2 16:53:53 1997 Michael Meissner + + * loop.c (n_times_{set,used}): Make type int, not short. + (scan_loop): n_times{set,used} are now int pointers. + + * sched.c (sched_reg_n_deaths): Remove unused variable. + (struct sometimes): Make fields int sized, not short. + (schedule_insns): Don't set sched_reg_n_deaths, nobody uses it. + + * regclass.c (allocate_reg_info): Allocate 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 + + * sparc/sparc.md (v9 eq/ne cond move patterns): Add early clobber + constraint to destination. + +Fri May 30 11:00:44 1997 Michael Meissner + + * regs.h (reg_info): New structure to group the arrays indexed by + register number created by reg_scan and flow_analysis that are + globally visiable. + (reg_n_info): Pointer to the register information array. + (reg_n_{refs,sets,deaths,calls_crossed}): Delete variables. + (reg_changes_size): 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 + + * i386.md (movsfcc_1, movdfcc_1, movxfcc_1): Use singlemove_string + for float conditional move when destination and operands all differ. + + * i386.h (ASM_OUTPUT_REG_{PUSH,POP}): add %% before register name. + + * go32.h (ASM_OUTPUT_ALIGN): Use .p2align, not byte alignments. + +Wed May 28 20:44:00 1997 Mike Stump + + * except.c (push_eh_entry): Eliminate start of exception region + label, as it isn't used. Rename end_label to outer_context. + (expand_eh_region_start_for_decl): Likewise. + (expand_leftover_cleanups): Likewise. + (expand_start_all_catch): Likewise. + * except.h (eh_entry): Likewise. + * except.c (expand_eh_region_end): Likewise. Jump around the nop + that we insert, so that we can optimize it away, if it is unused, + also so that flow analysis can tell if we fall through to the end + of a function or not so that it can know if a function that returns + a value, in fact does or not. + +Wed May 28 10:50:09 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (jump): Handle out of range unconditional jump + when not optimizing. + +Thu May 22 00:57:07 1997 Jeffrey A Law (law@cygnus.com) + + * reload1.c (reload_cse_record_set): Ignore values for SREG if + their mode is narrower than DEST_MODE. + + * pa.h (DFMODE_RETURN_STRING): Define. + (SFMODE_RETURN_STRING): Likewise. + (ASM_DECLARE_FUNCTION_NAME): Use them. + +Wed May 21 23:32:02 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.md (reload_insi): Handle SUBREG properly. + +Tue May 20 22:32:13 1997 Jason Merrill + + * dwarf2out.c (dwarf2out_def_cfa): Set cfa_reg at the top. + +Tue May 20 16:57:50 1997 Brendan Kehoe + + * cplus-dem.c (do_type): Handle `J'. + (demangle_fund_type): Print "complex" for it. + +Mon May 19 21:01:53 1997 Jim Wilson + + * m68k.c (output_move_qimode): Add coldfire support. + * m68k.h (PUSH_ROUNDING): Add coldfire support. + * m68k.md (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 + + * 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 + + * 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 + + * cccp.c (VMS_write, VMS_read): Delete. + (safe_write): If MAX_WRITE_LEN is defined, limit + incremental write attempts to that amount. + (safe_read): Analogous situation for MAX_READ_LEN. + * cpplib.c (safe_read): Likewise. + * vax/xm-vms.h (MAX_WRITE_LEN, MAX_READ_LEN): Define. + + * vax/xm-vms.h (get_dynamic_handler_chain_libfunc): New macro. + (protect_cleanup_actions_with_terminate): New macro. + +Sun May 18 08:50:25 1997 Andreas Schwab + + * m68k/linux.h (ASM_COMMENT_START): Define. + * m68k/linux-aout.h (ASM_COMMENT_START): Define. + + * reload1.c (reload_cse_regno_equal_p): Check for value using more + than one register on a big endian machine. + +Sun May 18 08:39:59 1997 Vince Del Vecchio + + * loop.c (maybe_eliminate_biv_1): In (set (cc0) ) case, + swap compare operands when mult_val < 0 in one additional place. + +Sun May 18 08:33:30 1997 Richard Kenner + + * dwarf2out.c (ASM_COMMENT_START): Add default definition. + + * Makefile.in (maintainer-claean): Delete configure. + +Sun May 18 08:31:59 1997 Scott Christley + + * configure.in: New file. + * Makefile.in: Change to utilize autoconf variables. + * configure: Now an output file. + +Sun May 18 07:48:31 1997 J.T. Conklin + + * m68k.md (mov[qhs]i,movstrict[qs]i, mulsi3): Use 'Q' constraint + for TARGET_5200. + * m68k.h (EXTRA_CONSTRAINT): New macro. + + * m68k.h (TARGET_SWITCHES): Add 68020-60. + Mask out bits which indicate a particular processor when a different + processor is selected. + (MASK_68040_ALSO): Remove. + (MASK_68040): Change to be a single bit. + + * m68k.h (TARGET_ALIGN_INT, MASK_ALIGN_INT): New macros. + (BIGGEST_ALIGNMENT): Determine according to TARGET_ALIGN_INT. + (TARGET_SWITCHES): Add align-int and no-align-int. + + * m68k.md (mov[qhs]i}): Add pair of constraints which allow + offsetable memory addresses to be moved to the same for TARGET_5200. + + * m68k.c (output_move_strict{hi,qi}): New functions. + * m68k.h (output_move_strict{hi,qi}): Declare. + * m68k.md (movstrict*): Changed into define_expands. + Split insns into m68k and coldfire specific versions with appropriate + constraints. + +Sun May 18 07:26:40 1997 Philippe De Muyter + + * libgcc2.c (atexit): Cast malloc and realloc calls. + +Sat May 17 16:26:51 1997 Bernd Schmidt + + * final.c (profile_function): Call function_section, not + text_section. + +Sat May 17 16:01:00 1997 Philippe De Muyter + + * cse.c (notreg_cost): New function, extracted from COST macro. + (COST): Use notreg_cost. + +Sat May 17 15:13:23 1997 Richard Kenner + + * cse.c (cse_insn): Don't record a SRC that's a MEM and the same + as a REG_EQUIV note if DEST is set more than once. + +Fri May 16 14:50:57 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (output_move_double): Handle loading a general register + from a scaled indexed memory address. + * pa.md (movdf, movdi): Allow scaled loads into general registers. + +Fri May 16 13:31:08 1997 Mike Stump + + * rs6000.c (rs6000_stack_info): Only do eabi setup for "main", + when main is the global main, not some nested routine that + happens to be called main. + +Thu May 15 17:19:50 1997 Mike Stump + + * except.c (expand_start_all_catch): If the machine needs to + perform any actions at the start of an expcetion handler that + hasn't already been done, use gen_exception_receiver to emit it. + (expand_leftover_cleanups): Likewise. + * alpha/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 + + * function.c (expand_function_end): Make sure we finish off any + leftover exception handlers. + +Tue May 13 14:07:01 1997 Mike Stump + + * expr.c (expand_builtin_setjmp): Remove setting of + current_function_has_nonlocal_goto, as this isn't a goto. + +Tue May 13 14:47:40 1997 Richard Earnshaw (rearnsha@cambridge.arm.com) + + * arm.h (CPP_SPEC): Fix typo invoking cpp_endian. + * arm/t-semi (LIB2FUNCS_EXTRA): Build fp-bit.c when compiling + with -msoft-float. + * arm.c: Add prototypes for all static functions. + (output_multi_immediate, int_log2): Make static. + + * arm.h (*_SPEC): Remove all references to mle/mbe. + * arm/coff.h (MULTILIB_DEFAULTS): Likewise. + * arm/t-bare (MULTILIB_OPTIONS): Change options mbe/mle to mbig-endian + and mlittle-endian. + (MULTILIB_MATCHES): Nothing matches that matters. + +Mon May 12 20:42:20 1997 Mike Stump + + * except.c (expand_start_all_catch): If 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 + + * i386.c (output_float_compare): For pentiumpro use fcomip + followed by a float stack pop for "compare;pop;pop" cases. + +Thu May 8 13:20:20 1997 Chris Torek + + * fold-const.c (fold, truth_andor): Disable optimization for + side effects on RHS. + +Wed May 7 15:43:57 1997 Mike Stump + + * except.c (start_dynamic_handler): Fix so 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 + + * rs6000.md (insv): Only combine insert with shift if + remaining source bits >= destination field size. + +Tue May 6 15:48:52 1997 Jason Merrill + + * dwarf2out.c (dwarf2out_begin_prologue): Increment + current_funcdef_number here. + (dwarf2out_end_epilogue): Not here. + +Mon May 5 18:52:32 1997 Jeffrey A Law (law@cygnus.com) + + * h8300.c (notice_update_cc): Use CC_SET_ZN and CC_SET_ZNV. + (shift_one, shift_two): Set CC_NO_CARRY as needed. Remove + references to CC_OVERFLOW_0. + (emit_a_shift): Similarly. + * h8300.h (CC_OVERFLOW_0): Remove. + * h8300.md: Use set_zn and set_znv for cc0 tracking. + (bCC): Restore the comparison is CC_OVERFLOW_UNUSABLE is set and + the comparison needs the overflow bits. + + * mn10300.c (notice_update_cc): Use CC_SET_ZN and CC_SET_ZNV. + * mn10300.h (CC_NO_CARRY): Define. + * mn10300.md: Use "set_zn" and "set_znv" to more accurately + describe cc0 status. + +Fri May 2 17:00:33 1997 Jason Merrill + + * dwarf2out.c: Reorganize, moving .debug_frame support to the top + of the file, and compile it if INCOMING_RETURN_ADDR_RTX is defined + even if DWARF2_DEBUGGING_INFO isn't. + (EH_FRAME_SECTION): New macro. + (output_call_frame_info): Handle .eh_frame variant. + (dwarf2out_def_cfa): Update cfa_*{reg,offset}. + (dwarf2out_frame_debug): Move cfa_*{reg,offset} to file scope. + (dwarf2out_end_epilogue): Increment current_funcdef_number here. + (dwarf2out_decl): Not here. + (dwarf2out_frame_init, dwarf2out_frame_finish): New fns. + (dwarf2out_init, dwarf2out_finish): Call them. + (output_die): Add missing 'case 8:' + (dwarf2out_decl): Revert other context_die = NULL change. + (add_bound_info): Restore default case. + +Fri May 2 15:30:16 1997 Doug Evans + + * m32r/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 + + * rs6000.h (RS6000_ALIGN): Macro renamed from ALIGN. + * rs6000.c (rs6000_stack_info): Use it. + +Fri May 2 14:15:54 1997 Ian Lance Taylor + + * reload1.c (reload_cse_noop_set_p): When checking the values + equivalent to sreg, make sure the mode is right. + +Fri May 2 12:53:03 1997 Jeffrey A Law (law@cygnus.com) + + * reload1.c (reload_cse_invalidate_regno): Properly set + the mode for invalidate_regno_rtx. + +Thu May 1 14:57:35 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (call_internal_symref): Fix typo. + +Thu May 1 14:44:17 1997 Jim Wilson + + * mips.c (mips_asm_file_start): Use new macro TARGET_FILE_SWITCHING. + (mips_asm_file_end): Likewise. + * mips.h (TARGET_FILE_SWITCHING): Define. + (NO_DBX_FUNCTION_END): Define. + +Thu May 1 09:08:40 1997 Andreas Schwab + + * m68k.c (output_addsi3): Replace "\\;" by "\n\t" in + assembler templates. + +Thu May 1 09:00:42 1997 Richard Kenner + + * integrate.c (subst_constants, case SUBREG): Cancel changes once + done with result. + +Wed Apr 30 19:45:56 1997 Jim Wilson + + * mips.c (override_options): Set mips_split_addresses only if + TARGET_SPLIT_ADDRESSES is set. + * mips.h (MASK_SPLIT_ADDR, TARGET_SPLIT_ADDRESSES): New macros. + (TARGET_SWITCHES): Add -msplit-addresses, -mno-split-addresses. + * configure (mips*-*-ecoff*, mips*-*-elf*): Set MASK_SPLIT_ADDR + bit in target_cpu_default2. + + * flags.h (current_function_is_thunk): Add extern to declaration. + + * dbxout.c (dbxout_function): Test NO_DBX_FUNCTION_END at run time + instead of compile time. + + * unroll.c (set_dominates_use): In second loop, add check for copy_end. + + * mips.md (paradoxical_extendhidi2, paradoxical_extendqidi2): New + patterns. + +Wed Apr 30 02:23:24 1997 Jason Merrill + + * output.h (named_section): Add reloc argument. + (DECL_READONLY_SECTION): New macro. + * varasm.c (named_section): Add reloc argument, pass it to + ASM_OUTPUT_SECTION_NAME. + (UNIQUE_SECTION, UNIQUE_SECTION_P): Provide defaults. + (function_section): Pass reloc argument to named_section. + (variable_section, exception_section): Likewise. + (output_constant_def_contents): Likewise. + (assemble_start_function): Use UNIQUE_SECTION_P. UNIQUE_SECTION is + now a statement. + (assemble_variable): Likewise. + * mips/iris6.h (ASM_OUTPUT_SECTION_NAME): Add reloc arg, + use DECL_READONLY_SECTION. + * psos.h, ptx4.h, a29k.h, alpha/elf.h, arm/coff.h, h8300.h: Likewise. + * i386/go32.h, i386/sco5.h, m68k/coff.h, mips/elf64.h: Likewise. + * mips/netbsd.h, pa.h, rs6000/sysv4.h, sh.h, sparc/sysv4.h: Likewise. + * config/svr4.h (SELECT_SECTION): Use DECL_READONLY_SECTION. + (ASM_OUTPUT_SECTION_NAME): Likewise, add reloc argument. + (MAKE_DECL_ONE_ONLY): Just set DECL_WEAK. + (UNIQUE_SECTION, UNIQUE_SECTION_P): Define. + * i386/cygwin32.h (UNIQUE_SECTION_P): Define. + (SUPPORTS_ONE_ONLY): Define. + (MAKE_DECL_ONE_ONLY): Lose. + (ASM_OUTPUT_SECTION_NAME): Add reloc arg, use DECL_READONLY_SECTION. + * i386/winnt.c (i386_pe_unique_section): Add reloc arg, + use DECL_READONLY_SECTION. + + * mips/iris6.h (CTORS_SECTION_ASM_OP): Change aligment based on ABI. + (DTORS_SECTION_ASM_OP): Likewise. + +Tue Apr 29 16:08:07 1997 Jeffrey A Law (law@cygnus.com) + + * pa/lib1funcs.asm (divnorm, modnorm, exitdiv): Fix code to + negate SImode values. + +Tue Apr 29 12:54:14 1997 Mike Stump + + * except.c (expand_eh_region_start_tree): Add DECL argument so we + can better track why the region was made for error reporting. + * except.h (expand_eh_region_start_tree): Likewise. + * tree.h (expand_dhc_cleanup): Likewise. + (expand_dcc_cleanup): Likewise. + * except.c (expand_eh_region_start_for_decl): New routine. + * except.h (expand_eh_region_start_for_decl): Likewise. + * stmt.c (expand_decl_cleanup): Add DECL to call of + expand_eh_region_start_tree. + (expand_dcc_cleanup): Likewise. + (expand_dhc_cleanup): Likewise. + + (expand_start_case): Switches introduce conditional contexts. + (expand_start_case_dummy): Likewise. + (expand_start_case_dummy): Likewise. + (expand_end_case): Likewise. + +Tue Apr 29 11:45:09 1997 Jason Merrill + + * dwarf2out.c (dwarf2out_decl): Undo earlier change. + (constant_size): Likewise. + (gen_subprogram_die): Handle NULL context_die. + + * mips/iris6.h (ASM_OUTPUT_CONSTRUCTOR): Fix for -mabi=64. + (ASM_OUTPUT_DESTRUCTOR): Likewise. + +Mon Apr 28 09:10:19 1997 Jeffrey A Law (law@cygnus.com) + + * h8300.c (push_order, pop_order): Add missing initializer + entries. + +Fri Apr 25 19:39:43 1997 J"orn Rennecke + + * h8300.c (output_adds_subs): check for adding 0. + +Fri Apr 25 14:52:31 1997 Jim Wilson + + * configure (i[3456]86-*-freebsdelf*, i[3456]86-*-freebsd*): Use + t-freebsd instead of x-freebsd. + * i386/t-freebsd: Renamed from x-freebsd. + +Fri Apr 25 12:16:20 1997 Stan Cox + + * go32.h (DBX_*): Use definitions from config/dbxcoff.h instead. + +Fri Apr 25 11:55:54 1997 Jason Merrill + + * i386/cygwin32.h (MULTIPLE_SYMBOL_SPACES): Define. + +Thu Apr 24 18:32:56 1997 Jason Merrill + + * i386/winnt.c (i386_pe_unique_section): New fn. + * i386/cygwin32.h (UNIQUE_SECTION): Define. + (MAKE_DECL_ONE_ONLY): Define. + (ASM_OUTPUT_SECTION_NAME): Support DECL_ONE_ONLY. + + * c-decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL. + +Thu Apr 24 17:11:23 1997 Jim Wilson + + * m68k.h (MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Add + TARGET_5200 support. + +Thu Apr 24 16:39:25 1997 Richard Kenner + + * stmt.c (pushcase_range): Check for null range first. + +Wed Apr 23 23:06:28 1997 Ian Lance Taylor + + * reload1.c (reload_cse_record_set): Use push_operand to check for + changes to the stack pointer. + +Wed Apr 23 19:56:01 1997 Jason Merrill + + * calls.c (expand_call): If we're in a thunk, pass through invisible + references instead of making a copy. + * flags.h: Add current_function_is_thunk. + * function.c: Likewise. + (init_function_start): Initialize it. + (push_function_context_to): Save it. + (pop_function_context_from): Restore it. + * function.h (struct function): Add is_thunk. + +Wed Apr 23 17:47:25 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (secondary_reload_class): Handle more cases where we + need secondary reloads. + (impossible_plus_operand): Accept anything that involves addition + of the stack pointer. + * mn10300.md (reload_insi): Always load the stack pointer into + the destination (which is always an address register). + * mn10300.h (STORE_FLAG_VALUE): Remove definition. + * xm-mn10300.h: Declare malloc, realloc, calloc and free. + +Wed Apr 23 14:28:30 1997 Mike Stump + + * expr.h (sjthrow_libfunc): Add support for setjmp/longjmp based + exception handling. + (sjpopnthrow_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 + + * reload1.c (reload_cse_mem_conflict_p): Don't assume that a + SUBREG can not conflict with a MEM. + +Wed Apr 23 09:48:58 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.md (cmphi): Fixed when next CC user is unsigned. + (mov[hq]i-[23]): New patterns for mem-indirect moves. + (movhf,movtqf): Corrected. + * 1750a.c (memop_valid): Memory indirection now valid. + (nonindirect_operand): Remove. + (print_operand): Fix the 'J' output modifier. + * 1750a.h (FRAME_POINTER_REQUIRED): Not required. + (INITIAL_FRAME_POINTER_OFFSET,FIX_FRAME_POINTER_ADDRESS): Undefine. + (FUNCTION_PROLOGUE,FUNCTION_EPILOGUE): Honor -fomit-frame-pointer. + (ELIMINABLE_REGS,CAN_ELIMINATE,INITIAL_ELIMINATION_OFFSET): Defined. + (PREFERRED_RELOAD_CLASS): Corrected. + (CONST_COSTS,ADDRESS_COST,REGISTER_MOVE_COST,MEMORY_MOVE_COST): + Slight adjustments. + (ASM_APP_ON,ASM_APP_OFF): Corrected. + * ms1750.inc (DUCR.M,DUC.M): Defined. + +Wed Apr 23 09:41:35 1997 Andreas Schwab + + * reload.c (push_reload): Fix last argument of the call to + find_dummy_reload. + +Wed Apr 23 09:29:14 1997 Richard Kenner + + * configure (i[3456]86-next-*, m68k-next-nextstep{2,3}*): + Remove out_file and add extra_objs. + * config/nextstep.c: Add includes for config.h, stdio.h, and flags.h. + * {i386,m68k}/t-next (nextstep.o): New rule. + * m68k/next.h: Remove include of machmode.h. + * {i386,m68k}/next.c: Files deleted. + +Tue Apr 22 20:45:29 1997 Jason Merrill + + * sparc.h (DBX_CONTIN_LENGTH): Shrink to 1000. + +Tue Apr 22 18:21:20 1997 Jim Wilson + + * dwarf2out.c (gen_variable_dir): Add test for DW_AT_declaration to + the old_die if statement, and delete assertion for it. + (decl_ultimate_origin): Remove last change. + +Tue Apr 22 10:22:27 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (expand_prologue): End the current sequence before + counting the tst insns in the current function. Start a new + one before emitting any prologue instructions. + + * mn10300.h (REGISTER_MOVE_COST): Bump up cost of moves in the + same class. + + * mn10300.md (untyped_call): New expander. + +Mon Apr 21 16:30:21 1997 Richard Kenner + + * cse.c (fold_rtx, case PLUS): When seeing if negative of constant + is around, make sure not dealing with largest negative. + +Mon Apr 21 13:57:53 1997 Jim Wilson + + * mips/t-ecoff: Set TARGET_LIBGCC2_CFLAGS instead of LIBGCC2_CFLAGS. + + * m68k.c (output_addsi3): New function. From addsi3 pattern. + * m68k.h (output_addsi3): Add declaration. + * m68k.md (movqi+2): Add address registers. + (movxf+1): Disable for TARGET_5200. + (movxf+2): New pattern for TARGET_5200. + (addsi3): Add define_expand. Move code to output_addsi3. + (addsi3_internal): Renamed from addsi3. Disable for TARGET_5200. + (addsi3_5200): New pattern for TARGET_5200. + +Sun Apr 20 10:45:35 1997 Richard Kenner + + * fold-const.c (operand_equal_p): Constants are not equal if there + has been an overflow. + + * toplev.c (compile_file): Shorten "branch-probabilities" in + output of times. + + * alpha/vms.h (MOD[SD]I3_LIBCALL): Call ots$rem, not ots$mod. + (DWARF2_DEBUGGING_INFO): Define. + + * alpha.c (alpha_need_linkage): Call get_identifier. + + * rs6000.c (rs6000_output_load_toc_table): New function. + (output_prolog): Call it instead of doing it directly. + * rs6000.md (nonlocal_goto_receiver): New pattern. + + * dwarf2out.c: Major cleanup; mostly reformatting. + Include expr.h. + Undefine inline ifndef __GNUC__; never define to include static. + Add "static" to header of all inlined functions. + Add declarations for all static functions, with prototypes. + (addr_const_to_string): Use HOST_WIDE_INT_PRINT_* macros. + (add_AT_*, new_{die,loc_descr,cfi): Don't check for xmalloc + returning zero. + (modified_type_die): Add missing parm on recursive call. + ({reg,based}_loc_descriptor): Add missing arg to call to new_loc_descr. + (add_const_value_attribute): Use REAL_VALUE_TYPE for fp calculations. + (output_call_frame_info): Add missing arg to output_cfi call. + (dwarf2out_def_cfa): Local variable OLD_REG must be unsigned long. + * Makefile.in (dwarf2out.o): Includes expr.h. + + * dwarf2out.c: Cast first arg in all calls to bzero to char *. + (decl_ultimate_origin): Return NULL if equal to decl. + (constant_size): Never return more than 4. + (value_format, case 8): New case. + (dwarf2out_frame_debug): Use HARD_FRAME_POINTER_REGNUM. + (based_loc_descr): Likewise. + (add_bound_info): Delete default case. + Add cases for CONVERT_EXPR and NON_LVALUE_EXPR; treat like NOP_EXPR. + Change NOP_EXPR to to recursive call. + (add_type_attribute): Ignore unnamed subtype of integral or FP. + (gen_subprogram_die): Use reg_loc_descriptor. + (dwarf2out_decl): Ignore nested functions. + + * fix-header.c, protoize.c, gcov.c: Use symbolic codes for exit. + + * final.c (profile_function): Only call ASM_OUTPUT_REG_{PUSH,POP} + if defined. + + * expr.c ({move,clear}_by_pieces_1, expand_assignment): Ensure + we have unshared rtx before changing flags. + (store_{constructor,field}): Likewise. + (expand_expr, case COMPONENT_REF): Likewise. + (store_expr): Check if TEMP and TARGET are same with rtx_equal_p. + + * emit-rtl.c (change_address, init_emit): Delete forward references. + (rtl_obstack, stack_depth, max_stack_depth): Delete extern decls. + +Fri Apr 18 18:25:52 1997 Jim Wilson + + * function.c (instantiate_decls): For DECL_INCOMING_RTL, use max + of type size and mode size in instantiate_decl call. + + * fixincludes (sys/lc_core.h): Fix OSF1/4.x namespace pollution. + +Wed Apr 16 19:36:53 1997 Jason Merrill + + * dwarf2out.c (add_bound_info): Use a DIE instead of a location + expression for variable bounds. Trust a MEM rtx even when + optimizing. + (DWARF_FRAME_RETURN_COLUMN): Default to FIRST_PSEUDO_REGISTER. + + * expr.c (expand_expr, case RTL_EXPR): If there is no sequence, + don't set it to const0_rtx. + * tree.c (array_type_nelts): Don't return any SAVE_EXPRs. + +Mon Apr 14 18:12:57 1997 David Edelsohn + + * rs6000.h (RS6000_ITRUNC, RS6000_UITRUNC): Prepend underscores. + (RS6000_MCOUNT): New macro. + (ASM_FILE_START): Use RS6000_MCOUNT. + * rs6000.c (output_function_profiler): Use RS6000_MCOUNT. + * rs6000/aix31.h (RS6000_{ITRUNC,UITRUNC,MCOUNT}): New macros. + +Mon Apr 14 14:37:27 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (can_use_return_insn): Include outgoing argument + area in size computation. + (expand_prologue): Likewise. No longer diddle with sequences. + Put register saves just before outgoing argument area. + (expand_epilogue): Similarly. + (impossible_plus_operand): New function. + * mn10300.h (FRAME_POINTER_REQUIRED): Never require a frame pointer. + (ACCUMULATE_OUTGOING_ARGS, OUTGOING_REG_PARM_STACK_SPACE): Define. + (impossible_plus_operand): Declare. + * mn10300.md (reload_insi): New expander to handle pathological + reload cases. + (addsi3): Fix CC status. + + * mn10300.h (FUNCTION_VALUE): Return addresses in $a0. + (FUNCTION_VALUE_REGNO_P): Corresponding changes. + * mn10300.md (call_value_internal): Allow output to be in an + address register. + + * calls.c (emit_library_call): Handle saving of stack slots when + ACCUMULATE_OUTGOING_ARGS is defined. + (emit_library_call_value): Likewise. + +Mon Apr 14 14:48:15 1997 Jim Wilson + + * sh.md (xtrct_left, xtrct_right): New patterns. + + * combine.c (get_last_value_validate): New argument insn. + Add check for memory reference clobbered by later store. + (record_value_for_reg, get_last_values): Pass in new argument. + +Mon Apr 14 14:03:18 1997 Mike Meissner + + * configure (powerpc --with-cpu=x): Add embedded powerpcs and 604e. + + * rs6000.c (rs6000_override_options): Recognize -mcpu=801, -mcpu=823, + and -mcpu=604e. + +Sun Apr 13 18:43:16 1997 Ian Lance Taylor + + * reload1.c (invalidate_regno_rtx): New static variable. + (reload_cse_invalidate_regno): Check whether any earlier registers + have a multi-register value which includes the register we are + invalidating. + (reload_cse_regs): Initialize invalidate_regno_rtx. + + * reload1.c (reload_cse_record_set): When setting reg_values for a + copy from one register to another, use gen_lowpart_common to + adjust the value correctly if the mode changes. + +Sun Apr 13 17:24:48 1997 Doug Evans + + * expr.c (move_block_from_reg): Try using 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 + + * enquire.c (fake_f_rep): Add missing element name in cast. + +Sun Apr 13 15:20:05 1997 J"orn Rennecke + + * stor-layout.c (layout_record, PCC_BITFIELD_TYPE_MATTERS): + Fix sign bug in last change. + +Sun Apr 13 15:03:38 1997 J.T. Conklin + + * m68k.md (movstricthi): Remove extraneous comparisons. + + * configure (*-*-netbsd): tmake_file now t-netbsd; delete xmake_file. + * config/t-netbsd: New file. + * config/x-netbsd: Removed. + +Sun Apr 13 14:51:25 1997 Richard Earnshaw (rearnsha@armltd.co.uk) + + * cse.c (canon_reg, cse_insn): Don't examine insn_n_dups if + recog_memoized fails to find a match. + +Sun Apr 13 14:17:26 1997 Ian Lance Taylor + + * reload1.c (reload_cse_noop_set_p): Add insn parameter. Change + all callers. If deleting the instruction, remove any earlier + REG_DEAD note for DREG. + (reload_cse_simplify_set): If simplifying, remove any earlier + REG_DEAD note for the new source register. + +Sun Apr 13 14:12:08 1997 Pat Rankin + + * libgcc2 (L_bb, L_exit): Use 0 rather than NULL for null pointers. + +Sun Apr 13 12:53:03 1997 Andreas Schwab + + * m68k/linux.h (ASM_SPEC): Define. + (STRUCT_VALUE_REGNUM, STATIC_CHAIN_REGNUM, INITIALIZE_TRAMPOLINE): + Remove definitions, undoing the change of Mar 20 1996. + + * m68k.c (output_move_qimode): Optimize pushing one byte if source + operand does not use stack pointer. + + * m68k.md (rotl[shq]i3, rotl[hq]i3+1): Don't directly modify operand. + + * m68k.md (tstdi): Add missing parallel around the pattern. + +Sun Apr 13 12:51:00 1997 Paul Eggert + + * cccp.c, cpplib.c (do_include): Diagnose #import and + #include_next if pedantic and if not in a system header. + (do_warning): #warning now causes an error if -pedantic-errors + is given; this is needed since #warning isn't ANSI. + + * toplev.c (lang_options): Add -Wundef, -Wno-undef. + * c-decl.c (c_decode_option): Ignore -Wundef, -Wno-undef. + + * cccp.c, cexp.y (warn_undef): New variable. + * cpplib.h (struct cpp_options): New member warn_undef. + (CPP_WARN_UNDEF): New macro. + + * cccp.c (main), cpplib.c (cpp_handle_options): Set warn_undef + from -Wundef and -Wno-undef. + + * cppexp.c (cpp_lex) New arg skip_evaluation. + (cpp_parse_expr): Pass skip_evaluation to cpp_lex. + Abort if cpp_lex returns NAME. + + * cexp.y (exp), cppexp.c (cpp_lex): Optionally warn about undefined + identifiers that evaluate to 0. + +Sun Apr 13 11:43:16 1997 Joel Sherrill + + * configure (hppa1.1-*-rtems*): New target. + * mips/rtems.h: New file. + +Sun Apr 13 09:48:26 1997 Richard Kenner + + * gcov.c (print_usage, open_files): Use FATAL_EXIT_CODE. + * collect2.c (fatal_perror, fatal, collect_wait): Likewise. + + * sparc.c (eligible_for_delay_slot): Clean up and make to agree + precisely with patterns in MD file. + * sparc.md (*return_addsi): Change condition to exclude both ints. + (*return_adddi): Likewise. + (*return_subsi): New pattern. + + * recog.c (validate_replace_rtx_1, case MINUS): New case. + +Sun Apr 13 08:20:24 1997 Thomas Bushnell + + * i386/gnu.h (TARGET_VERSION): Redefine. + +Sun Apr 13 08:15:31 1997 Bernd Schmidt + + * c-typeck.c (lookup_field): Don't recurse unless FIELD is + a RECORD_TYPE or UNION_TYPE. + + * final.c (profile_function): Save the static chain register + around the call to the profiler function. + + * loop.c (invariant_p, case REG): Pointers into frame are not + invariants if function has nonlocal gotos. + * reload1.c (reload): If function has nonlocal label, mark all + caller-saved regs as used. + +Fri Apr 11 16:49:06 1997 Doug Evans + + * m32r.h (REG_ALLOC_ORDER): Restore to original setting. + + * m32r.h (UPPER16_P): Fix calculation. + * m32r.c (two_insn_const_operand): New function. + (m32r_print_operand): Handle 'X'. + * m32r.md (movsi): Tweak. + (*movsi_insn): Output hex value of constants too. + (movsi define_split): Add. + (andsi3,orsi3,xorsi3): Output hex value of constants too. + +Thu Apr 10 18:39:33 1997 Jim Wilson + + * sh.md (sne): Modified to use negc instead of xor. + (sne+1): New define_split for new sne pattern. + * sh.c (output_stack_adjust): Reorganize code for readability. + If size is negative, negate and subtract it instead of adding it. + +Wed Apr 9 13:51:07 1997 J"orn Rennecke + + * sh.c (output_stack_adjust): When splitting an adjustment into two + parts, make sure the stack is aligned at all times. + +Tue Apr 8 12:34:38 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.h (RETURN_ADDR_RTX): Define. + +Mon Apr 7 19:19:57 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (count_tst_insns): New function. + (expand_prologue): Load zero into data and/or address registers + if any are free and the function has optimizable tst insns. + (output_tst): If a suitable register is known to have the + value zero, use it instead of searching for a suitable register. + * mn10300.h (zero_dreg, zero_areg): Declare. + (FRAME_POINTER_NEEDED): Frame pointers are not needed if the + outgoing argument size is zero. + * mn10300.md (movXX): Optimize loading zero into an address + register if possible. Optimize loading a DF/DI mode value + into an address register from a constant memory address. + (addsi3): Provide alternative which doesn't require a matching + inout operand. + (return): Optimize consecutive return instructions. + +Mon Apr 7 17:30:35 1997 J"orn Rennecke + + * mips/iris5.h (SUBTARGET_CC1_SPEC): Define. + (LINK_SPEC, STARTFILE_SPEC): Support -static. + * mips/iris6.h (SUBTARGET_CC1_SPEC): Define. + (STARTFILE_SPEC, LINK_SPEC): Support -static. + * mips.h: (SUBTARGET_CC1_SPEC): Define. + (CC1_SPEC): Add subtarget_cc1_spec. + (EXTRA_SPECS): Add subtarget_cc1_spec. + +Sun Apr 6 12:24:53 1997 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.md (incscc): Use a match_operand with cc_register to match + the condition code register. + (decscc, *condbranch, *condbranch_reversed, *mov_scc): Likewise. + (*mov_negscc, *mov_notscc, *cond_return): Likewise. + (*cond_return_inverted, *ior_scc, *cond_move): Likewise. + (insv): New expand. + (andsi_notsi_si): Renamed from *andsi_notsi_si. + (andsi_not_shiftsi_si): New insn. + (*minmax_arithsi): Don't match this insn if operand1 is an + eliminable register. + ({sin,cos}*): Delete, since the ARM always emulates these its + faster to call a library function. + (movsicc, *movsicc_insn): Make operand0 an s_register_operand, + and operand3 an arm_not_operand. Use cc_register to match the + condition code register. + (mov[sd]fcc*): Make operand[0,2] s_register_operands, and operand3 + the nonmemory_operand. Use cc_register to match the condition + code register. + (*ifcompare_plus_move): Move before *ifcompare_arith_move. Just do + a split for the output. + (*ifcompare_move_plus): Similarly, but relative + to *ifcompare_move_arith. + (*if_plus_move, *if_move_plus): New patterns. + (*ifcompare_arith_arith): Simplify the alternatives down to just one, + and split the insn before output. + (*if_arith_arith, *if_arith_move, *if_move_arith): New patterns. + (*ifcompare_move_not, *ifcompare_not_move): Simplify and split the + insn before output. + (*if_move_not, *if_not_move): New patterns. + (*ifcompare_shift_move, *ifcompare_move_shift): Simplify and split the + insn before output. + (*if_shift_move, *if_move_shift): New patterns. + (*ifcompare_shift_shift): Simplify and split the insn before output. + (*if_shift_shift): New pattern. + (*ifcompare_not_arith, *ifcompare_arith_not): Simplify and split the + insn before output. + (*if_not_arith, *if_arith_not): New patterns. + (*ifcompare_neg_move, *ifcompare_move_neg): Simplify and split the + insn before output. + (*if_neg_move, *if_move_neg): New patterns. + +Sat Apr 5 20:17:43 1997 Michael Meissner + + * rs6000/sol-ci.asm (_environ): Don't make _envrion a common + variable, the lastest assembler doesn't let common variables also + be a weak symbol. + +Fri Apr 4 18:30:12 1997 Jim Wilson + + * rs6000/rs6000.md (adddi3): Use non_short_cint_operand instead of + non_add_cint_operand. + +Thu Apr 3 15:08:39 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (can_use_return_insn): Add size of fixed stack space + for function calls into the size of the frame. */ + (expand_prologue, expand_epilogue): Likewise. + (initial_offset): Corresponding changes.. + * mn10300.h (OUTGOING_REG_PARM_STACK_SPACE): No longer define. + (STACK_POINTER_OFFSET): Define. + * mn10300.md (call, call_value expanders): Don't adjust the stack + pointer here anymore. + + * mn10300.md (ashlsi3): Remove some alternatives which are no longer + needed or desired. + +Thu Apr 3 15:06:53 1997 Jim Wilson + + * local-alloc.c (no_conflict_p): Reject sequences with foreign insns. + + * combine.c (move_deaths): Handle partial REG_DEAD note for + multi-reg hard register. + + * function.c (expand_function_start): Emit queue after expanding + each dynamic parameter type. + + * mips.c (mips_move_2words): Add SIGN_EXTEND support for SYMBOL_REF, + LABEL_REF, and CONST operands. + + * dwarf2out.c: Delete comment referring to README.DWARF. + +Wed Apr 2 17:21:23 1997 Jim Wilson + + * rs6000.md (ashrdi3_power): Mark alternative 0 as early_clobber + output. + + * rs6000.md (abssi3_nopower define_split): Switch operands of MINUS. + (nabssi3_nopower define_split): Likewise. + +Tue Apr 1 19:30:01 1997 Mike Stump + + * libgcc2.c (find_exception_table): Fix to logic to deal with + functions that are in their own section, such as template + instantiations, that cause overlapping EH tables. + +Tue Apr 1 17:16:22 1997 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (USER_H): Add va-mn10300.h + + * ginclude/stdarg.h: Include va-mn10300.h. + * ginclude/varargs.h: Likewise. + * ginclude/va-mn10300.h: New file. + * mn10300.c (expand_prologue): If current_function_varargs is nonzero, + flush d0/d1 back into stack. + (mn10300_builtin_saveregs): New function. + (function_arg, function_arg_partial_nregs): New functions. + (initial_offset): Tweak now that the RP save area is allocated + and deallocated around each call again. + * mn10300.h (FIRST_PARM_OFFSET): Now 4. + (FRAME_POINTER_REQUIRED): Require frame pointer for all non-leaf fcns. + (REG_PARM_STACK_SPACE): Now 8 bytes. + (FUNCTION_ARG_REGNO_P): Update for new parameter passing conventions. + (CUMULATIVE_ARGS, INIT_CUMULATIVE_ARGS): Likewise. + (FUNCTION_ARG_ADVANCE, FUNCTION_ARG): Likewise. + (FUNCTION_ARG_PARTIAL_NREGS): Likewise. + (TRAMPOLINE_TEMPLATE): Don't clobber d0 anymore. + (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Corresponding changes. + (EXPAND_BUILTIN_SAVEREGS): Define. + * mn10300.md (call, call_value patterns): Allocate and deallocate + stack slot for return pointer around each call. + + * mn10300.h (RTX_COSTS): Refine. + (CASE_VALUES_THRESHHOLD, NO_FUNCTION_CSE): Likewise. + * mn10300.c (output_tst): New function. + * mn10300.md (movdi, movdf): Improve code to load constants into regs. + (tst insns): Use output_tst to optimize some cases. Add versions to + encourage more zero extensions instead of sign extensions of HImode + and QImode values. + (divsi3, udivsi3): Remove patterns. Replaced by... + (divmodsi4, udivmodsi4): New expanders/patterns. + (andsi3): Optimize "and" operations with certain constants. + +Tue Apr 1 09:14:29 1997 J"orn Rennecke + + * sh.h: (ADJUST_COSTS): Define. + +Fri Mar 28 17:46:13 1997 Jim Wilson + + * Makefile.in (LANGUAGES): Add gcov. + (OBJS): Add profile.o. + (STAGESTUFF): Add gcov. + (profile.o, gcov.o, gcov): Add rules to build them. + (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 + + * i386.h (CPP_CPU_DEFAULT): Define if TARGET_CPU_DEFAULT is not set. + * i386.h (STACK_BOUNDARY): Define to always be 32. + + From J"orn Rennecke + * i386.md: (zero_extendhisi2+[12]): use true_regnum instead of REGNO for + operand 0. + (zero_extendqisi2+3: use reg_overlap_mentioned_p instead of REGNO + comparison; use true_regnum instead of REGNO for rtx generation. + +Wed Mar 26 12:34:21 1997 Ian Lance Taylor + + * reload1.c (reload): Call reload_cse_regs. + (reg_values): New static variable. + (reload_cse_invalidate_regno): New static function. + (reload_cse_mem_conflict_p): New static function. + (reload_cse_invalidate_mem): New static function. + (reload_cse_invalidate_rtx): New static function. + (reload_cse_regs): New static function. + (reload_cse_regno_equal_p): New static function. + (reload_cse_noop_set_p): New static function. + (reload_cse_simplify_set): New static function. + (reload_cse_check_clobbered): New static variable. + (reload_cse_check_src): New static variable. + (reload_cse_check_clobber): New static function. + (reload_cse_record_set): New static function. + +Wed Mar 26 07:34:06 1997 Ulrich Drepper + + * ginclude/stdarg.h (__va_copy): New definition. + +Tue Mar 25 13:43:36 1997 Michael Meissner + + * gcc.c (init_spec): If -v, print out that the default spec values + were being used. Fix prototype to reflect no arguments. + (set_spec): If specs has not been set, set it up with the default + specs. + (read_specs): Move to later in the file so that startfile_prefixes + has been declared. Process "%include " to include another + specs file, aborting if the file can't be found. Process + "%include_noerr : to include another specs file, giving no + error if the file can't be found. Process "%rename var1 var2" to + rename a specs variable. Take new argument that indicates whether + we are processing the main file. Only process % commands if this + is not the main specs file. Change callers. + (main): Do not call init_spec if a specs file was found. + (set_spec,read_specs,do_spec_1): If DEBUG_SPECS is defined, print + debug information. + +Tue Mar 25 14:43:58 1997 Doug Evans + + * expr.c (emit_push_insn): Delete emission of CLOBBER + when doing partial push, no longer necessary. + + * c-decl.c (grokdeclarator): Pedwarn qualified void function return + type. + +Tue Mar 25 14:28:15 1997 Richard Earnshaw (rearnsha@armltd.co.uk) + + * reload.c (find_dummy_reload): New parameter earlyclobber. If set + then don't use IN for the reload if it also appears elsewhere in + the insn. All callers changed. + +Tue Mar 25 13:20:18 1997 J.T. Conklin + + * m68k/lb1sf68.asm (udivsi3): Fix hunk from previous patch that + did not apply correctly. + + * m68k.md (tablejump): Use extl to explicitly sign extend + index registeron TARGET_5200. + * m68k/{apollo68.h,coff.h,linux.h,mot3300.h,pbb.h} + (ASM_RETURN_CASE_JUMP): Likewise. + + * m68k.md (mulsi3): Changed into define_expand. Split insn into + m68k and coldfire specific versions with appropriate constraints. + + * m68k.md (movqi): Disable use of address registers for + TARGET_5200. + + * m68k/lb1sf68.asm (__modsi3, __umodsi3): Use mulsl instruction + instead of __mulsi3 function call on the coldfire. + + * m68k.md (bne0_di): Fix typo in last change. + + * m68k.md (xorsi3_5200): Correct constraints. + + * m68k.c (output_move_{si,hi,qi}mode): New functions. + * m68k.h (output_move_{si,hi,qi}mode): Declare. + + * m68k.md (move{si,hi,qi,di}): Changed into define_expands. Split + insns into m68k and coldfire specific versions with appropriate + constraints. + +Tue Mar 25 12:18:41 1997 Richard Kenner + + * Makefile.in (GCC_PASSES): Revert previous change; use + cc1$(exeext). + +Mon Mar 24 16:12:20 1997 Doug Evans + + * m32r/*: New files. + * config.sub: Add m32r. + * configure: Add m32r. + * longlong.h: Add m32r support. + * ginclude/{stdarg.h,varargs.h}: Add m32r support. + * ginclude/va-m32r.h: New file. + +Mon Mar 24 15:53:15 1997 Joel Sherrill + + * rs6000/rtems.h: Change to a near clone of the powerpc-eabi target. + * configure (powerpc*-*-rtems): Move before Linux configuration. + +Mon Mar 24 14:26:37 1997 Gavin Koch + + * ginclude/va-mips.h: For little endian, eabi, objects + less than __va_reg_size are passed in registers. + +Fri Mar 21 00:48:02 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (print_operand): Handle 'N'. + + * mn10300.c (expand_epilogue): Correctly handle functions + with large frames, but no callee register saves. + + * mn1300.md (movdf, movdi): Handle overlapping moves. + + * pa.c (compute_movstrsi_length): Handle residuals correctly. + +Thu Mar 20 13:53:30 1997 Michael Meissner + + * rs6000.c (easy_fp_constant): If -mrelocatable, consider all fp + constants to be hard. + +Mon Mar 20 13:53:30 1997 Jim Wilson + + * rs6000.md (movdf/movsf define_splits): Add SUBREG support. + + * rs6000.c (fp_reg_or_mem_operand): Delete. + * rs6000.h (PREDICATE_CODES): Remove fp_reg_or_mem_operand. + (fp_reg_or_mem_operand): Delete declaration. + * rs6000.md (movsf_hardfloat): Use nonimmediate_operand instead + of fp_reg_or_mem_operand. + +Thu Mar 20 08:52:27 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.md (cmpsi): Handle comparing a register with + itself by adding zero to the reg. Z bit for such an insn is + inverted. + * mn10300.c (notice_update_cc): Handle CC_INVERT. + + * pa.c (emit_move_sequence): Don't lose for a secondary reload + to the SAR register if the input is a MEM with an offset that won't + fit in 14bits. + +Wed Mar 19 17:10:44 1997 Andreas Schwab + + * m68k/linux.h (ASM_OUTPUT_MI_THUNK): Define. + +Wed Mar 19 16:59:34 1997 Paul Eggert + + * cccp.c, cpplib.c (do_error, do_warning): Fix memory leak. + + * cccp.c (output_line_directive): Do not output negative line + numbers when analyzing directives like `#line 0'. + + * cexp.y (parse_number, yylex), cccp.c (rescan), cpplib.c + (cpp_get_token): Unless -lang-c89 is specified, allow C9X-style + hexadecimal floating-point numbers as preprocessor numbers. + * cccp.c (c89): New decl. + (main): Set it to 1 if -lang-c89. + * cpplib.h (struct cpp_options): New member c89. + (CPP_C89): New macro. + * cpplib.c (unsafe_chars): `p' is unsafe before `-' or `+', since it + might generate a C9X-style hexadecimal floating-point number. + (cpp_handle_options): Set c89 option to 1 if -lang-c89. + +Tue Mar 18 17:05:57 1997 Stan Cox + + * i386.h (STACK_BOUNDARY): Determine according to TARGET_ALIGN_DOUBLE. + + * i386.c (override_options) Make the default alignment 4 for 486, + otherwise 2. + + * i386/freebsd-elf.h (CPP_SPEC): Remove TARGET_CPU_DEFAULT reference. + * i386/linux{,-aout,-oldld}.h (CPP_SPEC): Likewise. + + * i386/go32.h (DBX_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE, + NO_STAB_H, ASM_FILE_START, DBX_BLOCKS_FUNCTION_RELATIVE, + DBX_FUNCTION_FIRST, DBX_OUTPUT_MAIN_SOURCE_FILE_END, + ASM_OUTPUT_SOURCE_LINE): Added to support stabs. + (ASM_OUTPUT_SECTION_NAME): Support section attribute. + +Tue Mar 18 16:12:28 1997 Jim Wilson + + * final.c (shorten_branches): Split all insns before computing insn + lengths. + (final_scan_insn, case default): If HAVE_ATTR_length defined, call + abort for any insn that has a '#' output template. + + * expr.c (emit_group_load): Call operand_subword instead of creating + an explicit SUBREG. + + * reload1.c (reload_reg_free_before_p, case + RELOAD_FOR_OPERAND_ADDRESS): Conflicts with RELOAD_FOR_OPADDR_ADDR + reloads. + + * configure (alpha-dec-osf[23456789]*): Use install-headers-cpio + for osf4. + + * gcc.c (init_spec): Delete parameter. Always initialize extra_specs. + (process_command, main): Change all callers. + + * combine.c (if_then_else_cond): Call copy_rtx to prevent sharing. + +Tue Mar 18 14:59:12 1997 Ian Lance Taylor + + * function.c (assign_parms): Add a REG_EQUIV note to the + instruction which copies a parameter into a pseudo-register + whenever there is an associated stack slot, even if the parameter + actually arrived in a register. + +Tue Mar 18 14:24:48 1997 Doug Evans + + * configure (alpha-dec-osf[23]): Separate osf[23] case. + * alpha.h (LIB_SPEC): -lprof1 requires -lpdf for OSF 4. + * alpha/osf2or3.h: New file. + +Tue Mar 18 11:32:10 1997 Jeffrey A Law (law@cygnus.com) + + * m68k.c (m68k_last_compare_had_fp_operands): New variable. + * m68k.h (m68k_last_compare_had_fp_operands): Declare it. + * m68k.md (tst*, cmp*): Turn into define_expand/define_insn pairs. + Keep track of whether test/compare has fp operands. + (seq, sne, sgt, slt, sge, sle): Turn into define_expand/define_insn + pairs. Make expanders FAIL if TARGET_68060 and last comparison/test + had fp operands. + +Tue Mar 18 04:29:29 1997 Richard Earnshaw + + * arm.md (movhi): Handle generation of large constants during + and after reload. + +Mon Mar 17 17:30:24 1997 Brendan Kehoe + + * gmicro.h (RETURN_POPS_ARGS): Make sure FUNDECL is non-nil + before we try to use it. + * m68k.h (RETURN_POPS_ARGS): Likewise. + * ns32k.h (RETURN_POPS_ARGS): Likewise. + * pyr.h (RETURN_POPS_ARGS): Likewise. + +Mon Mar 17 17:13:44 1997 J"orn Rennecke + + * stor-layout.c (layout_record, PCC_BITFIELD_TYPE_MATTERS): + Only add padding if a bit field would otherwise span more units + of alignment than its base type. + +Mon Mar 17 17:03:55 1997 J.T. Conklin + + * m68k.md (beq0_di, bne0_di, bge0_di, blt0_di): Use cmpw #0 + instead of tstl when testing address registers on the 68000. + + * m68k/lb1sf68.asm: Fix prologues/epilogues to deal with the lack + of predecrement/postincrement addressing modes in the coldfire + moveml instruction. + +Mon Mar 17 17:00:14 1997 Scott Christley + + * Fix long standing bug where first method call for a class could + result in a garbled stack or produce an incorrect return value. + * objc/sendmsg.c (__objc_block_return): Remove function. + (__objc_word_return, __objc_double_return): Remove functions. + (__objc_get_forward_imp): New function. + (__objc_init_dispatch_tables): Install zero instead of + __objc_init_install_dtable. + (__objc_init_install_dtable): No longer call the method but + allow objc_msg_lookup return it for normal execution. + (obj_msg_lookup): Differentiate between when a method isn't + implemented and when the dispatch table needs to be installed. + Return the IMP when the dispatch table is installed versus + having __objc_init_install_dtable call it. + (get_imp): Install dispatch table if needed and return IMP + from the newly installed dispatch table. + (__objc_responds_to): Install dispatch table if needed before + checking if method is implemented. + +Mon Mar 17 16:29:38 1997 Richard Kenner + + * tree.c (build_{index,range}_type): Ensure expressions for min + and max value are in same obstack as type. + +Mon Mar 17 15:44:18 1997 Pat Rankin + + * cccp.c [#if VMS] (O_RDONLY, O_WRONLY): Delete (redundant). + (BSTRING): Delete (obsolete; usage occurs prior to definition). + (do_include): Handle old VAX C style includes better. + +Mon Mar 17 13:46:47 1997 Paul Eggert + + * cexp.y, cppexp.c (parse_number): Invalid integer constants are + errors if pedantic. + * cexp.y (yylex): Invalid multibyte characters are errors if pedantic. + * cppexp.c (cpp_lex): Likewise. + * cppexp.c (cpp_parse_escape): Character constants that do not fit are + errors if pedantic. + + * c-parse.in (expr_no_commas): Do not store temporary + skip_evaluation increments on yacc value stack. + +Sun Mar 16 19:54:49 1997 Richard Kenner + + * expr.c (expand_expr, case PLACEHOLDER_EXPR): Refine which + object is picked. + +Sun Mar 16 15:45:45 1997 Jeffrey A Law (law@cygnus.com) + + * loop.c (strength_reduce): Adjust BENEFIT appropriately if an + autoincrement memory reference will eliminate add insns. + +Sun Mar 16 08:41:40 1997 Scott Christley + + * i386.md (untyped_call): Re-enable code. + * objc/sendmsg.c (__objc_block_return): New function. + (__objc_word_return, __objc_double_return): New functions. + (__objc_init_install_dtable): Call appropriate return function + based upon method type. + * objc/thr-pthreads.c: Correct include path. + +Sat Mar 15 07:58:33 1997 Scott Christley + + * objc-act.c (OBJC_VERSION): Increment version. + * objc/init.c (OBJC_VERSION): Likewise. + +Sat Mar 15 07:58:00 1997 Ovidiu Predescu + + * Implement +load. + * objc/init.c (objc_send_load, __objc_send_load): New functions. + (__objc_send_message_in_list): New function. + (__objc_force_linking): New function. + (__objc_exec_class): Don't call _objc_load_callback here. + * objc/linking.m: New file. + * objc/sendmsg.c (class_add_method_list): Check for the +load method + when adding a methods list to a class. + * objc/Makefile (OBJC_O): Add linking.m. + + * Allow methods defined in categories to override methods that are + defined in the class implementation. + * objc/sendmsg.c (__objc_install_methods_in_dtable): New function. + (class_add_method_list): Don't check anymore for duplicate methods. + + * config/nextstep.h (INCLUDE_DEFAULTS): Define to something useful + when cross-compiling. + + * The static instances list moved from the objc_module struct to + objc_symtab struct, at the end of defs array. This now allows the NeXT + gdb to work with binaries generated for the GNU ObjC runtime. + * objc-act.c (build_objc_symtab_template): Make sure + defs in objc_symtab is a NULL terminated array. + (init_def_list): Attach statics to end of def list. + (init_objc_symtab): Take statics list into account. + (init_module_descriptor, build_module_descriptor): Don't add statics. + (generate_static_references): Indicate that statics are used. + (finish_objc): Process statics in the beginning. + * objc/objc-api.h (objc_module): Eliminate statics variable. + * objc/init.c (__objc_exec_class): Access statics from their + new place in the defs variable. + +Sat Mar 15 07:29:15 1997 J"orn Rennecke + + * reload.c: Include expr.h. + (find_reloads_address, find_reloads_address_1): New argument INSN. + (find_reloads_address_1): Reload inside of p{re,ost}_{in,de}c + instead of entire p{re,ost}_{in,de}c where appropriate. + * Makefile.in (reload.o): Added expr.h to dependencies list. + +Sat Mar 15 07:17:12 1997 Richard Henderson + + * reload.h (eliminate_regs): Add STORING arg. + * reload1.c (eliminate_regs): Likewise. + (eliminate_regs, case SET): Pass that we are storing to recursive call. + (eliminate_regs, case SUBREG): If storing and same number of words, + use larger mode. + * caller-save.c, dbxout.c, dwarfout.c, dwarf2out.c, reload.c, sdbout.c: + Change all calls to eliminate_regs. + +Fri Mar 14 14:18:49 1997 Ian Lance Taylor + + * cplus-dem.c: Add prototypes for all static functions. + (mystrstr): Make static. Make arguments and result const. + (cplus_match): Remove; not used. + +Fri Mar 14 10:15:35 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (const_costs): Remove unused function. + * mn10300.h (CONST_COSTS): Rework to generate better code. + + * mn10300.c (print_operand): Handle 'H' and 'L' output + modifers for high/low part of a 64bit value. + * mn10300.h (CONST_DOUBLE_OK_FOR_LETTER_P): Handle 'G' + (LEGITIMATE_CONSTANT_P): Allow any constant. + * mn10300.md (movdi, movdf): Implement. + (adddi3, subdi3): New expanders and patterns. + + * mn10300.c (print_operand): Handle 'A' modifier for an + address which can't be simple register indirect. + * mn10300.h (EXTRA_CONSTRAINT): Handle 'R' for bit ops. + * mn10300.md: Add patterns to test, set and clear bitfields. + + * mn10300.c (can_use_return_insn): New function. + (expand_epilogue): Emit a RETURN insn if possible. + * mn10300.md (return): New pattern. + + * mn10300.h (CONST_OK_FOR_LETTER_P): Handle 'N'. + * mn10300.md (andsi3): Catch "and 255,dn" and "and 65535,dn" + which were not turned into zero_extend patterns. + + * mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Handle symbolic + constant as an index/base too. + + * mn10300.md (movsi): Allow SP to be loaded/saved with + reg+d8 addresses. + + * mn10300.md (cmpsi): Allow second operand to be a constant. + (subsi3): Likewise. + + * mn10300.md (sign extension patterns): Fix thinko when + extending from memory. + + * mn10300.md (tst peepholes): Add peepholes for test/branch + based on N bit being set/clear and the data value being tested dies. + +Tue Mar 11 17:07:51 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (expand_prologue): Rework so that eliminating + the frame pointer produces faster/smaller code. + (expand_epilogue): Likewise. + (initial_offset): New function for argument pointer and frame pointer + elimination. + * mn10300.h (FIRST_PSEUDO_REGISTER): Bump to 10. + (FIXED_REGISTERS): Add argument pointer register, it's a fake fixed + register. + (CALL_USED_REGISTERS, REG_ALLOC_ORDER): Corresponding changes. + (REGNO_REG_CLASS, REG_CLASS_CONTENTS): Likewise. + (REG_OK_FOR_BASE_P, REGISTER_NAMES): Likewise. + (reg_class, REG_CLASS_NAMES): Delete unwanted DATA_OR_SP_REGS class. + (PREFERRED_OUTPUT_RELOAD_CLASS): Define. + (FIRST_PARM_OFFSET): No longer include register save area in + computation. + (STACK_POINTER_REGNUM): Is now register 9. + (ARG_POINTER_REGNUM): Is now register 8. + (FRAME_POINTER_REQUIRED): Refine. + (ELIMINABLE_REGS, INITIAL_ELIMINATION_OFFSET): Define. + (CAN_DEUG_WITHOUT_FP): Define. + * mn10300.md (return_internal): Break into two patterns. + + * mn10300.h (CONST_OK_FOR_LETTER_P): Handle 'M' too. + (REGISTER_MOVE_COST): Fix errors and refine. + + * mn10300.c (notice_update_cc): SET_ZN_C0 insns leave the + overflow bit in an unuseable state. Rename CC_SET to CC_TST. + * mn10300.md (cc attributes): "set" is gone, replaced by + "tst". Update attributes on various insns. + + * mn10300.md: Improve sign and zero extension instructions. + (ashlsi3): Improve. Handle address registers too. + (add peephole): Combine two consecutive adjustments of a register + into a single adjustment. + +Tue Mar 11 17:18:40 1997 Brendan Kehoe + + * cplus-dem.c (gnu_special): Call demangled_fund_type for other + __t* symbols. + +Mon Mar 10 16:10:34 1997 Richard Kenner + + * emit-rtl.c (subreg_lowpart_p): Return 0 if SUBREG_REG is VOIDmode. + * combine.c (simplify_rtx, case SUBREG): Fix direction of test when + calling operand_subword; use inline code intead of subreg_lowpart_p. + +Fri Mar 7 09:22:28 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (expand_{pro,epi}logue): Rework to avoid + unnecessary "add" operations. + (expand_epilogue): Likewise. + * mn10300.h (STARTING_FRAME_OFFSET): Is zero after the last + round of prologue/epilogue changes. + (FIRST_PARM_OFFSET): Is now 16 (-4 for REG_PARM_STACK_SPACE + 20 for + register save area). + (REG_PARM_STACK_SPACE): Define as 4 bytes. + (OUTGOING_REG_PARM_STACK_SPACE): Define so caller allocates it. + * mn10300.md (call{,_value} expander): Don't emit insns to adjust the + stack here anymore. + + * mn10300.md (bCC patterns): Just use "bCC target". + +Tue Mar 4 13:21:41 1997 Jim Wilson + + * rs6000.md (movsi): Don't emit a USE insn for LABEL_REFs. + +Thu Mar 6 16:29:13 1997 Jim Wilson + + * dwarf2out.c (modified_type_die): Initialize item_type to NULL. + Move equate_type_number_to_die call before use of sub_die, and move + recursive modified_type_die calls on item_type after it. + + * dwarfout.c (root_type_1, write_modifier_bytes_1): New functions. + (root_type): Call root_type_1. + (write_modifier_bytes): Call write_modifier_bytes_1. + (output_type, case POINTER_TYPE): Set TREE_ASM_WRITTEN before + recursive call. + +Wed Mar 5 14:30:49 1997 Torbjorn Granlund + + Partially undo Jan 11 changes (nor takes only register ops): + * mips.md (*norsi3_const, *nordi3_const): Delete bogus patterns. + * mips.c (complemented_arith_operand): Delete function. + (print_operand): Don't handle `e' for CONST_INT. + * mips.h (PREDICATE_CODES): Delete complemented_arith_operand. + +Tue Mar 4 16:38:13 1997 Brendan Kehoe + + * i386.c (i386_return_pops_args): Make sure FUNDECL is non-nil + before we try to use it. + * i386/isc.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 + + * ginclude/va-mips.h: __mips_single_float should have + the same effect on vararg lists as __mips_soft_float. + +Mon Mar 3 18:12:01 1997 Michael Meissner + + * rs6000.h (DBX_CONTIN_LENGTH): Undo 2/26 change. + +Mon Mar 3 13:08:20 1997 Jeffrey A Law (law@cygnus.com) + + * combine.c (simplify_rtx): Do nothing with (truncate:mode) if + mode is a partial integer mode. + +Sun Mar 2 17:41:18 1997 Ulrich Drepper + + * ginclude/varargs.h: Add definition of __va_copy. + * va-alpha.h, va-clipper.h, va-h8300.h, va-i860.h: Likewise. + * va-i960.h, va-m88k.h, va-mips.h, va-pa.h, va-ppc.h: Likewise. + * va-sh.h, va-sparc.h, va-spur.h: Likewise. + +Sun Mar 2 13:25:49 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c (process_init_element): Warn and truncate if upper + bound of index is out of range. + +Fri Feb 28 16:08:47 1997 Michael Meissner + + * rs6000/sol-c0.c (_start): Disable loading up r13 and r2 with the + SDA base registers for now. + + * rs6000.md (movsi): Emit a USE insn when putting the + label of constants into the TOC, so that the constant is still + emitted when expensive optimizations are used. + +Thu Feb 27 17:54:42 1997 Karl Heuer + + * fixinc.ptx: Fix sed expression looking for in + pwd.h. + +Thu Feb 27 12:11:16 1997 Dennis Glatting + + * fixincludes: Remove more cases of __const__ from math.h on + NeXT. + +Wed Feb 26 14:52:27 1997 Michael Meissner + + * reload.c (debug_reload): Remove extra argument to fprintf. + + * rs6000.c (output_toc): Make fprintf calls type correct. + + * rs6000.h (DBX_CONTIN_LENGTH): Define as 4000 to avoid AIX + assembler line limit. + +Mon Feb 24 17:56:17 1997 Brendan Kehoe + + * fixincludes: Fix need of prototypes for C++ in rpc/xdr.h on SunOS4. + +Mon Feb 24 17:33:57 1997 Michael Meissner + + * rs6000/xm-sysv4.h (HAVE_STRERROR): Define. + +Sun Feb 23 17:18:28 1997 Jim Wilson + + * rs6000.md (floatsidf2_loadaddr): Correct syntax for cau instruction. + (load_multiple, store_multiple): Call change_address instead of + creating MEM from scratch. + +Thu Feb 20 16:39:15 1997 Jim Wilson + + * unroll.c (unroll_loop): Add check for naive loop that ends with + conditional branch that does not branch back to loop start. + + * reload1.c (reload): Move assign_stack_local call into main loop. + +Thu Feb 20 11:40:46 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (zero extension patterns): Turn into define_expand and + define_insn pair. + +Wed Feb 19 17:05:38 1997 Jeffrey A Law (law@cygnus.com) + + * pa.c (emit_move_sequence): Don't copy 0.0 (double precision) + directly to memory, go through a reg if reload hasn't started. + * pa.md (main movdf pattern): Don't allow 0.0 (double precision) + to be copied directly to memory. + + * pa/pa-hpux10.h (MD_EXEC_PREFIX): Define appropriately for hpux10. + (MD_STARTFILE_PREFIX): Similarly. + + * pa.h (ASM_OUTPUT_SECTION_NAME): Surround the section name + with '$' if not using GAS. + +Wed Feb 19 16:43:47 1997 J"orn Rennecke + + * sched.c (schedule_insns): If there was no first scheduling pass, + split instructions after reload. + (update_flow_info): Tolerate some idiosyncrasies after reload. + +Wed Feb 19 11:13:51 1997 Jeffrey A Law (law@cygnus.com) + + * combine.c (find_split_point): Don't turn a SIGN_EXTEND into + a series of shifts if either mode is a partial integer mode. + +Mon Feb 17 08:06:02 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * rs6000.c ({,non_}short_cint_operand): Use (unsigned HOST_WIDE_INT). + (non_add_cint_operand, includes_rshift_p): Likewise. + * rs6000.h (CONST_OK_FOR_LETTER_P): Likewise. + (LEGITIMATE_ADDRESS_INTEGER_P, LEGITIMIZE_ADDRESS): Likewise. + +Sun Feb 16 07:55:19 1997 J"orn Rennecke (amylaar@cygnus.co.uk) + + * libgcc2.c (__negdi2, __lshrdi3, __ashldi3, __ashrdi3, __ffsdi2): + Use ANSI style definition with full prototype. + (__muldi3, __udiv_w_sdiv, __udivmoddi4, __divdi3, __moddi3) : Likewise. + (__udivmoddi4, __udivdi3, __cmpdi2, __ucmpdi2) : Likewise. + (__fixunstfdi, __fixtfdi, __fixunsxfdi, __fixxfdi) : Likewise. + (__fixunsdfdi, __fixdfdi, __floatdixf, __floatditf) : Likewise. + (__floatdidf, __floatdisf, __fixunsxfsi, __fixunsdfsi) : Likewise. + (__gcc_bcmp, __eprintf, gopen, gclose, __bb_init_file) : Likewise. + (__bb_init_trace_func, __clear_cache, mprotect) : Likewise. + (__enable_execute_stack, cacheflush, exit) : Likewise. + (find_exception_table, __find_first_exception_table_match) : Likewise. + +Sun Feb 16 07:52:02 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.md (mulqihi3): Corrected. + (tst{hf,tqf}): Simplified. + (movqi): Removed redundant alternative. + (addqi-3,addqi-2,addqi-1): Set/Reset Bit patterns by C. Nettleton. + (many patterns): Introduced operand output modifiers d,t,b,B,w. + * 1750a.c (print_operand): New operand output modifiers d,t,b,B,w. + (simple_memory_operand): Removed. + (one_bit_set_p, which_bit): Added from C. Nettleton's m1750 config. + +Sun Feb 16 07:43:37 1997 Paul Eggert + + * cccp.c (special_symbol): Don't treat "L" in "L'...'" as identifier. + (check_macro_name, collect_expansion, rescan): Likewise. + * cpplib.c (special_symbol, check_macro_name, collect_expansion): + Likewise. + + * cexp.y (parse_c_expression): Don't check for null lexptr + or *lexptr == 0. If yyparse returns nonzero value, abort. + + * cexp.y (yylex): Use is_space, not is_hor_space, to find keyword end. + (is_space): New decl. + (is_hor_space): Removed. + * cccp.c (is_space): Now external. + (is_hor_space): Now static. + +Sun Feb 16 04:55:11 1997 Jason Merrill + + * toplev.c, tree.h (decl_printable_name): Change arguments. + * c-common.c (declare_function_name): Reflect above change. + * final.c (final_start_function): Likewise. + * function.c (init_function_start): Likewise. + * toplev.c (decl_name): Likewise. + (announce_function): Likewise. + (v_message_with_decl): Likewise. + * dwarf2out.c (dwarf2_name): New fn, uses decl_printable_name. + (add_pubname): Use it. + (add_name_and_src_coords_attributes): Use it, add + DW_AT_MIPS_linkage_name if appropriate. + (output_aranges): Use DW_AT_MIPS_linkage_name if present. + +Sat Feb 15 18:45:30 1997 J.T. Conklin + + * m68k.md (cmpsi): Added insn with appropriate constraints for + TARGET_5200; changed condition of existing insn to !TARGET_5200. + +Sat Feb 15 18:26:50 1997 Philippe De Muyter + + * m68k/hp320.h (PRINT_OPERAND_FLOAT): Removed. + (ASM_OUTPUT_{FLOAT,DOUBLE,LONG_DOUBLE}_OPERAND): Defined. + (PRINT_OPERAND): Turned off: use default. + * m68k/news.h (PRINT_OPERAND): Turned off: use default. + (ASM_OUTPUT_{FLOAT,DOUBLE,LONG_DOUBLE}_OPERAND): Defined. + * m68k/tower-as.h (PRINT_OPERAND): Turned off: use default. + (ASM_OUTPUT_{FLOAT,DOUBLE}_OPERAND): Defined. + * m68k/crds.h (PRINT_OPERAND): Turned off: use default. + (ASM_OUTPUT_{FLOAT,DOUBLE}_OPERAND): Defined. + (SGS_NO_LI,STRUCTURE_SIZE_BOUNDARY,IMMEDIATE_PREFIX): Defined. + (NEED_PROBE): Defined instead of HAVE_probe and gen_probe. + (FUNCTION_{PRO,EPI}LOGUE): Do not access FPA registers. + * m68k.c (output_function_prologue): Add CRDS and MOTOROLA probe code. + (print_operand): Do not output '.' if CRDS. + + * gcc.c (set_spec): Fix comment-in-comment typo. + +Sat Feb 15 17:54:23 1997 H.J. Lu (hjl@gnu.ai.mit.edu) + + * Makefile.in (COMPILERS): Moved before GCC_PASSES. + (GCC_PASSES): Use $(COMPILERS) instead of cc1$(exeext). + +Sat Feb 15 17:25:44 1997 Andreas Schwab + + * gcc.c (process_command): Allocate space for terminating null. + +Sat Feb 15 17:21:34 1997 Pat Rankin + + * vax/vax.h (FUNCTION_PROLOGUE): Adjust size by STARTING_FRAME_OFFSET. + * vax/vms.h (FUNCTION_PROLOGUE): Delete. + +Sat Feb 15 08:48:14 1997 Douglas B. Rupp (rupp@gnat.com) + + * configure: Fix setting of CC in no-symlink case. + +Sat Feb 15 08:42:17 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * expmed.c (expand_divmod): Prefer divmod in same mode over div + in wider mode. + +Sat Feb 15 08:27:50 1997 J"orn Rennecke (amylaar@cygnus.co.uk) + + * fold-const.c (fold): Don't assume a nonexplicit constant cannot + equal an explicit one. + + * i386.md (zero_extendqi[hs]i2+3): Ensure operating on REG. + +Sat Feb 15 08:11:04 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure (i[3456]86-*-solaris2*): Correct tm.h filename in + stabs case. + + * a29k.h (STORE_FLAG_VALUE): Write so works on both 32 and 64-bit host. + +Fri Feb 14 16:03:37 1997 Robert Lipe + + * i386/t-sco5 (libgcc{1,2}-elf.a): correct target dependencies. + +Fri Feb 14 16:00:23 1997 H.J. Lu + + * config/svr4.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Set + current-section variable to text. + +Wed Feb 12 16:07:34 1997 Brendan Kehoe + + * fixinc.irix: New file. + * configure (mips-sgi-irix[56]): Set fixincludes to fixinc.irix. + +Wed Feb 12 15:40:20 1997 Jim Wilson + + * Makefile.in (LIBGCC2_DEBUG_CFLAGS): New macro. + (LIBGCC2_CFLAGS): Use it. + + * dwarfout.c (output_type): Do early exit only if TYPE_CONTEXT is NULL + or if TYPE_CONTEXT is another type (e.g. a nested type). + +Tue Feb 11 15:53:51 1997 J"orn Rennecke + + * sh.c (calc_live_regs): Exclude RETURN_ADDRESS_POINTER_REGNUM. + + * 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 + + * pa.h (RETURN_ADDR_RTX): Fix to ignore export stubs. + * pa.c (return_addr_rtx): Define. + +Fri Feb 7 13:56:56 1997 Doug Evans + + * cse.c (invalidate_from_clobbers): Delete unnecessary test for + (clobber nil). + + * toplev.c (main): Delete redundant settings of flag_no_inline + and warn_inline if not optimizating. + +Fri Feb 7 10:45:02 1997 Jeffrey A Law (law@cygnus.com) + + * Makefile.in (stmp-multilib-sub): Add missing "else true" + clauses to work around make bug on some systems. + +Fri Feb 7 08:19:43 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (const_binop): Don't call size_int if low < 0. + + * function.c (instantiate_virtual_regs_1, case USE, CLOBBER): + Fix error in last change. + +Thu Feb 6 17:09:17 1997 Mike Stump + + * except.c (find_exception_handler_labels): Initialize label array + with zeroes. + +Wed Feb 5 22:11:55 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (post_ldwm): Fix typos. + +Wed Feb 5 15:57:42 1997 Doug Evans + + * m68k/vxm68k.h (WCHAR_TYPE,WCHAR_TYPE_SIZE,SIZE_TYPE): Fix. + (PTRDIFF_TYPE): Define. + +Wed Feb 5 11:19:13 1997 Ian Lance Taylor + + * reload1.c (alter_reg): Don't ask assign_stack_local to round up + to a multiple of BIGGEST_ALIGNMENT, unless a register appears in a + paradoxical subreg. + +Tue Feb 4 19:29:40 1997 Jim Wilson + + * reload.c (find_reloads_address_1, case POST_INC): Don't use + ADDR_TYPE here. + +Tue Feb 4 12:33:45 1997 Jeffrey A Law (law@cygnus.com) + + * flow.c (life_analysis): Delete obvious no-op moves + which use SUBREGs. + +Mon Feb 3 20:00:35 1997 Jim Wilson + + * jump.c (find_cross_jump): Don't allow old-style and volatile asms + to match. + +Mon Feb 3 15:51:31 1997 Doug Evans + + * sparc/sol2.h (ASM_SHORT,ASM_LONG): Set to .uahalf/.uaword. + * sparc/sysv4.h (ASM_LONG): Define. + (ASM_OUTPUT_{FLOAT,DOUBLE,LONG_DOUBLE}): Use ASM_LONG. + +Mon Feb 3 13:01:46 1997 Ian Lance Taylor + + * reload.h (enum reload_type): Add RELOAD_FOR_INPADDR_ADDRESS and + RELOAD_FOR_OUTADDR_ADDRESS. + * reload.c (ADDR_TYPE): New macro. + (push_secondary_reload): Check for new reload types. + (combine_reloads): Likewise. + (find_reloads): Likewise. Convert INPADDR_ADDRESS and + OUTADDR_ADDRESS to OPADDR_ADDR. Check OPADDR_ADDR when looking + for merges. + (find_reloads_address): When reloading an address, use the + ADDR_TYPE macro to get the type of the new reload. + (find_reloads_address_1): Likewise. + (reload_when_needed_name): Add new reload types. + * reload1.c (reload): Add in_addr_addr and out_addr_addr fields to + insn_needs struct. Use them for new reload types, and when + computing in_max and out_max. + (reg_used_in_inpaddr_addr): New static array. + (reg_used_in_outaddr_addr): New static array. + (mark_reload_reg_in_use): Handle new reload types. + (clear_reload_reg_in_use, reload_reg_free_p): Likewise. + (reload_reg_free_before_p, reload_reg_reaches_end_p): Likewise. + (reloads_conflict, merge_assigned_reloads): Likewise. + (emit_reload_insns): Likewise. + (choose_reload_regs): Save arrays for new reload types. + +Sun Feb 2 19:43:17 1997 Scott Christley + + * objc/selector.c (__sel_register_typed_name): Eliminate compiler + warnings with explicit cast. + + * Add condition mutex support to the objc runtime. + * objc/thr-mach.c (objc_condition_{,de}allocate): New functions. + (objc_condition_{wait,broadcast,signal}): New functions. + * objc/thr-pthreads.c (objc_condition_{,de}allocate): New functions. + (objc_condition_{wait,broadcast,signal}): New functions. + * objc/thr-solaris.c (objc_condition_{,de}allocate): New functions. + (objc_condition_{wait,broadcast,signal}): New functions. + * objc/thr.h: Prototypes for new functions. + + * objc/init.c (__objc_runtime_mutex): Eliminate leading underscore + from name of objc mutex and thread structures. + * objc/runtime.h: Likewise. + * objc/thr-{decosf1,irix,mach,os2,posix,pthreads,single}.c: Likewise. + * objc/thr-{solaris,win32}.c: Likewise. + * objc/thr.{c,h}: Likewise. + + * Major reorganization of objc error handling. + * objc/Object.m (-error:): Call objc_error function instead of + using function pointer. + * objc/archive.c: Replace call to abort or __objc_fatal functions + with call to objc_error function throughout the complete file. + * objc/class.c (objc_get_class): Replace call to abort function + with call to objc_error function. + * objc/encoding.c (objc_sizeof_type, objc_alignof_type): Replace + call to abort function with call to objc_error function. + (objc_skip_typespec): Likewise. + * objc/init.c (init_check_module_version): Replace call to + abort function with call to objc_error function. + * objc/misc.c (objc_verror): New function. + (objc_fatal): Remove function. + (objc_set_error_handler): New function. + (_objc_error_handler): New global variable. + (__alpha__): Remove unneeded code. + (objc_error): Allow user specified error handler function to + trap and handle the objc error. Added an error code parameter + which indicates the specific error that occured. + (objc_malloc, objc_atomic_malloc): Replace call to objc_fatal + function with call to objc_error function. + (objc_valloc, objc_realloc, objc_calloc): Likewise. + * objc/objc-api.h: Declare error handling functions and typedef + for user specified error handler function. Define error codes + used by the runtime library. + * objc/runtime.h: Remove error handling declarations. + * objc/sendmsg.c (__objc_forward): Replace call to abort function + with call to objc_error function. + +Sun Feb 2 19:42:52 1997 Thomas Baier + + * objc/hash.c (hash_delete): Step through the hash nodes + versus using hash_next to increase efficiency. + * objc/archive.c (__objc_finish_read_root_object): Use hash + table instead of list. + +Sun Feb 2 08:25:05 1997 Ovidiu Predescu + + * objc-act.c (encode_aggregate_within): New function. + (encode_aggregate): Generates encodings for unions similar + to those for structs except surrounded by parenthesis instead + of braces. + +Sun Feb 2 07:15:54 1997 Mat Hostetter (mat@lcs.mit.edu) + + * c-decl.c (start_function): Fix improper installation of last change. + +Sun Feb 2 06:50:55 1997 Andreas Schwab + + * m68k.c (output_scc_di): Add missing CC_STATUS_INIT. + +Sun Feb 2 06:39:55 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c (process_init_element): When popping levels, don't + blow up if constructor_max_index not set due to previous error. + + * combine.c (find_split_point, case SET): Fix error in last change. + +Sun Feb 2 06:28:56 1997 Paul Eggert + + * cccp.c (rescan): Insert a space after `.' as well, + to prevent accidental token-pasting (e.g. `.x' -> `.10'). + +Sun Feb 2 06:08:14 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.c (modregno_adjust): Fixed case when reg_renumber invalid. + +Sat Feb 1 19:11:08 1997 J.T. Conklin + + * m68k.md (movqi): Enable use of clr and st insns on TARGET_5200. + * m68k.c (output_move_simode_const): Likewise. + +Sat Feb 1 18:54:00 1997 Douglas B. Rupp (rupp@gnat.com) + + * gcc.c (process_command): Fix improper use of strncpy. + +Fri Jan 31 15:35:08 1997 Mike Stump + + * libgcc2.c: Remove extern for malloc and realloc. + +Fri Jan 31 17:08:11 1997 Ian Lance Taylor + + * local-alloc.c (update_equiv_regs): If 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 + + * i386.md (idiv,imul,fpmul): Added new functional units for pentiumpro. + + * i386.c (pentiumpro_cost): Added new cost structure for pentiumpro. + (override_options): Set ix86_cost to appropriate cost structure. + +Thu Jan 30 09:34:26 1997 J.T. Conklin + + * m68k.md (stack adjust peepholes): Use lea instead of + add.w when adding 16 bit constants on all but TARGET_68040. + +Thu Jan 30 08:58:08 1997 Ralf Baechle + + * function.c (TRAMPOLINE_ALIGNMENT): Provide default. + (expand_function_end): Use TRAMPOLINE_ALIGNMENT instead + of FUNCTION_BOUNDARY. + * varasm.c (TRAMPOLINE_ALIGNMENT): Provide default. + (assemble_trampoline_template): Use TRAMPOLINE_ALIGNMENT instead + of FUNCTION_BOUNDARY. + +Wed Jan 29 18:16:02 1997 J"orn Rennecke + + * sh.h (REG_CLASS_CONTENTS): Add rap to GENERAL_REGS and its + superclasses. + + * sh.md (movsi_i, movsi_ie, movhi_i, movhi+1): Use type pcload for + immediate operands where appropriate. + (movsf_ie+1): Fail when loading anything but a MEM into + a floating point reguister. + +Wed Jan 29 16:00:31 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * varasm.c (force_const_mem): Set MARK instead of clearing it. + (output_constant_pool): Only mark constant pool if -O. + Check mark flag unconditionally. + (mark_constant_pool): Start by clearing all mark flags. + + * tree.c (copy_node): Clear TREE_ASM_WRITTEN. + + * flow.c (regno_uninitialized): Return 0 if reg is used for args. + +Wed Jan 29 15:23:59 1997 Ian Lance Taylor + + * combine.c (try_combine): Clear reg_n_refs if i2dest is not + mentioned in newi2pat. + +Tue Jan 28 16:00:23 1997 Stan Cox (coxs@dg-rtp.dg.com) + + From Robert Lipe + * i386/sco5.h (SCO_DEFAULT_ASM_COFF): Remove bytecode stuff. + (ASM_OUTPUT_ASCII): Use .ascii in both ELF and COFF modes. + (ASM_OUTPUT_SECTION_NAME): Handle alternate sections for COFF. + The OpenServer 5.0.0 assembler gives an error for section + names over 6 characters long, so we catch the "obvious" case + and shorten it. + + * m88k.h (ASM_OUTPUT_SECTION_NAME): Undefine; fails + for exception sections. The 88k ABI specifies 'section' + instead of '.section'. + +Mon Jan 27 13:32:46 1997 J"orn Rennecke + + * sh.c (shl_and_kind): Fix typo. + * sh.md (and_shl_scratch): Fix typo for length 8. + +Mon Jan 27 08:56:03 1997 Jeffrey A Law (law@cygnus.com) + + * fixincludes: 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 + + * varasm.c (struct pool_constant): Add mark field. + (force_const_mem): Clear mark field in new constant pool entry. + (output_constant_pool): Call mark_constant_pool. + (mark_constant_pool, mark_constants): New static functions. + +Thu Jan 23 15:04:17 1997 Ian Lance Taylor + + * cse.c (COST): Get the right cost for a SUBREG of a register when + truncation is free. + +Thu Jan 23 11:19:40 1997 Mike Stump + + * Makefile.in (objc-headers): Don't try and install the headers if + the objc directory has been removed. + +Wed Jan 22 13:26:25 1997 Brendan Kehoe + + * i960.c (process_pragma): Call ungetc on the last character + that was read by the while loop, to make sure the parser sees it. + +Tue Jan 21 17:20:30 1997 Michael Meissner + + * rs6000.c (output_toc): Move STRIP_NAME_ENCODING to common + code, so the test for vt's works with -mminimal-toc. + +Tue Jan 21 16:03:35 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (mark_all_temps_used): Set KEEP as well. + +Tue Jan 21 12:16:15 1997 Doug Evans + + * stor-layout.c (layout_record): Correct test for whether + field spans its unit of alignment in case where + field_size == type_align. + +Mon Jan 20 20:27:54 1997 Ian Lance Taylor + + * mips.md (probe): Comment out. + +Sun Jan 19 20:54:45 1997 John F. Carr + + * integrate.c (expand_inline_function): Handle a PARALLEL containing + a RETURN the same as a RETURN. + +Sun Jan 19 20:35:28 1997 Pat Rankin + + * vmsconfig.com: Change all hardcoded references of "vax" to + use variable expansion instead. + (arch_indx, arch): New variables. + + * vax.c (not_qsort): Don't declare alloca. + * vax/xm-vms.h: Declare alloca here. + Do most of the VAX C-specific set up for DEC C. + #if DEC C, undefine QSORT_WORKAROUND and qsort. + * make-gcc.com, make-cccp.com, make-cc1.com: Support building + with GNU C vs VAX C vs DEC C from the DCL command line. + +Sun Jan 19 17:20:50 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.md (movh[if]-1): Corrected. + (movtqf-1): Deleted. + * 1750a.c (add_1_to_mem): Deleted. + (output_operand_address): Added output modifier 'A'. + +Sun Jan 19 17:17:54 1997 Philippe De Muyter + + * m68k.md (ashrdi_const, ashrdi3): Allow 31 as shift count. + + * m68k.h (CONST_OK_FOR_LETTER_P): Recognize 'N', 'O' and 'P'. + * m68k.md (rotl[shq]i3, strict_low_part rotl): Allow 'N', 'O' + or 'P' operands. + +Sun Jan 19 17:09:17 1997 Andreas Schwab + + * m68k.md (addsi3): Fix previous change: {add,sub}qw should + be {add,sub}ql. For other uses of {add,sub}q don't check for address + register and always use {add,sub}ql. + +Sun Jan 19 15:05:42 1997 Peter Seebach + + * c-decl.c (start_decl): Add code for -Wmain. + (c_decode_option): Add -fhosted, -ffreestanding, and -Wmain. + * toplev.c (lang_options): Likewise. + * c-tree.h (warn_main, flag_hosted): New variables. + +Sun Jan 19 14:35:41 1997 Alex Garthwaite (alex@samwise.cis.upenn.edu) + + * fixinc.svr4: Fix problems with symlinks to ".". + +Sun Jan 19 14:21:46 1997 Craig Burley + + * loop.c (check_final_value): Handle insns with no luid's. + +Sun Jan 19 08:57:26 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.md (arg_home): Add CLOBBER of MEM and USE of arg regs. + * vms.h (SETUP_INCOMING_VARARGS): Delete duplicate definition. + + * toplev.c (set_float_handler): Set up signal catcher on first call + in case a front end has disabled it. + + * cccp.c, cexp.y: #define __attribute__ to be null if + compiling with GCC older than 2.7, not 2.6. + + * toplev.c (main): If PREFERRED_DEBUGGING_TYPE used and set + to NO_DEBUG, say debugging not supported. + * mips/sni-svr4.h (PREFERRED_DEBUGGING_TYPE): Undefine. + + * i386/xm-cygwin32.h (DIR_SEPARATOR): Define. + + * explow.c (convert_memory_address, case SYMBOL_REF): + Copy CONSTANT_POOL_ADDRESS_P. + * integrate.c (save_constants): Make (address (const ..)) to record + both modes. + (copy_for_inline, copy_rtx_and_substitute, restore_constants): Use + both modes when restoring constant pool entry for ADDRESS. + + * alpha.h (MINIMUM_ATOMIC_ALIGNMENT): New macro. + + * function.c (instantiate_virtual_regs_1, case USE, case CLOBBER): + Properly handle case of shared MEM whose replacement is not valid. + +Sat Jan 18 14:08:31 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (get_unwidened): Don't crash if FIELD_DECL not layed out. + + * varasm.c (const_hash): Treat NON_LVALUE_EXPR like CONVERT_EXPR. + (compare_constant_1, copy_constant, bc_assemble_integer): Likewise. + (const_hash, compare_constant_1): Use switch, not if-then-else. + +Fri Jan 17 17:10:20 1997 Ian Lance Taylor + + * mips.h (STACK_POINTER_OFFSET): Don't define. + +Thu Jan 16 14:51:03 1997 Bob Manson + + * cplus-dem.c: Fix indenting; note that this file also lives in + libiberty. + (do_type, case 'M'): Check for a template as well as a class. + +Thu Jan 16 15:08:26 1997 Michael Meissner + + * gcc.c (cross_compile): Change to be a char * like all of the + other specs. + (process_command): Change how cross_compile is tested. + (main): Likewise. + (struct spec_list): Merge with the format used by EXTRA_SPECS. + Add name length field to speed up repeated calls to strcmp. Add + flag to say spec was allocated. Add pointer to char * so that + static spec fields can be updated. + (extra_specs): Use struct spec_list as type. + (static_specs): Static list of predefined specs. + (init_specs): New function, initialize the specs list. Link in + the default specs and any specs defined via EXTRA_SPECS. + (set_spec): No longer special case predefined specs. + (process_command,validate_all_switches): Ditto. + (process_command): Call init_specs for -dumpspecs. + (do_spec_1): Use name length field to avoid calling strncmp when + it is going to fail. + (main): Call init_spec. Don't handle EXTRA_SPECS here. + +Thu Jan 16 17:07:54 1997 Eddie C. Dost + + * configure: Add sparc-linux{,aout} support. + * ginclude/va-sparc.h: Likewise. + * sparc/linux.h: New file. + * sparc/linux-aout.h: New file. + * sparc/xm-linux.h: New file. + +Thu Jan 16 16:19:13 1997 Jim Wilson + + * configure (sparc-*-aout*): Add libgloss.h to tm_file. + (sparclite-*-coff*): Change "= to =". + +Thu Jan 16 12:53:15 CST 1997 Joel Sherrill + + * rs6000/rtems.h: Change from being sysv4 based to being eabi based. + +Thu Jan 16 13:40:51 1997 Jim Wilson + + * mips.h (LINKER_ENDIAN_SPEC): Define. + (LINK_SPEC): Add linker_endian_spec. + (EXTRA_SPECS): Add linker_endian_spec. + +Thu Jan 16 08:02:13 1997 Jeffrey A Law (law@cygnus.com) + + * mn10300.md (bCC, inverted bCC): Use bCC .+X instead of bCC 0f. + +Wed Jan 15 14:06:28 1997 Ian Lance Taylor + + * reload.h (reload_address_base_reg_class): Declare. + (reload_address_index_reg_class): Declare. + * reload1.c (reload_address_base_reg_class): Define. + (reload_address_index_reg_class): Define. + (init_reload): Initialize reload_address_{base,index}_reg_class. + * reload.c (find_reloads_address): Use + reload_address_base_reg_class rather than BASE_REG_CLASS. Use + reload_address_index_reg_class rather than INDEX_REG_CLASS. + (find_reloads_address_1): Likewise. + +Tue Jan 14 15:26:33 1997 Ian Lance Taylor + + * reload.c (REGNO_MODE_OK_FOR_BASE_P): Define if not defined. + (REG_MODE_OK_FOR_BASE_P): Define if not defined. + (find_reloads_address): Use REG[NO]_MODE_OK_FOR_BASE_P rather than + REG[NO]_OK_FOR_BASE_P. + (find_reloads_address_1): Likewise. + Add mode parameter; change all callers. + + * reload1.c (eliminate_regs_in_insn): Handle more cases when + eliminating the frame pointer to the hard frame pointer. + + * varasm.c (force_const_mem): Copy a CONST_INT rtx like a CONST rtx. + + * varasm.c (assemble_end_function): Call + output_after_function_constants. + (after_function_constants): New static variable. + (output_after_function_constants): New static function. + (output_constant_def): Check CONSTANT_AFTER_FUNCTION_P. + +Mon Jan 13 16:44:40 1997 David Edelsohn + + * rs6000/aix41.h (CPP_PREDEFINES): Add -D_AIX41. + +Sun Jan 12 20:54:01 1997 Jim Wilson + + * libgloss.h (LINK_SPEC): Delete. + (STARTFILE_SPEC): Delete spurious newline. + +Sat Jan 11 00:13:03 1997 Torbjorn Granlund + + * mips.md (norsi3, nordi3): Use canonical RTL. Prepend `*' to pattern + name. Don't match immediates. + (norsi3_const, nordi3_const): New patterns. + (anddi3, iordi3, xordi3): Test TARGET_64BIT, not mips_isa + in length attribute calculation. + * mips.c (complemented_arith_operand): New function. + (print_operand): Handle `e' for CONST_INT. + * mips.h (PREDICATE_CODES): Add complemented_arith_operand. + +Fri Jan 10 14:11:53 1997 David Edelsohn + + * rs6000/aix41.h (SUBTARGET_SWITCHES): Add threads and pe. + (CPP_SPEC): Add mpe and mthreads cases. + (LIB_SPEC): Add mpe and mthreads cases to variant from rs6000.h. + (STARTFILE_SPEC): Add mpe and mthreads support. + +Fri Jan 10 07:12:26 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * i386/cygwin32.h (LINK_SPEC): New definition. + + * Makefile.in (FLAGS_TO_PASS): Add STAGE_PREFIX, set by configure. + * configure: Initialize exeext. + Update STAGE_PREFIX in Makefile. + + * dwarfout.c (dwarfout_line): Push to LINE_SECTION after calling + lookup_filename. + +Thu Jan 9 12:06:04 1997 Jim Wilson + + * i386.md (addsidi3_2): Add & to operand 0 of alternative 5. + +Thu Jan 9 12:06:04 1997 Stan Cox + + From Linus Torvalds and Mat Hostetter: + * i386.c (i386_sext16_if_const): Added to sign extend 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 + + * c-parse.in (extension): New rule for __extension__. + (extdef, unary_expr, decl, component_decl): Use it. + +Mon Jan 6 15:44:37 1997 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.c: Now includes regs.h. + ({movcnt,mod}_regno_adjust): Corrected typos. + * 1750a.md (movhi): Corrected case of moving constant to memory. + +Mon Jan 6 08:00:57 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * mips.h: Delete redundant definitions of compiler and library fns. + + * dwarfout.c (type_attribute): Ignore any subtype for now. + + * fold-const.c (operand_equal_p): Rework to consider two + expressions that have embedded identical SAVE_EXPRs as + equivalent; also handle some more cases. + +Sun Jan 5 23:54:34 1997 Jeffrey A Law (law@cygnus.com) + + * pa.md (pic_load_label): Fix test for using just an + ldo rather than an addil;ldo sequence to load the label's + address. + +Sun Jan 5 07:26:47 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case COMPONENT_REF): Fix error in last + change: don't suppress conversion if just EXPAND_SUM. + +Sat Jan 4 18:44:01 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.h (struct tree_decl): saved_insns.i is HOST_WIDE_INT. + + * fold-const.c (const_binop): Rework to only make constants in + one place; always use size_int if small enough and of sizetype. + (size_int): Call force_fit_type. + (fold): Avoid ever changing type of input tree. + + * expr.c (get_inner_reference): Fix type error. + (expand_expr, case COMPONENT_REF): Don't convert if modifier + is EXPAND_CONST_ADDRESS, EXPAND_SUM, or EXPAND_INITIALIZER. + * tree.c (staticp, case COMPONENT_REF, BIT_FIELD_REF): Not + static if bitfield. + + * expr.c (expand_expr, case COMPONENT_REF): If taking value + from a CONSTRUCTOR, must mask/sign-extend if bitfield. + (expand_builtin, case BUILT_IN_LONGJMP): Pass type, not IDENTIFIER, + to second arg of RETURN_POPS_ARGS. + + * expr.c (expand_expr, case COND_EXPR): Add additional cases + to "singleton" cases. + * tree.c (integer_pow2): Mask value to width of type. + (tree_log2): New function. + + * expmed.c (store_fixed_bit_field): If not SLOW_UNALIGNED_ACCESS, + treat everything as maximally aligned. + + * combine.c (find_split_point, case SET): If SET_SRC is NE and + STORE_FLAG_VALUE is -1, see if we can convert into NEG of shift. + (force_to_mode, case NE): Make condition stricter. + + * calls.c (emit_library_call_value): Remove redundant check for + outmode != VOIDmode. + +Sat Jan 4 08:12:16 1997 J.T. Conklin + + * Optimizations from John Vickers (john@rhizik.demon.co.uk): + * m68k.c (output_function_{pro,epi}logue): Use addq/subq when + adjusting stack pointer by small displacements. + * m68k.md (addsi3, addhi3): Use two addqw (or subqw) insns when + adding (or subtracting) small integer constants (8 < N <= 16) to + both address and data registers. + +Sat Jan 4 07:06:07 1997 Kamil Iskra + + * loop.c (basic_induction_var): Return 0 if SUBREG is not a + promoted variable. + +Sat Jan 4 06:22:36 1997 Doug Rupp (rupp@gnat.com) + + * alpha.c (vmskrunch): Try to not chop trailing uppercase letters. + * alpha/vms.h (ENDFILE_SPEC): Use "gnu", not "gnu_cc". + + * cccp.c (PRINTF_PROTO): Use __printf__ in __attribute__, not printf. + * cexp.y (PRINTF_PROTO): Likewise. + +Fri Jan 3 09:01:00 1997 Craig Burley + + * alpha.md (cmov): Fix operand numbers in case involving DF target, + DF comparison, and SF source. + +Fri Jan 3 08:19:46 1997 Paul Eggert + + * cpplib.c (macroexpand): Delete any no-reexpansion marker following + identifier at beginning of an argu concatenated with what precedes it. + +Fri Jan 3 07:59:21 1997 Ken Rose (rose@netcom.com) + + * reorg.c (fill_slots_from_thread): Skip moved insn in all three cases. + +Fri Jan 3 07:51:44 1997 Bob Manson + + * function.c ({push,pop}_function_context_to): Save and restore + current_function_args_info. + * function.h (struct function): New field args_info. + +Fri Jan 3 06:55:09 1997 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * jump.c (rtx_equal_for_thread_p): Return 0 for floating-point. + + * reload.c (find_reloads): If replaced a PLUS or MULT with a + simple operand, start over again. + + * va-alpha.h: Check for __VMS__, not VMS. + +Thu Jan 2 08:52:51 1997 Richard Kenner + + * configure: Finish restoring change of default of objc threads to + "single" for Linux. + +Mon Dec 30 17:03:46 1996 Jeffrey A Law (law@cygnus.com) + + * pa.c (fmpy_operands): Remove. No longer needed. + (combinable_add, combinable_copy, combinable_fmpy): Likewise. + (combinable_fadd, combineable_fsub): Likewise. + (pa_reorg): Call pa_combine_instructions. + (pa_combine_instructions): Combine instructions to make things + like fmpyadd and fmpysub. + (pa_can_combine_p): Helper function for pa_combine_instructions. + * pa.md (pa_combine_type): New attribute. Set it appropriately + for various insns. + (define_delays): Use a separate define_delay for unconditional + branches. + (fmpyadd, fmpysub peepholes): Remove, no longer needed. + (fmpyadd, fmpysub insns): Add variant with fadd/fsub first, + then the fmpy. + +Mon Dec 30 14:43:51 1996 Jim Wilson + + * reg-stack.c (subst_stack_regs_pat): Set src_note explicitly, instead + of using invalid aggregate initialization. + + * print-tree.c (print_node): Don't try to print nonexistent + TYPE_ATTRIBUTES field of a decl node. + +1996-12-30 Richard Stallman + + * config.sub: Handle hiuxmpp as system type. + +Thu Dec 26 13:33:27 1996 Michael Meissner + + * rs6000.md (init_v4_pic): Explicitly set the length. + +Mon Dec 23 19:39:38 1996 Jim Wilson + + * mips.h (FUNCTION_ARG_REGNO_P): Correct for TARGET_SOFT_FLOAT and + TARGET_FLOAT64 cases. + + * integrate.c (function_cannot_inline_p): Reject function with + PARALLEL result. + (expand_inline_function): Abort if function result not handled. + +Sat Dec 21 04:02:46 1996 Jason Merrill + + * mips.c (save_restore_insns): Mark large frame setup insns + as frame-related. + (mips_expand_prologue): Likewise. + + * dwarf2out.c (dwarf2out_frame_debug): Support MIPS large frames. + (add_bound_info): Use default lower bounds. + Handle simple variable bounds with a DIE ref. + Don't generate a NULL loc descr. + (add_subscript_info): Always add lower bound. + (gen_formal_parameter_die): Always equate_decl_number_to_die. + (gen_variable_die): Likewise. Don't use the old die for automatic + variables. + +Wed Dec 18 10:23:46 1996 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (notice_update_cc): Enable this code. + * mn10300.h (CC_OVERFLOW_UNUSABLE): Define. + * mn10300.md (tstsi): Use "set_zn_c0" instead of "set" for cc status. + (addsi3 pattern): Break "inc" into two different alternatives + since "inc dn" sets cc0, but "inc an" does not. + (multiply and divide patterns): Fix cc status. + (bCC, inverted bCC): Restore any comparison which needs the + overflow bits when CC_OVERFLOW_UNUSABLE is set. + (zero and sign extensions): Fix cc status. + (movm_store): Likewise. + +Tue Dec 17 15:02:44 1996 Jim Wilson + + * sched.c (update_flow_info): When add REG_DEAD notes for dest of + last insn, add check for global_regs. + +Tue Dec 17 11:07:26 1996 Michael Meissner + + * rs6000/win-nt.h (HAS_INIT_SECTION): Delete, so that __main is + called from main. + +Mon Dec 16 15:28:44 1996 Jim Wilson + + * combine.c (nonzero_bits): Ifdef out calls to num_sign_bit_copies. + Add dummy define/undef for num_sign_bit_copies. + + * dwarfout.c (location_or_const_value_attribute, case CONCAT): Add. + + * combine.c (simplify_comparison): Use mode_width as shift count + only if it is less than or equal to HOST_BITS_PER_WIDE_INT. + +Mon Dec 16 10:10:11 1996 Jeffrey A Law (law@cygnus.com) + + * mn10300.c (expand_epilogue): Restore registers in the + "ret" instruction instead of a separate movm instruction. + Support possible stack deallocation in "ret" instruction too. + * mn10300.md (return_internal): Use "ret" instead of "rets"; + restore registers and deallocate stack as needed. + (load_movm): Delete unused pattern. + + * mn10300.h (SMALL_REGISTER_CLASSES): Define. + +Fri Dec 13 14:46:54 1996 J"orn Rennecke + + * sh.md (dect): Rewrite pattern so that it can be combined. + +Fri Dec 13 13:14:51 1996 Ian Lance Taylor + + * varasm.c (output_constant_pool): If ASM_OUTPUT_POOL_EPILOGUE is + defined, call it. + +Thu Dec 12 20:04:55 1996 Jason Merrill + + * rtl.h (RTX_FRAME_RELATED_P): New macro. + (struct rtx_def): Add frame_related bitfield. + * final.c (final_scan_insn): Call dwarf2out_frame_debug. + Don't call dwarf2out_begin_function. + (final): Initialize dwarf2out_frame_debug. + * dwarf2out.c (dwarf2out_begin_function): Remove. + (dwarf2out_init): Use INCOMING_RETURN_ADDR_RTX. + (DWARF_CIE_DATA_ALIGNMENT): Generalize. + (DWARF_FRAME_REGNUM): Don't add 1. + (decode_cfi_rtl): Lose. + (dwarf2out_def_cfa): Now takes reg and offset directly. + (reg_save): Likewise. + (dwarf2out_reg_save): Now takes offset. + (initial_return_save): Grok INCOMING_RETURN_ADDR_RTX. + Replaces dwarf2out_return_save. + (dwarf2out_cfi_label): New fn. + (add_fde_cfi): Use it. + (dwarf2out_frame_debug): New fn. + * mips.h (DWARF_FRAME_REGNUM): Tweak r31. + (INCOMING_RETURN_ADDR_RTX): Define. + * mips.c (mips_expand_prologue): Set RTX_FRAME_RELATED_P as needed. + (save_restore_insns): Likewise. + * i386.c (ix86_expand_prologue): Likewise. + * i386.h (INCOMING_RETURN_ADDR_RTX): Define. + (DWARF_FRAME_RETURN_COLUMN): Define. + + * dwarf2out.c (add_AT_long_long): Renamed from add_AT_double 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 + + * 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 + + * 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 + + * i386.c (i386_return_pops_args): Libcalls ignore TARGET_RTD. + +Thu Dec 12 07:56:03 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.h (maybe_get_identifier): New declaration. + + * calls.c (emit_library_call): Don't pass VOIDmode to type_for_mode. + + * va-alpha.h: Add definitions for VMS; they differ from Unix. + + * Makefile.in (stamp-objlist): Handle first character of object + file being a digit. + + * 1750a.h (function_arg, {movcnt,mod}_regno_adjust): Add decls. + (branch_or_jump): Likewise. + (FUNCTION_ARG): Remove cast of function_arg result to rtx. + * 1750a.md: Remove unneeded casts to char *. + +Thu Dec 12 05:55:27 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.c (arm_gen_constant, case [IX]OR): Don't invert constant if + loading into temporary. + +Wed Dec 11 18:57:21 1996 Brendan Kehoe + + * toplev.c (rest_of_compilation): Make sure unwinder RTL is saved. + + * collect2.c (write_c_file): Wrap the ctor/dtor lists and fns + with `extern "C" { ... }'. + +Wed Dec 11 17:46:48 1996 John F. Carr + + * tree.h (tree_decl): Reorder field declarations to reduce size + on 64 bit machines. + + * combine.c (try_combine): When splitting an insn, check for the + new I2 setting a SUBREG. + +Wed Dec 11 17:00:47 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of + using "%ld". + (output_prolog): Don't print useless comment for VMS. + + * alpha.c (output_prolog): SIZE is now HOST_WIDE_INT. + * alpha.md (mov[hq]i unnamed): Split up for TARGET_BYTE_OPS and not. + + * function.c (fixup_var_refs_1, case ZERO_EXTRACT): Don't call + fixup_memory_subreg if no longer SUBREG of MEM. + +Wed Dec 11 14:10:48 1996 Jeffrey A Law (law@cygnus.com) + + * mn10300.c: New file for Matsushita MN10300 port. + * mn10300.h, mn10300.md, t-mn10300, xm-mn10300.h: Likewise. + * config.sub: Recognize mn10300 as a basic machine type. + * configure: Similarly. + * ginclude/stdarg.h: mn10300 is little endian. + * ginclude/varargs.h: Likewise. + +Wed Dec 11 09:09:10 1996 Nagai Takayuki + + * libgcc2.c (cacheflush): Add SONY NEWS-OS 4.2 version. + +Wed Dec 11 09:01:39 1996 J"orn Rennecke + + * calls.c (emit_library_call, emit_library_call_value): + Don't pass an identifier node as function type for + library functions, but rather build a function type that + has a return type with the correct mode. + * i386.c (i386_return_pops_args): Don't test for IDENTIFIER_NODE. + * i386/isc.h (obsolete RETURN_POPS_ARGS): Test first argument + for IDENTIFIER_NODE. + * i386/next.h (RETURN_POPS_ARGS): Likewise. + * i386/sco.h (RETURN_POPS_ARGS): Likewise. + * i386/sco5.h (RETURN_POPS_ARGS): Likewise. + * i386/scodbx.h (RETURN_POPS_ARGS): Likewise. + * m68k.h (RETURN_POPS_ARGS): Likewise. + * ns32k.h (RETURN_POPS_ARGS): Likewise. + * pyr.h (RETURN_POPS_ARGS): Likewise. + * gmicro.h (RETURN_POPS_ARGS): Likewise; fix typo. + +Tue Dec 10 17:36:47 1996 J.T. Conklin + + * Add optimizations from John Vickers (john@rhizik.demon.co.uk) + * m68k.h (TARGET_CPU32): New macro. + * m68k.md (add[hs]i3): Only use two addq.w or subq.w instructions + when adding or subtracting constants 8 < N < 16 on TARGET_CPU32. + Use lea instead of add.w when adding 16 bit constants to address + registers on all but TARGET_68040. + * m68k.c (output_function_{pro,epi}logue): Use lea instead of add.w + when adjusting stack pointer on all but TARGET_68040. + +Tue Dec 10 15:55:23 1996 Ian Lance Taylor + + * optabs.c (emit_unop_insn): Treat ZERO_EXTEND like SIGN_EXTEND. + +Tue Dec 10 13:47:24 1996 Joern Rennecke + + * combine.c (combinable_i3pat): Bring back to sync with can_combine_p. + + * sh.h (ADJUST_INSN_LENGTH): Don't break from loop when LOOP_BEG found. + Calculate padding in new variable pad. + +Mon Dec 9 18:00:38 1996 Jason Merrill + + * dwarf2out.c (output_uleb128): Output 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 + + * dwarf2out.c (add_pure_or_virtual_attribute): Only add + AT_containing_type if -g2 or higher. + + * dwarf2out.c (gen_struct_or_union_type_die): Make sure that + the type for AT_containing_type has been generated. + (gen_decl_die): Likewise. + + * dwarf2out.c (type_tag): Check DECL_IGNORED_P. + (add_pure_or_virtual_attribute): Check DECL_VINDEX instead. + (scope_die_for): Likewise. + * dwarfout.c (type_tag): Likewise. + +Wed Dec 4 22:51:38 1996 Jason Merrill + + * dwarf2out.c (decode_cfi_rtl): Support getting a CONST_INT. + (dwarf2out_begin_function): Adjust. + (reg_save): Divide offset by the alignment. + (output_cfi): Support having more than one advance_loc. + (output_call_frame_info): Re-initialize current_label. + (dwarf2out_begin_prologue): Initialize current_label to NULL. + (lookup_cfa, lookup_cfa_1): New fns. + (dwarf2out_def_cfa): Call lookup_cfa. + (dwarf2out_finish): Don't generate CIE CFIs. + (dwarf2out_init): Generate them here. + (DWARF_FRAME_RETURN_COLUMN): Use PC_REGNUM. + + (add_pure_or_virtual_attribute): Note virtual context. + (gen_formal_parameter_die): Return the die. + (gen_formal_types_die): Set AT_artificial on `this'. + (gen_subprogram_die): Add AT_accessibility. + (gen_variable_die): Likewise. + (gen_field_die): Likewise. Don't generate location attribute for + union members. + (gen_struct_or_union_type_die): Note where our vtable lives. + (gen_decl_die): Handle anonymous union fields. + (dwarf2out_decl): Always output `bool'. + +Mon Dec 2 03:55:15 1996 Jason Merrill + + * final.c (final_end_function): Don't call dwarf2out_end_function. + + * dwarf2out.c (output_line_info): Emit special opcodes for each line + entry, even if the line number doesn't change. + (pend_type, output_pending_types_for_scope): New fns. + (gen_struct_or_union_type_die): Use them to defer generating member + dies if we're in the middle of some other context. + (gen_type_die): Still put nested types in the right place. + (dwarf2out_decl): Call output_pending_types_for_scope. + + * dwarf2out.c (dw_fde_struct): Replace end_prologue, begin_epilogue + with current_label. + (DWARF_CIE_INSN_SIZE, DWARF_CIE_SIZE): Remove. + (DWARF_CIE_HEADER_SIZE): The size without the initial insns. + (size_of_cfi): Revert. + (decode_cfi_rtl, add_fde_cfi, dwarf2out_def_cfa, reg_save, + dwarf2out_reg_save, dwarf2out_return_save): New fns. + (dwarf2out_begin_function): Use them to generate CFIs. + (dwarf2out_finish): Use them to generate E CFIs. + Don't set next_fde_offset. + (calc_fde_sizes): Initialize cie_size. + (output_call_frame_info): Don't generate CIE CFIs. + (dwarf2out_end_function): Remove. + + * tree.c (maybe_get_identifier): New fn. + * varasm.c (assemble_name): Use it instead of get_identifier. + +Fri Nov 29 15:13:39 1996 Stan Cox + + * jump.c (jump_optimize): Don't move initialization if there is a + label between it and the jump for if (foo) bar++ to bar += (foo !=0) + +Wed Nov 27 16:21:14 1996 Stan Cox + + * Remove change of Oct 4. + * i386.h (outer_function_chain): Remove. + (current_function_calls_alloca): Remove. + (rtx_equal_function_value_matters): Remove. + (N_REGS_USED, N_ALLOCATABLE_REGISTERS): Remove. + * i386.md (adddi3_1, subdi3_1): Remove. + (adddi3, subdi3): Revert. + (movsf, movsf_mem, movsf_normal, movdf, movdf_mem, movdf_mem+1): + Likewise. + (movxf, movxf_mem, movxf_mem+1, addsidi3_1, addsidi3_2): Likewise. + (adddi3_1, subsidi3, subdi3_1): Likewise. + (addsidi3_1, addsidi3_2, subsidi3): Likewise. + (addsidi3_1, addsidi3_2, adddi3, subsidi3): Disable the problem + reload alternatives. + +Wed Nov 27 16:21:14 1996 J"orn Rennecke + + * i386.md (ashldi3_non_const_int, ashrdi3_non_const_int): + Use a hidden branch to handle shifts > 32 bit. + (lshrdi3_non_const_int): Likewise. + (floatdixf2): Don't use unnecessary XFmode operation. + +Wed Nov 27 15:23:41 1996 Jason Merrill + + * varasm.c (assemble_variable): Don't emit DWARF. + + * toplev.c (rest_of_type_compilation): Don't emit DWARF. + (main): Just let -gdwarf mean DWARF v1; remove -gdwarf-1. + + * dwarfout.c (decl_class_context): New fn. + (output_global_subroutine_die): Fix declaration case. + (output_global_variable_die): Likewise. + (output_type): Note when we are in a class defn. If we're a nested + type and our context hasn't been written, do that. Do early exit + for nested types. + (output_decl): Output the class context for fns and vars. + Don't emit detailed parm info for a fn declaration. + Use TYPE_DECL_IS_STUB, is_redundant_typedef. + (type_ok_for_scope): Support emitting nested types later. + (is_redundant_typedef): New fn. + (TYPE_DECL_IS_STUB): New macro. + (output_compile_unit_die): Check use_gnu_debug_info_extensions. + (output_local_subroutine_die, output_global_subroutine_die, + dwarfout_begin_function, dwarfout_end_function, dwarfout_line, + generate_macinfo_entry, dwarfout_init, dwarfout_finish): Likewise. + + * dwarf2out.c (decl_class_context): Static. + (lookup_type_die): Use TYPE_SYMTAB_POINTER. + (equate_type_number_to_die): Likewise. + (gen_subprogram_die): If we're in class context, it's a decl. + (gen_variable_die): Likewise. + (gen_decl_die): Output the containing type. + (dwarf2out_init): Lose type_die_table code. + +Wed Nov 27 08:30:54 1996 Brendan Kehoe + + * Makefile.in (DRIVER_DEFINES): New macro, with the macro + definitions for the driver. + (gcc.o): Make rule use $(DRIVER_DEFINES). + * gcc.c (process_command) [LANG_SPECIFIC_DRIVER]: Call + lang_specific_driver, passing along the addr of FATAL for errors + along with our ARGC and ARGV. + +Wed Nov 27 08:21:13 1996 Philippe De Muyter + + * m68k.md (iorsi_zexthi_ashl16): New pattern. + (ashrsi_16): New name for old unnamed pattern. + + * objc/misc.c (stdlib.h): Define __USE_FIXED_PROTOTYPES__ before + including stdlib.h. + +Wed Nov 27 08:17:34 1996 Joern Rennecke + + * i386.md (decrement_and_branch_until_zero+[3-8]): Add missing + CC_STATUS_INIT. + (decrement_and_branch_until_zero+[5-8]): Delete redundant assignment. + +Wed Nov 27 07:56:27 1996 J.T. Conklin + + * m68k.md ({and,ior,xor}si3_internal): Removed !TARGET_5200 from + conditionals now that entire insn is disabled when !TARGET_5200. + +Wed Nov 27 07:52:32 1996 Oliver Kellogg + + * 1750a.md (movhi pattern): Fixed MEM to MEM move problem. + +Tue Nov 26 14:50:54 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (move_by_pieces): Abort only if length positive at end. + * function.c (frame_offset, get_frame_size): Make HOST_WIDE_INT. + * function.h (struct function): Make frame_offset be HOST_WIDE_INT. + (get_frame_size): Add definition. + * reload1.c (reload): Make starting_frame_size be HOST_WIDE_INT. + +Mon Nov 25 16:55:14 1996 Jason Merrill + + * dwarf2out.c (dwarf2out_finish): Don't emit call frame info + for non-MIPS targets. + (is_redundant_typedef): New fn. + (modified_type_die): Refer to typedef DIEs where appropriate. + (gen_typedef_die): Support DECL_ORIGINAL_TYPE. + (gen_type_die): Likewise. Use is_redundant_typedef. + (gen_subprogram_die): Don't force a spec DIE for local class methods. + +Mon Nov 25 15:09:12 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * gcc.c (handle_braces): Rework last change. + +Mon Nov 25 13:49:51 1996 Jim Wilson + + * configure (build_exeext, exeext): New variables. Use sed to insert + build_exeext value into Makefile exeext rule. + (*-*-cygwin32): Set exeext. + * i386/x-cygwin32 (exeext): Delete. + * rs6000/x-cygwin32 (exeext): Delete. + + * dwarf.h (enum dwarf_location_atom): Add OP_MULT. + * dwarfout.c (output_mem_loc_descriptor, case MULT): Add. + * dwarfout2.c (mem_loc_descriptor, case MULT): Add. + + * dwarfout.c (dwarf_fund_type_name, case FT_unsigned_int64): Fix typo. + +Sun Nov 24 21:42:01 1996 J.T. Conklin + + * m68k.md (andsi3): Changed into define_expand. + (andsi3_internal): Rename from old andsi3, changed condition + to !TARGET_5200. + (andsi2_5200): New insn. + (iorsi3): Change into define_expand. + (iorsi2_internal): Rename from old iorsi3, changed condition + to !TARGET_5200. + (iorsi2_5200): New insn. + (xorsi3): Change into define_expand. + (xorsi2_internal): Rename from old xorsi3, changed condition + to !TARGET_5200. + (xorsi2_5200): New insn. + +Sun Nov 24 21:31:32 1996 John F. Carr + + * i386.h (N_ALLOCATABLE_REGISTERS): Remove extra backslash at + end of macro definition. + + * cpplib.c (LOCAL_INCLUDE_DIR): Remove default definition. + (include_defaults_array): Do not use LOCAL_INCLUDE_DIR or + TOOL_INCLUDE_DIR if they are not defined. + * cccp.c: Likewise. + + * Makefile.in (cppmain.o): New rule. + +Sun Nov 24 19:14:50 1996 Andreas Schwab + + * fold-const.c (merge_ranges): In (+,-) case, if lower bounds are + the same the result is always false. + +Sun Nov 24 18:48:31 1996 Richard Kenner + + * c-typeck.c (build_indirect_ref): Don't give warning for + dereferencing void * if evaluation is being skipped. + + * c-decl.c (poplevel): Don't call output_inline_function if + DECL_SAVED_INSNS is not set. + + * gcc.c (give_switch): Add new arg, INCLUDE_BLANKS. + (handle_braces): All callers changed. + Add support for new construct: %{S*^}. + +Sun Nov 24 18:44:48 1996 Paul Eggert + + * c-parse.in (unary_expr, expr_no_commas): Increment skip_evaluation + when analyzing an expression that is known not to be evaluated. + (sizeof, alignof): New rules. + * c-tree.h (skip_evaluation): New variable. + * c-common.c (skip_evaluation): Likewise. + (overflow_warning, unsigned_conversion_warning): Don't warn about + potential runtime errors when skipping evaluation. + * c-typeck.c (build_binary_op): Likewise. + (build_conditional_expr): op1 now always nonnull. + +Sun Nov 24 17:06:58 1996 Bernd Schmidt (crux@Pool.Informatik.RWTH-Aachen.DE) + + * toplev.c (rest_of_compilation): Call regscan before each + jump threading pass. + +Sun Nov 24 16:37:18 1996 Dave Love + + * configure (objc_thread_file): Set conditionally in each case so + may be overidden with `--enable-objcthreads=posix'. + Change Linux default to `single'. + +Fri Nov 22 17:53:15 1996 Jason Merrill + + * varasm.c (assemble_variable): Output DWARF in the third case, too. + + * dwarf2out.c (decls_for_scope): Only add DIEs with no parents to + our scope. + (gen_subroutine_type_die): Parm types go under the fn type DIE. + + * Makefile.in ($(T)crt{begin,end}.o): Move CRTSTUFF_T_CFLAGS after + general flags. + + * mips/t-iris6 (CRTSTUFF_T_CFLAGS): Define. + * mips.c (compute_frame_size): Fix fp_save_offset. + + * dwarf2out.c (new_die): If we get a NULL parent, inc limbo_die_count. + (decls_for_scope): Decrement limbo_die_count as appropriate. + (dwarf2out_finish): Check for good limbo_die_count. + (size_of_cfi): If regno too big for DW_CFA_offset, use offset_extended + instead. + (output_call_frame_info): Add disabled code for specifying ABI. + (dwarf2out_begin_function): Note all saved regs. + + * dwarf2out.c (gen_subprogram_die): Have a DIE for each fn at + toplevel. + (scope_die_for): Only use the NULL for fns and tags. + +Tue Nov 21 15:53:51 1996 Joern Rennecke + + * sh.c (output_stack_adjust): New argument TEMP. Changed all callers. + If the adjust cannot be done with one, but can be done with two + CONST_OK_FOR_I constants, do it that way. + +Thu Nov 21 14:25:55 1996 Ian Lance Taylor + + * fixincludes: Include in even if not C++ if + stderr needs to be defined. + +Wed Nov 20 15:38:13 1996 Jason Merrill + + * toplev.c (rest_of_type_compilation): Do output function-scope tags + for DWARF 2. + * c-decl.c (pushtag): Set TYPE_CONTEXT on the tag. + * toplev.c, varasm.c: s/dwarf2out_file_scope_decl/dwarf2out_decl/g. + * dwarf2out.c (add_prototyped_attribute): Use a value of 1. + (gen_subprogram_die): Support AT_static_link. + (dwarf2out_decl): Rename from dwarf2out_file_scope_decl. + Give nested fns and tags a die_parent of NULL. + (decls_for_scope): Fix the die_parent for nested fns and tags. + (scope_die_for): If we get a context of NULL, just return it. + +Tue Nov 19 18:21:11 1996 Jason Merrill + + * dwarf2out.c (gen_subprogram_die): Support block extern decls. + (gen_variable_die): Likewise. + (gen_decl_die): Emit block extern function decls. + + * c-decl.c (implicitly_declare): Set DECL_ARTIFICIAL. + +Tue Nov 19 16:50:32 1996 Michael Meissner + + * configure (powerpc*-{sysv,elf,eabi{,aix,sim}}): Set + extra_headers to ppc-asm.h. + (powerpc*-{linux,solaris,rtems,vxworks}): 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 + + * dwarf2out.c (DWARF_CIE_INSN_SIZE): New macro. + (DWARF_CIE_HEADER_SIZE): Use it. + (DWARF_FRAME_RETURN_COLUMN, DWARF_FRAME_REGNUM): New macros. + (output_call_frame_info, dwarf2out_begin_function): Use them. + For the MIPS, output the first CFA insn in the CIE. + * dwarf2.h (enum dwarf_call_reg_usage): Lose. + (dwarf_macinfo_record_type): Fix spelling. + * mips/mips.h (DWARF_FRAME_REGNUM, DWARF_FRAME_RETURN_COLUMN): Define. + + * dwarf2out.c (base_type_die): Just generate the DIEs as needed, + rather than building up some table. + (init_base_type_table): Lose. + (add_subscript_info): Use add_type_attribute. Don't give an upper + bound for an array of unknown size. + (gen_unspecified_parameters_die): Remove DWARF-1 kludge. + (dwarf2out_init): Lose call to init_base_type_table. + (is_c_family, is_fortran): New fns. + (gen_compile_unit_die): Recognize GNU F77. + (gen_array_type_die): Use AT_declaration for an array of unknown size. + (modified_type_die): Take TYPE_MAIN_VARIANT before passing it + to build_type_variant, so we ignore named variants. + (dwarf2out_file_scope_decl): Don't generate DIEs for built-in structs, + either; they will be emitted if they are used. + From wilson: + (gen_array_type_die): Force the element type out first on IRIX 6. + +Sun Nov 17 20:23:11 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (get_inner_reference): Fix error in previous change. + +Sat Nov 16 06:08:27 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * emit-rtl.c (operand_subword): Avoid confusion if sizeof (float) + is less than a full word. + + * alpha.h (MASK_BYTE_OPS): Now define as 1024. + * alpha/vms.h (TARGET_DEFAULT): Use symbolic values. + + * expr.c (get_inner_reference): Add new arg PALIGNMENT and compute it. + (expand_assignment, do_jump): Pass new arg to get_inner_reference. + (expand_expr, case COMPONENT_REF): Likewise. + * fold-const.c (optimize_bit_field_compare, decode_field_reference): + Likewise. + * tree.h (get_inner_reference): Add new arg. + + * Add support for Alpha/VMS, mostly from + Klaus Kaempf (kkaempf@progis.de) + * configure (alpha-dec-vms*): New target. + * alpha.c (override_options): Handle VAX format floating-point. + (print_operand, case ',', '-'): New cases. + (alpha_builtin_saveregs): Handle VMS convention. + (alpha_sa_{mask,size}, alpha_pv_save_size, alpha_using_fp): + New versions for VMS. + (output_{pro,epi}logue, function_arg): Likewise. + (direct_return): Never true on VMS. + (check_float_value): Return 0 for VMS. + (vmskrunch, alpha_{need,write}_linkage): New function. + * alpha.h ({MASK,TARGET}_{OPEN_VMS,FLOAT_VAX}): New macros. + (TARGET_SWITCHES): Add float-vax and float-ieee. + ({FUNCTION,LIBCALL}_VALUE, FUNCTION_VALUE_REGNO_P): R1 and R33 + are also return registers. + (ASM_OUTPUT_DOUBLE): Support both floating-point formats. + (PRINT_OPERAND_FUNCT_VALID_P): Add ',' and '-'. + * alpha.md ({div,mod}[sd]i3): Only for VMS. + (fp operations): Add modifiers for multiple floating-point formats. + (call patterns): Handle new calling sequence for VMS. + (tablejump): Make new pattern for VMS. + (nonlocal_goto_receiver, arg_home): New patterns. + * alpha/t-vms, alpha/vms.h, alpha/xm-vms.h: New files. + +Fri Nov 15 17:38:20 1996 Doug Evans + + * sdbout.c (current_file): New global. + (PUT_SDB_SRC_FILE): New PUT_SDB_FOO macro. + (sdbout_init): Initialize current_file ifdef MIPS_DEBUGGING_INFO. + (sdbout_{start_new,resume_previous}_source_file): New functions. + * toplev.c (debug_{start,end}_source_file): Call them if SDB_DEBUG. + * mips.h (PUT_SDB_SRC_FILE): Define. + +Fri Nov 15 16:11:25 1996 Jason Merrill + + * dwarfout.c (dwarfout_line): Don't emit line number info for + functions outside of .text. + +Fri Nov 15 15:52:42 1996 Stan Cox + + * i386/386bsd.h (COMMENT_BEGIN): Delete. + * i386/freebsd.h (COMMENT_BEGIN): Likewise. + * i386/netbsd.h (COMMENT_BEGIN): Likewise. + * i386/unix.h (COMMENT_BEGIN): Likewise. + +Fri Nov 15 13:22:42 1996 Jim Wilson + + * fold-const.c (unextend): Rewrite type conversions to avoid overflow. + +Fri Nov 15 12:11:28 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): Properly copy an rtvec. + * emit-rtl.c (gen_rtvec_vv): New function. + (copy_rtx_if_shared): Call it. + * integrate.c (copy_for_inline): Likewise. + * reload1.c (eliminate_regs): Likewise. + * rtl.h (gen_rtvec_vv): Declare. + * genattrtab.c (simplify_cond): Make TESTS an array of rtunions. + * genextract.c (main): Use loop, not bcopy, to set recog_operands + from an rtvec. + * rtl.c (rtvec_alloc): Clear rtwint instead of rtvec. + + * machmode.h (HOST_PTR_PRINTF): Handle char * wider than long. + (HOST_WIDE_INT_PRINT_{DEC,UNSIGNED,HEX,DOUBLE_HEX}): New macros. + * final.c (asm_fprintf): Use "ll" prefix for a long long HOST_WIDE_INT. + (output_{asm_insn,addr_const}): Use HOST_WIDE_INT_PRINT_*. + * print-tree.c (print_node{,_brief}, case INTEGER_CST): Likewise. + * print-rtl.c (print_rtx, case 'w'): Use HOST_WIDE_INT_PRINT_DEC. + + * unroll.c (iteration_info): Fix code so that it knows iteration_var + is a HOST_WIDE_INT, not a long. + + * fold-const.c (operand_equal_p): Do 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 + + * fold-const.c (range_binop): Set SNG1 to zero if ARG1 is a + not a lower or upper bound. + +Thu Nov 14 23:08:25 1996 Jason Merrill + + * flags.h (debug_info_type): Add DWARF2_DEBUG. + * toplev.c (main): Support DWARF2_DEBUG. Add -gdwarf-1, -gdwarf-2 + options. Check debug level after choosing type. + (debug_{start,end}_source_file, debug_{define,undef}): New functions. + (compile_file): Support dwarf2 separately from dwarf1. + (rest_of_type_compilation, rest_of_compilation): Likewise. + * final.c (final_start_function): Likewise. + (final_end_function, final_scan_insn, output_source_line): Likewise. + * varasm.c (assemble_variable): Likewise. + * dwarfout.c: Don't check DWARF_VERSION. + * dwarf2out.c: s/dwarfout/dwarf2out/g. Check DWARF2_DEBUGGING_INFO. + * c-lex.c (check_newline): Use debug_* instead of calling *out + functions directly. + * svr4.h (DWARF2_DEBUGGING_INFO): Define. + * mips/iris6.h (PREFERRED_DEBUGGING_TYPE): DWARF2_DEBUG. + (DWARF2_DEBUGGING_INFO): Define instead of DWARF_DEBUGGING_INFO. + (LINK_SPEC): Pass -w through. + * mips.h (PREFERRED_DEBUGGING_TYPE): Don't check `len'. + +Thu Nov 14 17:25:47 1996 Jeffrey A Law (law@cygnus.com) + + * h8300.c (dosize): Don't clobber static chain reg if needed by + current function. + +Wed Nov 13 17:05:19 1996 Jason Merrill + + * Makefile.in (stage?-start): Keep a copy of EXTRA_MULTILIB_PARTS + in the build directory. + +Tue Nov 12 23:17:17 1996 Jeffrey A Law (law@cygnus.com) + + * pa.c (print_operand, case 'Y'): Fix comparisons to handle + NaNs properly in all cases. + +Tue Nov 12 18:47:24 1996 Jim Wilson + + * expr.c (emit_group_store): For REG case, call gen_lowpart if + modes are different. + +Tue Nov 12 18:24:40 1996 Doug Rupp (rupp@gnat.com) + + * gcc.c (exit): If VMS, define as __posix_exit. + (option_map): Add define-macro and undefine-macro. + +Tue Nov 12 17:55:10 1996 Torbjorn Granlund + + * alpha.c (input_operand): If TARGET_BYTE_OPS accept HImode and QImode. + * alpha.h (MASK_BYTE_OPS): New define. + (TARGET_BYTE_OPS): New define. + (TARGET_SWITCHES): Handle -mbyte. + (LOAD_EXTEND_OP): When MODE is not SImode, return ZERO_EXTEND. + * alpha.md (zero_extendqidi2): Handle TARGET_BYTE_OPS. + (zero_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 + + * configure (hppa1.1-pro*, i960-*-coff*,m68k-*-aout*): Add libgloss.h. + (m68k-*-coff*, mips*-*-elf*, sparc*-*-aout*, sparc*-*-coff*): Likewise. + * config/libgloss.h: New file. + +Tue Nov 12 16:21:45 1996 Joern Rennecke + + * jump.c (jump_optimize): Fix bug in Sep 23 change. + +Tue Nov 12 16:15:31 1996 Andrew Cagney (cagney@tpgi.com.au) + + * global.c (prune_references): Add missing symmetic CONFLICTP call. + +Tue Nov 12 14:34:40 1996 Philippe De Muyter + + * m68k.c (output_function_{pro,epi}logue): Save and restore + fp-registers only if TARGET_68881. + + * m68k/mot3300.h (ASM_OUTPUT_INTERNAL_LABEL): Prefix labels with "L%". + (ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_CASE_LABEL): Likewise. + (ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Likewise. + + * m68k/mot3300.h (TARGET_DEFAULT): Use MASK_68040_ALSO, not MASK_68040. + * m68k/next.h, m68k/ccur-GAS.h (TARGET_DEFAULT): Likewise. + + * fixproto (std_files): Add sys/socket.h. + + * m68k.md (movqi): Emit 'st' for INTVAL & 255 == 255, not INTVAL == -1. + (seq,sne,sgt,sgtu,slt,sltu,sge,sgeu,sle,sleu): Allow "m" as operand 0. + +Tue Nov 12 14:17:45 1996 Paul Eggert + + * c-decl.c (grokdeclarator): Generate a warning if -Wimplicit, + unless a warning was already generated by -Wreturn-type. + +Tue Nov 12 14:11:02 1996 Pat Rankin + + * Make qsort callback routines conform to the ANSI/ISO standard. + * c-decl.c (field_decl_cmp): Use `const void *' arguments. + * global.c (allocno_compare): Likewise. + * reload1.c (hard_reg_use_compare, compare_spill_regs): Likewise. + (reload_reg_class_lower): Likewise. + * stupid.c (stupid_reg_compare): Likewise. + * local-alloc.c (qty_compare_1, qty_sugg_compare_1): Likewise. + (QTY_CMP_PRI, QTY_CMP_SUGG): New macros. + (qty_compare_1, qty_sugg_compare_1): Use them. + +Tue Nov 12 13:20:25 1996 Jim Wilson + + * fold-const.c (merge_ranges): In (+,-) case, treat subset specially + if lower bounds are the same. + +Tue Nov 12 13:10:01 1996 J.T. Conklin + + * m68k.md (addsi3): If TARGET_5200, use the lea insn to add small + constants to address registers. + (negsi2): Change into define_expand. + (negsi2_internal): Rename from old negsi2, changed condition + to !TARGET_5200. + (negsi2_5200): New insn. + (one_cmplsi2): Change into define_expand. + (one_cmplsi2_internal): Rename from old one_cmplsi2, changed + condition to !TARGET_5200. + (one_cmplsi2_5200): New insn. + (negdi2_5200): Corrected constraints. + (one_cmpldi2): Changed condition to !TARGET_5200. + + * m68k.c (m68k_align_loops_string, m68k_align_jumps_string): New vars. + (m68k_align_funcs_string, m68k_align_loops): Likewise. + (m68k_align_jumps, m68k_align_funcs): Likewise. + (override_options): New function. + * m68k.h (TARGET_OPTIONS): Added alignment options. + (MAX_CODE_ALIGN, ASM_OUTPUT_LOOP_ALIGN, ASM_OUTPUT_ALIGN_CODE): + New macros. + (FUNCTION_BOUNDARY): Use value derrived from m68k_align_funcs + instead of constant. + + * m68k.c (output_function_{pro,epi}logue): Fix typo in last change. + +Tue Nov 12 09:26:51 1996 Torbjorn Granlund + + * i386.md (parallel inc/dec and branch-if-zero/nonzero): Use `+' in + constraint. + +Mon Nov 11 15:12:22 1996 Jason Merrill + + * libgcc2.c: Also define WEAK_ALIAS if ASM_OUTPUT_WEAK_ALIAS. + * mips/iris6.h (ASM_OUTPUT_WEAK_ALIAS): Define. + * varasm.c (assemble_alias): Use ASM_OUTPUT_WEAK_ALIAS. + + * dwarf2out.c (TYPE_USED_FOR_FUNCTION): Lose. + (gen_compile_unit_die): Only append -g with -g2 or better. + (scope_die_for): Don't emit any type info with -g1. + (gen_subprogram_die): Likewise. + (gen_decl_die): Likewise. + (dwarfout_file_scope_decl): Likewise. + (dwarfout_init): Likewise. + + * mips/iris6.h (TYPE_ASM_OP): Define. + (SIZE_ASM_OP): Define. + (ASM_WEAKEN_LABEL): Define. + (BSS_SECTION_ASM_OP): Define. + (ASM_OUTPUT_ALIGNED_LOCAL): Don't use ASM_DECLARE_OBJECT_NAME. + (ASM_OUTPUT_ALIGNED_BSS): Define. + (ASM_DECLARE_OBJECT_NAME): Redefine to emit .size directive. + (ASM_FINISH_DECLARE_OBJECT): Define. + (ASM_OUTPUT_DEF): Don't define. + +Fri Nov 8 20:38:51 1996 Jim Wilson + + * function.c (expand_function_end): Handle BLKmode structures returned + in registers. + +Fri Nov 8 20:27:07 1996 Jason Merrill + + * stor-layout.c (layout_record): Check for VAR_DECL instead + of TREE_STATIC. + + * varasm.c (assemble_variable): Do write out DWARF for + record-scope variables. + * toplev.c (rest_of_type_compilation): Do write out DWARF for + record-scope types. + + * dwarf2out.c (gen_enumeration_type_die): Set TREE_ASM_WRITTEN on a + complete enum type. + (gen_struct_or_union_type_die): Don't recurse between nested classes. + (gen_type_die): Write out nested classes by writing out their context. + +Fri Nov 8 17:40:27 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * emit-rtl.c (change_address): If MEMREF isn't changing, + return the old one. + + * expr.c (expand_assignment): Remove bogus resetting of alignment + to inner alignment. + (expand_expr, case COMPONENT_REF): Likewise. + +Fri Nov 8 16:31:31 1996 Stan Cox + + * reg-stack.c (compare_for_stack_reg, subst_stack_regs_pat): + Add support for float conditional move. + +Thu Nov 7 07:46:07 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stor-layout.c (layout_record): Treat constant size as variable if + it overflows. + * fold-const.c (const_binop, case *_DIV_EXPR): Don't do special + sizetype case if a constant overflows. + (size_binop): Use integer_{zero,one}p instead of explicit test. + * tree.c (integer_{zero,one,all_ones,pow2}p, real_{zero,one,two}p): + Return 0 if TREE_CONSTANT_OVERFLOW. + +Wed Nov 6 17:53:33 1996 Torbjorn Granlund + + * i386.md (parallel inc and branch-if-zero/nonzero): Add two + new pattern variants. Change incrementing pattern to use incl/jnz. + +Wed Nov 6 09:46:10 1996 Stan Cox + + * i386.c (override_options): Set defaults for -march and -mcpu. + (output_float_compare): Use cc_status.flags to mark if this + comparison can be done with fcomi. + (output_fp_cc0_set): A conditional move may be in a PARALLEL. + + * i386.h (CC_FCOMI): Define + + * i386.md (sgt,sgtu,sge,sle,bgt,blt,bge,ble): Use CC_FCOMI + (movsicc_1,movhicc_1): Use correct size suffix. + (movsfcc_1,movdfcc_1): Cleanup default move case. + +Wed Nov 6 09:46:10 1996 J"orn Rennecke + + * i386.h (HARD_REGNO_MODE_OK): If long double isn't XFmode, can't + allow XFmode. + +Tue Nov 5 22:49:56 1996 J"orn Rennecke + + * sh.md (define_split for and_shl_scratch): + Use rtx_equal_p on the operands to find out which alternative is used. + * sh.c (gen_shl_and): Try to generate shorter constant for and. + +Mon Nov 4 19:13:52 1996 Jason Merrill + + * dwarf2out.c: Clean up unused variables. + Use ASM_{GENERATE,OUTPUT}_INTERNAL_LABEL, shorten label names. + (loc_descriptor): Use reg_loc_descriptor. + (TYPE_DECL_IS_STUB): New macro. + (gen_decl_die): Use it. + (dwarfout_file_scope_decl): Use it. + +Mon Nov 4 10:23:46 1996 Michael Meissner + + * ginclude/va-ppc.h (__va_regsave_t,va_start,va_end): Wrap macro + and structures inside #ifndef __VA_PPC_H__ to allow reinclusion. + + * rs6000/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 + + * 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 + + * dwarf2out.c (based_loc_descr): Use DBX_REGISTER_NUMBER. The + "frame base" is just the frame or stack reg without an offset. + (gen_subprogram_die): Likewise. + (dwarfout_begin_function): Use DBX_REGISTER_NUMBER. + +Fri Nov 1 09:50:05 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (make_range): Don't merge unsigned case with range + containing upper bound; instead merge just with zero and convert + a range with no upper bound to opposite one with no lower bound. + (merge_ranges): In (+,-) case, don't treat subset specially if + the upper bounds are the same; fix typo in others case here. + +Thu Oct 31 20:12:13 1996 Jeffrey A Law (law@cygnus.com) + + * fold-const.c (make_range, case PLUS_EXPR): Correct + normalization of an unsigned range that wraps around zero. + +Thu Oct 31 21:06:37 1996 Jason Merrill + + * mips/t-iris6 (EXTRA_MULTILIB_PARTS): Define. + (EXTRA_PARTS): Don't define. + + * dwarf2out.c (gen_struct_or_union_type_die): Use AT_specification + for nested types defined outside their containing class. Lose + is_complete. + (gen_enumeration_type_die): Lose is_complete. + (gen_type_die): Lose is_complete. + (add_name_and_src_coords_attributes): Tweak. + (gen_subroutine_type_die): Use scope_die_for. + (gen_ptr_to_mbr_type_die): Likewise. + (gen_subprogram_die): Support AT_artificial. + (gen_variable_die): Likewise. + (dwarfout_file_scope_decl): Lose finalizing. + +Thu Oct 31 18:43:18 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * pa.c (emit_move_sequence): Refine previous change. + +Thu Oct 31 13:25:32 1996 Jim Wilson + + * crtstuff.c: Put HAS_INIT_SECTION ifdefs around Irix6 support. + + * tree.c (decl_function_context): Handle QUAL_UNION_TYPE. + + * calls.c (expand_call): Disable special handling for const calls + that return a PARALLEL rtx. + * expr.c (expand_expr, case CONSTRUCTOR): Don't use a PARALLEL + target. + +Thu Oct 31 11:45:00 1996 Michael Meissner + + * rs6000/t-{ppcgas,ppc,solaris} (EXTRA_MULTILIB_PARTS): Add + {e,s}crt{i,n,0}.o. + ({stmp,install}-crt): Delete, no longer used. + ({,INSTALL_}LIBGCC): Remove {stmp,install}-crt rule. + +Thu Oct 31 02:49:58 1996 Torbjorn Granlund + + * i386.md (parallel inc and branch-if-zero/nonzero): + Check for -1, not zero. + +Wed Oct 30 15:50:49 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (range_binop): Strip NOPs from result and + verify it's an INTEGER_CST. + (make_range, case BIT_NOT_EXPR): Fix typo in constant for PLUS_EXPR. + + * stor-layout.c (layout_record): Use HOST_WIDE_INT for size. + + * stmt.c (expand_asm_operands): Disallow matching constraints + on output and validate the numbers on inputs. + +Tue Oct 29 16:21:59 1996 Michael Meissner + + * gcc.c (process_command,main): Process -specs=file and -specs + file after reading the main specs file to allow the user to + override the default. + (DEFAULT_WORD_SWITCH_TAKES_ARG): Add specs to list. + (option_map): Ditto. + +Tue Oct 29 15:49:18 1996 Jason Merrill + + * Makefile.in (stmp-multilib): Pass $flags to s-m-sub in + MULTILIB_CFLAGS. + (stmp-multilib-sub): Build EXTRA_MULTILIB_PARTS. + ($(T)crt*.o): Add $(T), lose stamp-crt rule, use MULTILIB_CFLAGS. + (install-multilib): Install EXTRA_MULTILIB_PARTS. + +Mon Oct 28 20:09:39 1996 J"orn Rennecke + + * sh.md (shl_sext_ext): Don't accept simple left/right shift + variant. + * sh.c (EXT_SHIFT_SIGNED): New macro. + (shl_sext_kind, gen_shl_sext): try left shift - sign extend - + left shift - arithmetic right shift in case 2. + +Mon Oct 28 14:55:42 1996 Jim Wilson + + * configure (sh-*-*): Set float_format to sh. + * config/float-sh.h: New file. + +Mon Oct 28 14:26:08 1996 Ian Lance Taylor + + * mips/mips.h (RTX_COSTS): Add cases for SIGN_EXTEND and + ZERO_EXTEND. + + * m68k/lb1sf68.asm: Change # to IMM in udivsi3 __mcf5200__. + + * combine.c (simplify_rtx): Add some optimizations for TRUNCATE. + (expand_compound_operation): Add some optimizations for + ZERO_EXTEND. + +Mon Oct 28 14:11:20 1996 Gavin Koch + + * varasm.c (make_decl_rtl,assemble_variable): + Allow named sections for uninitialized variables. + +Mon Oct 28 13:08:51 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * pa.c (emit_move_sequence): If reload in progress, replace + reference to pseudo with reference to corresponding MEM. + + * c-typeck.c ({un,}signed_type): If can't do anything, call + signed_or_unsigned_type. + (signed_or_unsigned_type): If already right signedness, return. + +Mon Oct 28 13:05:26 1996 Stephen Williams (steve@icarus.com) + + * i960.h: Add specification for -Jx types. + * i960/t-960bare: Include multilib support for Jx types. + +Mon Oct 28 10:06:00 1996 Michael Meissner + + * rs6000/t-{ppc{,gas},solaris} (install-crt): Depend on + installdirs, not install-dir. + + * rs6000/sysv4.h (TARGET_TOC): -fpic does not use a TOC area. + +Mon Oct 28 09:07:42 1996 J"orn Rennecke + + * reload1.c (delete_output_reload): Don't use delete_insn + when deleting all stores into a replaced pseudo. + + * sh.md (movsf_ieq, movsf_ie): Merged the former into the latter. + Changed matching define_split appropriately. + (movsf): Changed appropriately. + (reload_insf) Define. + * sh.h (SECONDARY_INPUT_RELOAD_CLASS): Define. + +Mon Oct 28 08:38:23 1996 J"orn Rennecke + + * dsp16xx.h (ASM_OUTPUT_BYTE): adjust definition to actual type of + VALUE, which is HOST_WIDE_INT. + +Mon Oct 28 07:36:07 1996 Ulrich Drepper + + * ginclude/stddef.h: Make sure file is processed if some of the + known __need_* macros is defined. + +Sun Oct 27 21:37:59 1996 J.T. Conklin + + * m68k.c (output_function_prologue): Adjust SP then use movmel with + plain address indirect mode for TARGET_5200. + (output_function_epilogue): Disable moveml and use several movel's + instead for TARGET_5200. + (output_function_{pro,epi}logue): Use lea instruction to adjust + stack pointer for short displacements for TARGET_5200. + +Sun Oct 27 15:27:45 1996 Jeffrey A Law (law@cygnus.com) + + * fold-const.c (merge_ranges): Fix thinko/typo. + +Sat Oct 26 22:07:04 1996 Ian Lance Taylor + + * expr.c (convert_modes): Before returning a const_double for a + large unsigned value, zero extend an integer value if necessary. + +Sat Oct 26 15:24:55 1996 Philippe De Muyter + + * m68k/x-mot3300 (XCFLAGS): Disable native assembler's jump + optimization for expr.o and cp/decl.o. + +Sat Oct 26 14:04:09 1996 Ben Harris + + * m68k.c (output_function_prologue): Add REGISTER_PREFIX to stack + probe instruction. + +Sat Oct 26 13:59:05 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * explow.c (allocate_dynamic_stack_space): Delete reference to + nonexistant macro ALLOCATE_OUTGOING_ARGS. + + * next.h (CPP_PREDEFINES): Add -D_NEXT_SOURCE. + +Sat Oct 26 13:50:49 1996 Mark Mitchell (mitchell@centerline.com) + + * configure (i486-ncr-sysv4*): Use i386/sysv4gdb if stabs and gas. + +Sat Oct 26 12:20:35 1996 John F. Carr + + * configure: Support --with-cpu=* for SPARC. Or target default + values instead of adding them. + * sparc.c (cpu_default): Add entries for v8 and supersparc. + * sparc.h: Define TARGET_CPU values for v8 and supersparc. + +Sat Oct 26 11:38:01 1996 Kamil Iskra + + * collect2.c (dump_file): Call fclose() for opened files. + +Sat Oct 26 11:29:29 1996 J"orn Rennecke (amylaar@cygnus.co.uk) + + * jump.c (jump_optimize): Fix second error in last change. + + * svr3.h: Fix typo which makes comment text be non-comment. + +Fri Oct 25 16:18:39 1996 Michael Meissner + + * rs6000/t-winnt (LIBGCC1): Don't build libgcc1. + (EXTRA_PARTS): Build crti.o, crtn.o. + (stmp-crt): Remove old multilib support. + +Thu Oct 24 15:09:14 1996 Jim Wilson + + * fold-const.c (make_range, case PLUS_EXPR): Normalize an unsigned + range that wraps around 0. + +Thu Oct 24 14:37:17 1996 Ian Lance Taylor + + * mips.md: Change predicates for 64 bit arithmetic operations + so that they accept sign extended registers as operands. + (extendsidi2): Accept hi or lo as input. + * mips.c (movdi_operand, se_register_operand, + se_reg_or_0_operand, se_uns_arith_operand, se_arith_operand, + se_nonmemory_operand, se_nonimmediate_operand): New functions. + (mips_move_2words): Handle a SIGN_EXTEND source. + (print_operand): Handle a SIGN_EXTEND operand. + (mips_secondary_reload_class): Handle a SIGN_EXTEND rtx. + * mips.h: Declare new mips.c functions. + (PREDICATE_CODES): Add new functions. + +Thu Oct 24 07:41:14 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (make_range, comparison cases): When making range + for unsigned to merge in, use full range. + + * stor-layout.c (GET_MODE_ALIGNMENT): Delete definition; duplicate. + +Thu Oct 24 07:28:53 1996 J"orn Rennecke + + * reload1.c (emit_reload_insns): Check for second_reloadreg + in SECONDARY_OUTPUT_RELOAD_CLASS / PRESERVE_DEATH_INFO_REGNO_P case. + +Wed Oct 23 14:27:43 1996 Mike Stump + + * crtstuff.c (__do_global_dtors_aux): Allow finalization code to + be run more than once. + * libgcc2.c (__do_global_dtors): Ditto. + +Wed Oct 23 20:42:23 1996 Joern Rennecke + + * sh.c (dump_table): handle SFmode and DFmode. + (broken_move): handle simple PARALLEL. + (machine_dependent_reorg, pc-relative move generation): Likewise. + * sh.h (CONST_DOUBLE_OK_FOR_LETTER_P): always true for 'F' . + (LEGITIMATE_CONSTANT_P): accept SFmode and DFmode. + * sh.md (movdf_k, movsf_i, movsf_ie): new alternative for + pc-relative load. + (movsf_ieq): new define_insn with matching define_split. + (movsf): use it where appropriate. + (consttable_sf, consttable_df): new define_insns. + +Wed Oct 23 17:48:32 1996 Andreas Schwab + + * svr4.h (MAKE_DECL_ONE_ONLY): Fix typo in use of macro parameter. + +Wed Oct 23 17:46:13 1996 Pat Rankin + + * cexp.y (yylex): Cast string literal to U_CHAR* for lookup() call. + +Wed Oct 23 14:50:04 1996 Jason Merrill + + * stmt.c (expand_return): Expand cleanups. Make sure we get 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 + + * reload.c (find_reloads): Handle any unary operator. + * recog.c (constrain_operands): Likewise. + + * mips.md: Remove extendsidi2 define_expand. + Rename extendsidi2_internal define_insn to extendsidi2, and add a + register to register case. + +Wed Oct 23 14:08:31 1996 Jim Wilson + + * a29k.c (a29k_makes_calls): New global variable. + (compute_regstack_size, a29k_compute_reg_names): New functions. + (output_prolog): Much code moved to two new functions. Use + a29k_makes_calls instead of makes_calls. + * a29k.h (ASM_DECLARE_FUNCTION_NAME): Call a29k_compute_reg_names. + + * calls.c (expand_call): In target code, move PARALLEL case above + target != case. + + * mips.c (block_move_load_store, block_move_sequence): Delete. + (block_move_loop): New parameter orig_dest. Call change_address to + create new MEM instead of gen_rtx. + (expand_block_move): New local orig_dest. Pass it to block_move_loop. + Call change_address to create new MEM instead of gen_rtx. + +Wed Oct 23 10:30:32 1996 J"orn Rennecke + + * loop.c (combine_givs): When combining a DEST_REG giv with its + only use, always set the benefit of the combined giv to that of + the DEST_REG giv. + + * emit-rtl (gen_lowpart_common): When converting a floating + point value into an integer, use WORD as (first) word. + + * combine.c (can_combine_p): When SMALL_REGISTER_CLASSES is defined, + avoid substituting a return register into I3. + + * optabs.c (emit_libcall_block): Before adding an REG_EQUAL note, + check that it will really apply to a single instruction. + (expand_binop, expand_fix): Likewise. + +Wed Oct 23 10:20:52 1996 Stephen L Moshier (moshier@world.std.com) + + * real.c (exact_real_inverse): New function, if REAL_ARITHMETIC. + * fold-const.c (exact_real_inverse): Likewise, if no REAL_ARITHMETIC. + (fold, case RDIV_EXPR): Turn divide by constant into multiplication + by the reciprocal, if optimizing and result is exact. + * real.h (exact_real_inverse): Declare. + +Wed Oct 23 00:12:52 1996 Torbjorn Granlund + + * expr.h (emit_store_flag_force): Declare. + +Tue Oct 22 18:32:20 1996 Jim Wilson + + * unroll.c (unroll_loop): Always reject loops with unbalanced blocks. + +Tue Oct 22 18:27:06 1996 Ian Lance Taylor + + * config/fp-bit.c (float_to_usi): Correct thinko: avoid 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 + + * rs6000/cygwin32.h (LIB_SPEC): Add -lkernel32 all of the time, + and {user,gdi,comdlg}32 if -mwindows. + +Tue Oct 22 05:24:05 1996 Jason Merrill + + * dwarf2out.c (scope_die_for): Don't skip lexical blocks. + (gen_lexical_block_die): Call push_decl_scope. + (gen_subprogram_die): Never refer to the function symbol. + (dwarfout_begin_prologue): Likewise. + +Mon Oct 21 20:22:49 1996 Torbjorn Granlund + + * expmed.c (emit_store_flag_force): New function. + * optabs.c (expand_binop): Use it. + + * expr.c (do_store_flag): Don't check if target is 0 in code + emitting store flag as compare-branch. + +Mon Oct 21 17:58:33 1996 Ian Lance Taylor + + * mips.c (override_options): Correct typo (MASK_64BIT should + have been TARGET_64BIT). + +Mon Oct 21 13:58:54 1996 Jim Wilson + + * unroll.c (loop_comparison_code): New static variable. + (unroll_loop): Add check for loop_comparison_code + (loop_iterations): Set loop_comparison_code. + + * sh.c (gen_shl_sext): Add missing parameter to shl_sext_kind call. + + * mips.h (INITIAL_FRAME_POINTER_OFFSET): Delete. + + * loop.c (strength_reduce): Add check for ! bl->reversed to + auto_inc_opt code. + +Mon Oct 21 12:28:15 1996 J"orn Rennecke + + jump.c (jump_optimize): Fix bug in Oct. 14 change. + +Mon Oct 21 07:59:16 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (store_expr): Disable optimization of using convert + if exp's type is a subtype. + + * c-typeck.c (build_array_ref): If -Wchar-subscripts, also warn + in case when pointer is being indexed. + +Mon Oct 21 07:39:31 1996 J"orn Rennecke + + * jump.c (jump_optimize): Use emit_store_flag even if branches + are cheap, if the store is even cheaper. + +Sun Oct 20 20:01:09 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * reload1.c (reload_reg_free_p, reloads_conflict): RELOAD_OTHER + and RELOAD_FOR_OTHER_ADDRESS conflict. + + * i386.md (ffs[sh]i2): Add missing CC_STATUS_INIT. + +Fri Oct 18 13:32:13 1996 Michael Meissner + + * rs6000.md (float conversion insns): Generate correct code + if the bit 15 of rs6000_fpmem_offset is non-zero. + +Thu Oct 17 23:22:03 1996 Jason Merrill + + * dwarfout.c (data_member_location_attribute): Support binfos. + (output_inheritance_die): New fn. + (output_type): Use it. + + * dwarf2out.c (value_format): Split out from... + (output_value_format): Here. + (build_abbrev_table): Use value_format. + (size_of_locs): New fn. + (size_of_die): Don't assume a loc needs a 2-byte length. + (value_format): Likewise. + (output_die): Likewise. + +Thu Oct 17 14:46:14 1996 Ian Lance Taylor + + * mips.c (override_options): In 64 bit EABI mode, set TARGET_LONG64. + +Thu Oct 17 11:34:51 1996 Bob Manson + + * expr.c (do_jump): Conditionalize cleanups for the COND_EXPR case, + similarly to the way TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR are + handled. + +Thu Oct 17 01:20:16 1996 Jim Wilson + + * m68k.h (MASK_68040_ALSO): New macro. + (TARGET_SWITCHES): Option -m68020-40 includes MASK_68040_ALSO. + +Wed Oct 16 16:25:38 1996 Jason Merrill + + * dwarf2out.c (scope_die_for): Also support decls, add asserts. + (modified_type_die): Modified types all go under comp_unit_die. + (add_type_attribute): Just pass context_die through. + (various): Revert useless lookup_type_die change. + (gen_subprogram_die): Use scope_die_for. Call push_decl_scope. + (gen_inlined_subroutine_die): Call push_decl_scope. + (gen_struct_or_union_type_die): Likewise. + (gen_decl_die): Don't call push_decl_scope. + + * mips/iris6.h (*_SPEC): Replace enumeration of !mabi= with !mabi*. + (ASM_OUTPUT_{CON,DE}STRUCTOR): Enable. + (STARTFILE_SPEC): Support -mips4, -shared. + (ENDFILE_SPEC): Likewise. + (LIB_SPEC): Support -shared, avoid warning 84. + (LIBGCC_SPEC): Define. + (LINK_SPEC): Support -shared, remove -woff 84. + * mips/t-iris6 (EXTRA_PARTS): Add crtstuff. + * crtstuff.c: Support Irix 6. + * configure: Don't use collect2 for Irix 6. + * libgcc2.c (__main): Don't use any of this stuff if HAS_INIT_SECTION. + +Wed Oct 16 11:46:37 1996 Mike Stump + + * elxsi.h (CHECK_FLOAT_VALUE): Removed. + +Wed Oct 16 14:19:38 1996 Jim Wilson + + * iris6.h (CPP_PREDEFINES): Add -D_LONGLONG. + (CPP_SPECS): Remove -D_LONGLONG. + +Wed Oct 16 03:34:42 1996 Torbjorn Granlund + + * i386.md (parallel inc/dec and branch-if-zero/nonzero): New patterns. + +Tue Oct 15 22:28:11 1996 Ian Lance Taylor + + * mips.h (enum mips_abi_type): Add ABI_EABI. + (CPP_SPEC): Define __mips_soft_float if -msoft-float, and + __mips_eabi if -mabi=eabi. + (INITIAL_ELIMINATION_OFFSET, CUMULATIVE_ARGS, + GO_IF_LEGITIMATE_ADDRESS, CONSTANT_ADDRESS_P, LEGITIMATE_CONSTANT, + LEGITIMIZE_ADDRESS): Add support for MIPS EABI. + * mips/abi64.h (STACK_BOUNDARY, MIPS_STACK_ALIGN, + FUNCTION_ARG_PADDING, RETURN_IN_MEMORY, SETUP_INCOMING_VARARGS): + Add support for MIPS EABI. + (FUNCTION_ARG_PASS_BY_REFERENCE): Define. + (FUNCTION_ARG_CALLEE_COPIES): Define. + * mips.c (mips_const_double_ok, function_arg_advance, + function_arg, function_arg_partial_nregs, override_options, + compute_frame_size): Add support for MIPS EABI. + (function_arg_pass_by_reference): New function. + * ginclude/va-mips.h: Add support for MIPS EABI. + +Tue Oct 15 19:10:08 1996 Jason Merrill + + * toplev.c (rest_of_type_compilation): Don't write out + DWARF for function-scope types yet. + (compile_file): Do send vars with no RTL to the DWARF code. + +Tue Oct 15 17:54:43 1996 Doug Evans + + * loop.c (strength_reduce): Avoid taking PATTERN of a label. + +Tue Oct 15 16:52:33 1996 Ian Lance Taylor + + * mips/iris6.h: (SUBTARGET_CPP_SIZE_SPEC): Define. + (SUBTARGET_CPP_SPEC): Remove definitions of __SIZE_TYPE__ and + __PTRDIFF_TYPE__, now in SUBTARGET_CPP_SIZE_SPEC. + +Tue Oct 15 11:19:17 1996 Lee Iverson + + * mips.h (CPP_SPEC): Restore -D_LANGUAGE_C for Objective C. + +Mon Oct 14 18:03:35 1996 Jason Merrill + + * dwarf2out.c (gen_decl_die): Do generate dies for classes with -g1. + (dwarfout_file_scope_decl): Likewise. + +Mon Oct 14 16:31:44 1996 Joern Rennecke + + * jump.c (jump_optimize): Check for if (...) { x = a; goto l; } x = b; + +Mon Oct 14 14:19:49 1996 Jason Merrill + + * dwarf2out.c (modified_type_die): Don't bother with AT_address_class. + (add_data_member_location_attribute): Handle getting a binfo. + (add_location_or_const_value_attribute): Handle a decl with no RTL. + (add_pure_or_virtual_attribute): Add AT_vtable_elem_location. + (add_name_and_src_coords_attributes): Only use DECL_ASSEMBLER_NAME + for staticp things. + (gen_subprogram_die): Set up AT_inline for abstract decls. + (gen_inheritance_die): New fn. + (gen_member_die): Also emit info for base classes. + +Sat Oct 12 00:07:00 1996 Doug Evans + + * fold-const.c (make_range): Handle NULL operand 0 + (like in BIND_EXPRs). + +Fri Oct 11 15:42:22 1996 Jason Merrill + + * toplev.c (rest_of_compilation): If we did a + save_for_inline_copying, reset DECL_ABSTRACT_ORIGIN for the + function when we're done. + + * toplev.c (main): DWARF works with C++ now. + + * dwarf2out.c (gen_subprogram_die): Disable MIPS_AT_has_inline + support for now. + +Fri Oct 11 14:31:10 1996 Torbjorn Granlund + + * dwarfout.c: (output_bound_representation): Fix typo in prototype. + +Fri Oct 11 12:19:21 1996 Ian Lance Taylor + + * mips.h (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 + + * 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 + + * mips.md (mov[sd]fcc): Use register_operand, not reg_or_0_operand, + for source predicates. + +Thu Oct 10 15:19:38 1996 Michael Meissner + + * rs6000.md (floatsidf2_load): For large stack frames, do not + generate an illegal memory reference. + (movdi, movdf define_splits): Fix code so that it works for either + big or little endian hosts generating code for either big or + little endian targets. + + (from Jim Wilson) + * rs6000.c (rs6000_save_toc_p): Delete global variable. + (rs6000_{save,restore}_machine_status): Do not save/restore it. + (rs6000_init_expanders): Do not initialize it. + (rs6000_stack_info): Always create TOC save space. + + * rs6000.md (NT indirect call insns): Do not set + rs6000_save_toc_p. + + * rs6000.h (rs6000_save_toc_p): Delete declaration. + +Wed Oct 9 18:06:54 1996 Ian Lance Taylor + + * mips.h (EMPTY_FIELD_BOUNDARY): Define as 32. + * mips/abi64.h (EMPTY_FIELD_BOUNDARY): Don't define. + + * mips/abi64.h (TARGET_DEFAULT, TARGET_LONG64, CPP_PREDEFINES, + CPP_SPEC): Move from here... + * mips/iris6.h: ...to here. + +Wed Oct 9 16:43:51 1996 Jim Wilson + + * configure (i[3456]86-dg-dgux): Use install-headers-cpio. + + * expr.c (store_constructor): Delete unnecessary increment. + +Wed Oct 9 16:29:22 1996 Gavin Koch + + * cccp.c (do_include): Treat ENOTDIR like ENOENT when an open fails. + +Wed Oct 9 16:26:57 1996 Paul Eggert + + * gcc.c (default_compilers): -ansi no longer implies -$ to cpp. + * c-lex.c (yylex): Treat `$' just like `_', except issue a + diagnostic if !dollars_in_ident or if pedantic. + * c-decl.c (dollars_in_ident): DOLLARS_IN_IDENTIFIERS is now Boolean. + (c_decode_option): -fdollars-in-identifiers is now independent + of -ansi, of -traditional, and of DOLLARS_IN_IDENTIFIERS. + * cexp.y (initialize_random_junk): Ignore DOLLARS_IN_IDENTIFIERS. + * cccp.c (dollars_in_ident): Remove; replaced by is_idchar['$']. + (main): Initialize is_idchar and is_idstart directly when given -$. + Ignore DOLLARS_IN_IDENTIFIERS. + (rescan): Diagnose $ in identifier if pedantic. + (initialize_char_syntax): Assume $ is allowed in identifier; + `main' will change this if -$ is given. + * cpplib.h (DOLLARS_IN_IDENTIFIERS): Remove. + * cpplib.c (cpp_options_init): Ignore DOLLARS_IN_IDENTIFIERS. + (parse_name): Diagnose $ in identifier if pedantic. + (cpp_handle_options): -traditional no longer messes with + dollars_in_ident. + * i386/dgux.h, m68k/apollo68.h (DOLLARS_IN_IDENTIFIERS): Remove. + * m88k.h, mips.h, nextstep.h, pa.h (DOLLARS_IN_IDENTIFIERS): Remove. + * vax/ultrix.h, vax/vms.h (DOLLARS_IN_IDENTIFIERS): Remove. + * convex.h (OVERRIDE_OPTIONS): Don't need to set + dollars_in_ident any more, since -ansi doesn't change it. + +Wed Oct 9 07:35:47 1996 Doug Evans + + * Allow prefix attributes in more places. + * c-parse.in: Update number of shift/reduce conflicts. + ({typed_declspecs,reserved_declspecs,declmods}_no_prefix_attr): New. + (current_declspecs): Initialize to NULL_TREE. + (fndef): Pass current_declspecs, not $1, to start_function. + (old_style_parm_decls): Renamed from xdecls. + (datadecl, declmods): Add references to new rules. + (setspecs): Call split_specs_attrs. + (absdcl1): Remove case with setattrs. + * c-common.c (split_specs_attrs): New function. + +Wed Oct 9 05:48:43 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sdbout.c: Include defaults.h. + * Makefile.in (sdbout.o): Make dependency list match included files. + + * fold-const.c (range_test): Function deleted. + (range_binop, make_range, build_range_check): New functions. + (merge_ranges, fold_range_test): Likewise. + (fold_truthop): No longer call range_test. + (fold, case TRUTH_{AND,OR}{,IF}_EXPR): Call fold_range_test. + +Tue Oct 8 22:03:32 1996 Torbjorn Granlund + + * configure: Set cpu_type for pyramid. + +Tue Oct 8 21:54:04 1996 Jason Merrill + + * final.c (final_start_function): Call dwarfout_begin_prologue. + + * dwarf2out.c (pubname_*, arange_*): New data for .debug_pubnames + and .debug_aranges sections. + (add_pubname): New fn. + (size_of_pubnames): Reimplement. + (output_pubnames): Likewise. + (add_arange): New fn. + (size_of_aranges): Include function sections. + (output_aranges): Likewise. + (gen_variable_die): Call add_pubname. + (add_name_and_src_coords_attributes): Use DECL_ASSEMBLER_NAME for now. + (decl_start_label): Renamed from function_start_label. + (gen_subprogram_die): If weak or one_only, use a local label for + AT_low_pc. Call add_pubname and add_arange. + (dwarfout_begin_prologue): New fn. Start up FDE here. + (dwarfout_begin_function): Not here. + (get_AT): Split out. Look in specification and abstract_origin DIEs. + (get_AT_low_pc, get_AT_string, get_AT_flag, get_AT_unsigned, + get_AT_hi_pc): Use it. + (dwarfout_finish): Variables can produce pubnames, too. + +Tue Oct 8 19:35:40 1996 Torbjorn Granlund + + * m88k/dgux.h (CPP_SPEC): Avoid newline in the string. + + * final.c (final): Update insn_current_address before calling + final_scan_insn. + +Tue Oct 8 17:52:02 1996 Jim Wilson + + * unroll.c (unroll_loops): Set local_regno only if set_dominates_use + returns true. + (set_dominates_use): New function. + +Tue Oct 8 16:01:37 1996 Doug Evans + + * c-typeck.c (decl_constant_value): Delete test for ! TREE_PUBLIC. + +Tue Oct 8 10:36:44 1996 Jeffrey A Law (law@cygnus.com) + + * pa.c (hppa_legitimize_address): Remove test code accidentally left + in during last change. + +Mon Oct 7 19:55:02 1996 Jim Wilson + + * sched.c (schedule_block): Before scheduling, add code to make all + call used regs 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 + + * 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 + + * rs6000.md (movdi define_splits): Fix previous change to work + on both little and big endian hosts. + +Sun Oct 6 16:52:34 1996 Jeffrey A Law (law@cygnus.com) + + * pa.h (combinable_fsub): Don't return without a value. + +Sun Oct 6 14:05:39 1996 Michael Meissner + + * rs6000.md (mov{df,di} define_splits): Use split_double to + properly split CONST_DOUBLEs. + (movdi): Likewise. + +Sat Oct 5 08:43:14 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * i386/cygwin32.h (LIB_SPEC): Add support for -mwindows. + Always pass -lkernel32. + (LIBGCC_SPEC): Don't delete. + (STARTFILE_SPEC): Remove always-true conditionalization. + (LONG_DOUBLE_TYPE_SIZE): Use default. + +Fri Oct 4 17:22:53 1996 Jason Merrill + + * toplev.c (rest_of_type_compilation): Don't emit DWARF for member + types of a type we haven't emitted yet. + (compile_file): Still emit DWARF for pending tagged types. + + * final.c (final_scan_insn): Do emit DWARF labels for level 1 blocks. + + * dwarf2out.c (gen_subprogram_die): Start from the outer block, not + the first inner block since there can be more than one in C++. + (gen_lexical_block_die): Keep track of the block depth. + (gen_block_die): Don't emit a DIE for a body block. + (gen_inlined_subroutine_die): Don't emit anything for an + abstract instance. + (decls_for_scope): Don't increment next_block_number for the + outer block. + +Fri Oct 4 15:27:55 1996 J"orn Rennecke + + * sh.h (PRESERVE_DEATH_INFO_REGNO_P): Define. + + * sh.c (sfunc_uses_reg): New function. + (noncall_uses_reg, machine_dependent_reorg, final_prescan_insn): + Handle special functions like function calls for purposes of relaxing. + (noncall_uses_reg): Added some missing cases of registers + being used in non-call instructions. + +Fri Oct 4 10:51:40 1996 Jason Merrill + + * dwarf2out.c: Tear out backchaining brain damage. + (remove_AT, remove_children): New functions. + (modified_type_die): Call gen_type_die instead of backchaining. + (gen_subprogram_die): Don't generate a new specification DIE for + member functions defined in the class; use the declaration DIE instead. + (gen_struct_or_union_type_die): Support DW_AT_declaration. + (gen_type_die): Don't set TREE_ASM_WRITTEN on incomplete structs. + (gen_decl_die): Revert previous change; it's much simpler to emit + the class from rest_of_type_compilation. + +Fri Oct 4 09:54:21 1996 J"orn Rennecke + + * Make sure we have enough registers for the insns we recognize. + * i386.h (flag_omit_frame_pointer, outer_function_chain): Declare. + (current_function_calls_alloca): Likewise + (rtx_equal_function_value_matters): Likewise + (N_REGS_USED, N_ALLOCATABLE_REGISTERS): Define. + + * i386.md (adddi3_1, subdi3_1): Insns renamed from adddi3 and subdi3; + added missing earlyclobbers. + (adddi3_1): Removed duplicates from commutativity. + (adddi3, subdi3): New define_expands. + (movsf, movsf_mem, movsf_normal, movdf, movdf_mem , movdf_mem+1): Take + number of used vs. available registers into account. + (movxf, movxf_mem, movxf_mem+1, addsidi3_1, addsidi3_2): Likewise. + (adddi3_1, subsidi3, subdi3_1): Likewise. + (addsidi3_1, addsidi3_2, subsidi3): Need no generate function. + + * i386.c (asm_output_function_prefix): Don't use + ASM_DECLARE_FUNCTION_NAME if it is not defined. + +Fri Oct 4 07:01:55 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stor-layout.c (layout_decl): Don't turn off DECL_BIT_FIELD + if DECL's alignment is less than its type. + +Thu Oct 3 19:42:30 1996 Jason Merrill + + * toplev.c (rest_of_type_compilation): Also do this for DWARF. + (compile_file): Don't try to write out DWARF for vars with no RTL. + +Thu Oct 3 18:31:28 1996 Doug Evans + + * ginclude/{stdarg.h,varargs.h}: Use #include "", not #include <>. + +Wed Oct 2 17:29:53 1996 Ian Lance Taylor + + * fixincludes: Add a hack to the big sed script to work around a + bug in the sed implementation on HP/UX 10.20. + +Wed Oct 2 16:53:56 1996 Jason Merrill + + * dwarf2out.c (modified_type_die): Don't generate redundant DIEs. + (gen_{array,pointer,reference,ptr_to_mbr}_type_die): Likewise. + (gen_{subroutine,string,set}_type_die): Likewise. + + * dwarf2out.c: Undo text_end_label, add_src_coords changes. + (addr_const_to_string): Fix typos. + (decl_class_context): 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 + + * dwarf2out.c (text_end_label): New static. + (size_of_line_info): The final entry is smaller. + (output_aranges): Use TEXT_SECTION instead of TEXT_BEGIN_LABEL and + text_end_label instead of TEXT_END_LABEL. + (gen_compile_unit_die): Likewise. + (output_line_info): Likewise. Use a fixed advance for the last entry. + (dwarfout_init): Don't output starting labels. + (dwarfout_finish): Set up text_end_label. Don't output ending labels. + + (add_pure_or_virtual_attribute): Don't say pure virtual for now. + (type_tag): Handle C++ TYPE_NAME. + (gen_formal_parameter_die): Support DW_AT_artificial. + (gen_formal_types_die): Do emit the type for 'this'. + (gen_member_die): Fix handling of TYPE_METHODS. + (gen_decl_die): Do output a DIE for member function declarations. + Don't output a DIE for artificial typedefs. + + (add_member_attribute): Remove, not in DWARF-II. + (gen_array_type_die): Remove ref to add_member_attribute. + (gen_set_type_die, gen_entry_point_die, gen_enumeration_type_die, + gen_subprogram_die, gen_variable_die, gen_field_die, + gen_pointer_type_die, gen_reference_type_die, gen_ptr_to_mbr_type_die, + gen_string_type_die, gen_struct_or_union_type_die, + gen_subroutine_type_die, gen_typedef_die): Likewise. + + (get_AT_flag): New fn. + (add_src_coords_attributes): Split out... + (add_name_and_src_coords_attributes): From here. + (gen_subprogram_die): Support DW_AT_declaration and + DW_AT_specification. + + (gen_compile_unit_die): Don't emit full pathname for source file; + comment claimed that SGI required it, but they don't emit it either. + Append -g to producer rather than replacing it. + +Tue Oct 1 14:19:23 1996 Jim Wilson + + * gcc.c (used_arg): When call xmalloc for mswitches, pass 1 if + n_switches is zero. + +Mon Sep 30 17:46:26 1996 J"orn Rennecke + + * sh.c (gen_shl_and, gen_shl_sext): Use gen_lowpart to + generate rtx in the appropriate mode for zero/sign-extension. + Don't generate a zero bit shift. + (gen_shl_sext) Directly use gen_ashift instead of gen_ashrsi3. + +Mon Sep 30 17:17:56 1996 Ian Lance Taylor + + * fixinc.svr4: In math.h, redefine exception to __math_exception + for C++, to avoid conflict with . + * fixincludes: Likewise. + Fix check for class in math.h to not match fp_class. + +Mon Sep 30 17:15:19 1996 Jim Wilson + + * iris6.h (ASM_SPEC): Add -w. + (STARTFILE_SPEC): Add mips3 to n32 pathnames. + Add -L/usr/lib32/mips for n32 cases. + (ENDFILE_SPEC): Add mips3 to n32 pathnames. + +Mon Sep 30 13:20:31 1996 Ian Lance Taylor + + * genopinit.c (gen_insn): Look through the modes in reverse order, + to avoid stopping early on CC when EXTRA_CC_MODES is used. + + * fixincludes: Add extern "C" to on HP/UX. + +Sun Sep 29 12:39:18 1996 Michael Meissner + + * c-typeck.c (pointer_diff): Do not do default conversions when + doing the minus expression, in case restype is a short type. + +Sun Sep 29 11:22:10 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (build_complex): Add new argument, TYPE. + * tree.h (build_complex): Likewise. + * c-lex.c (yylex): Add new arg, TYPE, to call to build_complex. + * fold-const.c (const_binop): Likewise. + (fold, case CONJ_EXPR, COMPLEX_EXPR): Likewise. + * varasm.c (copy_constant, case COMPLEX_CST): Likewise. + * expr.c (expand_expr, case COMPONENT_REF): Don't try to directly + load a complex. + * recog.c (register_operand): Don't reject subreg of complex mode. + * emit-rtl.c (mark_user_reg): New function. + * function.c (assign_parms): Use it. + * stmt.c (expand_decl): Likewise, and simplify code. + + * tree.c (contains_placeholder): Return 1 for PLACEHOLDER_EXPR. + + * expr.c (store_expr): memset/bzero gets ptr_mode, not Pmode. + + * stmt.c (expand_asm_operands): Fix errors in previous patches. + + * x-linux: Simplify, but ensure headers aren't changed. + + * getpwd.c: No longer include direct.h for _WIN32. + + * configure (i[3456]86-*-isc*): Remove bogus echo. + (m68k-apple-aux*): a-ux.h renamed from aux.h. + (CC): Escape "$" char in "no-symlink" case for bash/cygwin32 bug. + + * Makefile.in (installdirs): Renamed from install-dir. + Create $(prefix) and $(exec_prefix) if doesn't exist. + (install-float): Reflect new name for installdirs. + (install-{common,info,man,libgcc,multilib,libobjc}): Likewise. + (install-{include-dir,assert-h,collect2}): Likewise. + + * reload1.c (gen_reload): Handle SUBREG in PLUS specially too. + Change calls to emit_move_insn to recursive calls. + + * stmt.c (fixup_gotos): When running undefined labels, if no cleanup + actions for this block, don't clear BEFORE_JUMP. + +Fri Sep 27 13:48:21 1996 Michael Meissner + + * c-decl.c (init_decl_processing): Create short int types before + creating size_t in case a machine description needs to use + unsigned short for size_t. + +Fri Sep 27 12:28:54 1996 Stan Cox + + * gcc.c (do_spec_1): Allow -A in %[Spec]. + + * i386.h (CPP_CPU_SPEC): New. Added for defining the submodel. + + * i386.c (asm_output_function_prefix, function_prologue, + ix86_expand_prologue): Make the routine that sets the GOT (when pic + is enabled) a function, to assist debugging. + + * i386.md (gen_prologue_get_pc): Call the function created above. + (divdf3): Added. + + * i386/dgux.h (CPP_PREDEFINES, CPP_SPEC): Reference CPP_CPU_SPEC. + Use svr4 assembler directive .backalign instead of .align. + (align to x bytes if it takes no more than y bytes to do so.) + + * i386/{aix386ng.h,dgux.h} (CPP_SPEC): Use %[cpp_cpu]. + * i386/{freebsd-elf,gas,isc,linux-aout}.h: Likewise. + * i386/{linux-oldld,linux,osfelf,osfrose,sco,sco4}.h: Likewise. + * i386/{sco4dbx,sco5,sol2,sysv3}.h: Likewise. + +Thu Sep 26 17:58:34 1996 Torbjorn Granlund + + * m68k.md (mulsidi3 matcher): Change predicate const_int_operand + to const_sint32_operand. Get rid of bogus range condition. + +Thu Sep 26 17:12:00 1996 Jim Wilson + + * Makefile.in (stmp-int-hdrs): Don't cd to srcdir before copying + header files to objdir. + +Wed Sep 25 21:22:57 1996 Jeffrey A Law (law@cygnus.com) + + * h8300.h (FIRST_PSEUDO_REGISTER): 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 + + * sh.md (insv): New pattern. + +Wed Sep 25 16:47:26 1996 Doug Evans + + * sparc/t-sunos41 (MULTILIB_{OPTIONS,DIRNAMES,MATCHES}): Create + multilib versions of -fpic and -fPIC. + (TARGET_LIBGCC2_CFLAGS): Comment out. + + * sparc.c (print_operand): Handle new codes H/L. + * sparc.md (lo_sum_di_sp32): Add little endian support. + (adddi3_sp32,subdi3_sp32,mulsidi3_sp32,const_mulsidi3): Likewise. + (umulsidi3_sp32,const_umulsidi3,smacdi,umacdi,anddi3_sp32): Likewise. + (iordi3_sp32,xordi3_sp32,negdi2_sp32): Likewise. + +Wed Sep 25 15:32:35 1996 Jim Wilson + + * expmed.c (store_bit_field): Don't make flag_force_mem disable insv + for memory operands. + + * function.c (instantiate_decl): Always store addr back into x. + +Tue Sep 24 19:37:00 1996 Jim Wilson + + * reload.c (push_secondary_reload): Do strip paradoxical SUBREG + even if reload_class is CLASS_CANNOT_CHANGE_SIZE. Change reload_mode + to mode in SECONDARY_MEMORY_NEEDED and get_secondary_mem calls. + + * reload1.c (emit_reload_insns): For output part of RELOAD_OTHER, + emit after RELOAD_FOR_OUTPUT, in reverse order of reload number, + but not separately. + +Tue Sep 24 18:13:07 1996 Michael Meissner + + * expr.c (emit_group_load): Allow target to be smaller than source. + +Tue Sep 24 17:40:39 1996 Doug Evans + + * m68k/a-ux.h: Renamed from aux.h because of MSDOS. + +Tue Sep 24 08:33:53 1996 David S. Miller (davem@caip.rutgers.edu) + + * tree.c (copy_node): Fix error in last change. + +Tue Sep 24 08:29:03 1996 James G. Smith + + * gcc.c (used_arg): Fix multilib_matches parsing to not corrupt + entry parameter. + +Tue Sep 24 08:22:18 1996 J"orn Rennecke + + * loop.c (get_condition): Use rtx_equal_p to compare rtx. + +Tue Sep 24 08:14:01 1996 Christian Iseli + + * integrate.c (expand_inline_function): Avoid creating paradoxical + subreg wider than BITS_PER_WORD as inlined function result. + +Tue Sep 24 08:00:15 1996 Paul Eggert + + * cccp.c (struct directive, directive_table, handle_directive): + pass_thru now 1 for #define and 2 for #pragma. + (handle_directive): When deciding whether to suppress comment at end + of directive, ignore tabs and spaces after comment. Remove redundant + limit test. With -dD -C, copy comment when isolating definition. + (skip_to_end_of_comment): With -C, don't copy newline at end + of C++ comment. + + * fixinc.ptx, fixinc.svr4, fixincludes: Insert newlines just before + end of 'sed' command strings if last 'sed' command is 'a' or 'i'. + +Tue Sep 24 07:28:58 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * toplev.c (PREFERRED_DEBUGGING_TYPE): If no debugging formats are + supported, set to NO_DEBUG. + (main): Don't do setting of PREFERRED_DEBUGGING_TYPE here. + +Mon Sep 23 22:45:15 1996 Sean McNeil + + * rs6000/vxppc.h, sparc/vxsim.h: New files. + * configure (powerpc-*-vxworks*, sparc-*-vxsim*): New targets. + * objc/objc.h (BOOL): Define BOOL as int for VxWorks. + +Mon Sep 23 21:23:27 1996 Klaus K"ampf (kkaempf@progis.de) + + * explow.c (promote_mode, case REFERENCE_TYPE): New case. + +Mon Sep 23 21:15:43 1996 Andreas Schwab + + * c-decl.c (finish_struct): Check PCC_BITFIELD_TYPE_MATTERS value. + + * dbxout.c (dbxout_symbol): Fix forgotten case in last change: + check DECL_ARTIFICIAL also when using the short cut way. + +Mon Sep 23 15:55:24 1996 David S. Miller (davem@caip.rutgers.edu) + + * tree.c (copy_node): Abort if don't know size of node. + + * tree.c (build1): Clean up initialization of OBSTACK. + +Mon Sep 23 15:35:33 1996 Jason Merrill + + * Makefile.in (stmp-multilib): Depend on $(LANG_LIB2FUNCS). + + * dbxout.c (dbxout_function): Don't check DECL_SECTION_NAME before + calling dbxout_function_end. + +Mon Sep 23 14:41:12 1996 J"orn Rennecke + + * combine.c (can_combine_p): Even if SMALL_REGISTER_CLASSES, + know lifetime not extended if all_adjacent set. + + * stmt.c (expand_asm_operands): Handle '+' constraint. + * cse.c (fold_rtx): Fold inside ASM_OPERANDS. + + * expr.c (expand_increment): If postincrement for MEM can't use add + directly, load address in reg and enqueue increment and store of reg. + + * loop.c (check_dbra_loop): Don't assume label must be second part of + if_then_else in condjump. + + * jump.c (jump_optimize): In no-nop move deletion, don't + test PRESERVE_DEATH_INFO_REGNO_P; instead test if optimization is + performed. + Check for REG_UNUSED note on to-be deleted insn before searching for + preceding instruction to delete note from. + If PRESERVE_DEATH_INFO_REGNO_P is true for SREG, replace INSN with USE. + + * reload1.c (reload): Initialize the previous_offset fields + in reg_eliminate before calling setup_save_areas. + + * reload1.c (emit_reload_insns): Declare and set this_reload_insn. + + * expr.c (var_rtx): New function. + (expand_expr, case COND_EXPR): Also use target if same as singleton. + +Mon Sep 23 14:22:34 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * recog.c (constrain_operands): Don't test clobbered constraints. + + * reload1.c (emit_reload_insns): For output part of RELOAD_OTHER, + put in front of anything previous for that output, but not separately. + +Sun Sep 22 21:06:46 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-common.c (decl_attribtes, case A_SECTION): Allow for static + local variable. + +Sun Sep 22 11:30:27 1996 Christian Iseli (christian.iseli@di.epfl.ch) + + * expr.c (convert_move): Replace explicit checks for FP extend ops + with use of can_extend_p. + Add missing tests for FP trunc operations. + +Sun Sep 22 11:20:02 1996 Pat Rankin + + * dwarfout.c (DWARF_VERSION): Define as 1 if not already defined. + * dwarf2out.c (DWARF_VERSION): Likewise. + +Sun Sep 22 11:12:20 1996 Joern Rennecke + + * c-decl.c (pushdecl): Check new declaration actually conflicts before + warning about implicit external vs. static declarations. + + * loop.c (combine_givs): Improve combining DEST_REG giv with + its only use. + +Sun Sep 22 10:50:03 1996 Scott Christley + + * Create consistent mechanism for memory allocation and release + so that garbage collection routines can be easily subsititued + for the ANSI standard malloc, realloc, free, etc. + * objc/archive.c: Replace use of __objc_xmalloc and free + with objc_malloc and objc_free. + * objc/hash.c: Replace use of __objc_xcalloc and free + with objc_calloc and objc_free. + * objc/init.c: Replace use of free with objc_free. + * objc/misc.c (objc_malloc): Renamed from __objc_xmalloc. + (objc_realloc): Renamed from __objc_realloc. + (objc_atomic_malloc): 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 + + * configure: Set up LANG_LIB2FUNCS and LANG_EXTRA_HEADERS. + * Makefile.in (libgcc2.a): Include LANG_LIB2FUNCS. + (USER_H): Add LANG_EXTRA_HEADERS. + (LANG_LIB2FUNCS): New macro. + (LANG_EXTRA_HEADERS): New macro. + (stmp-int-hdrs): Don't hardwire ginclude. + (stamp-objlist): Don't depend on Makefile. + +Sat Sep 21 18:00:10 1996 Stephen L Moshier (moshier@world.std.com) + + * alpha.md (alpha_swapped_comparison_operator pattern): Fix asm + operand typo in last change. + +Sat Sep 21 07:11:51 1996 J"orn Rennecke + + * defaults.h (ASM_OUTPUT_LABELREF): Provide default definition + if not already defined. + * 1750a.h (USER_LABEL_PREFIX): Define instead of ASM_OUTPUT_LABELREF. + * a29k.h, alpha.h, convex.h, dsp16xx.h, elxsi.h, fx80.h: Likewise. + * gmicro.h, h8300.h, i386/sun386.h, i860.h, i960.h, ns32k.h: Likewise. + * pdp11.h, pyr.h, romp.h, sh.h, sparc.h, spur.h, tahoe.h: Likewise. + * vax.h, we32k.h: Likewise. + * i386/att.h (USER_LABEL_PREFIX): Redefine, not ASM_OUTPUT_LABELREF. + * i386/bsd.h, i386/lynx.h, i386/sco5.h, i860/fx2800.h: Likewise. + * m68k/3b1.h, m68k/mot3300.h, m68k/tower-as.h, m68k/tower.h: Likewise. + * ptx4.h, sparc/pbd.h, svr3.h, svr4.h: Likewise. + * i386/osfrose.h, m88k.h (USER_LABEL_PREFIX): Redefine. + * nextstep.h (USER_LABEL_PREFIX): Redefine. + (ASM_OUTPUT_LABELREF) Use USER_LABEL_PREFIX. + * arm/aout.h, mips.h (ASM_OUTPUT_LABELREF): Delete. + * rs6000/lynx.h (USER_LABEL_PREFIX): Undefine. + * rs6000.h, rs6000/win-nt.h (USER_LABEL_PREFIX): Define. + +Thu Sep 19 00:05:53 1996 Jason Merrill + + * configure: Move i[3456]86-*-gnu* case after linux and don't + treat linux-gnu like other gnu systems. + +Wed Sep 18 20:51:09 1996 Jason Merrill + + * cplus-dem.c (demangle_template): Fix handling of address args. + (gnu_special): Handle type_info stuff. + +Wed Sep 18 17:57:55 1996 Patrik Lantto (patrik@opq.se) + + * jump.c (jump_optimize): Insert conditional move after jump + insn instead of before. + +Wed Sep 18 17:33:36 1996 Richard Henderson + + * alpha.h (PREDICATE_CODES): Add alpha_swapped_comparison_operator. + * alpha.c (alpha_swapped_comparison_operator): New function. + (print_operand): Support unsigned codes for %D, %c, and %d. + * alpha.md: Add pattern for b%c with swapped comparisons with 0. + Delete three unnamed cmp patterns that are strict subsets of it. + + * alpha.c (alpha_emit_set_long_const): Save one instruction + when -O2 and high word == low word. + +Tue Sep 17 22:46:15 1996 Jason Merrill + + * i386/unix.h (ASM_OUTPUT_MI_THUNK): Handle functions + returning an aggregate. + + * varasm.c (supports_one_only): New function. + (make_decl_one_only): Likewise. + * svr4.h (MAKE_DECL_ONE_ONLY): Define. + * tree.h (DECL_ONE_ONLY): New macro. + + * varasm.c (assemble_variable): Fix setting of + first_global_object_name. + (assemble_start_function): Likewise. + +Tue Sep 17 19:42:39 1996 Doug Evans + + * i386/t-cygwin32 (winnt.o): Compile properly. + +Tue Sep 17 15:47:20 1996 Ian Lance Taylor + + * Add support for 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 + + * sh.md: New define_splits to recombine output from LEGITIMIZE_ADDRESS. + * sh.h (LEGITIMIZE_ADDRESS): Typo fixes (x -> X). + +Mon Sep 16 23:00:35 1996 Jim Wilson + + * configure (build_broken_install): Renamed from host_broken_install. + Set from build not host. + (build_install_headers): Renamed from host_install_headers. Set from + build not host. + +Mon Sep 16 22:38:55 1996 Stu Grossman (grossman@critters.cygnus.com) + + * configure (m68k-*-coff*): Use dbx debug format by default. + * gcc.c (link_command_spec): Move -T to end of link command line. + * m68k/m68kemb.h (LINK_SPEC, SUBTARTGET_SWITCHES): Delete. + (LIB_SPEC): Define to just -lc. + (STARTFILE_SPEC): Define to empty. + +Mon Sep 16 13:12:27 1996 J"orn Rennecke + + * sh.c (ext_shift_insns, ext_shift_amounts): new arrays. + (gen_ashift_hi, gen_shifty_hi_op, shl_and_kind): new functions. + rtx_equal_function_value_matters: declare. + (shl_and_length, shl_and_src_length, gen_shl_and): new functions. + (shl_sext_kind, shl_sext_length, gen_shl_sext): 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 + + * sparc/lb1spc.asm (.div, .rem): Fixed typo so sign is returned + correctly. TOPBITS was 2 and should have been 4. + +Thu Sep 12 21:51:56 1996 Jim Wilson + + * mips.md (call_value_multiple_internal0): Change from define_insn to + define_expand. + +Thu Sep 12 19:22:14 1996 Doug Evans + + * sparc.md (move_pic_label_si): Operand one is label_ref now. + * sparc.c (emit_move_sequence): Pass label_ref to + gen_move_pic_label_si to not lose flags. + +Wed Sep 11 12:10:08 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * Makefile.in (GCC_PASSES): Add $(exeext) to names. + (FLAGS_TO_PASS): Add CLIB. + (c-pragma.o): Add dependencies on except.h, function.h, defaults.h. + +Tue Sep 10 22:25:03 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure (i[3456]86-*-cygwin32): Use xm-cygwin32.h and xm-i386.h. + Set fixincludes to Makefile.in and objc_thread_file to win32. + * i386/xm-cywin32.h: Don't include xm-i386.h. + * i386/x-cygwin32, rs6000/x-cygwin32 (STMP_FIXPROTO, exeext): New defs. + + * gcc.c (HAVE_EXECUTABLE_SUFFIX): New macro. + (convert_filename): New function. + (process_command, case 'o'): Call it. + (process_command, default case): Likewise; delete old code. + +Tue Sep 10 21:08:43 1996 Torbjorn Granlund + + * i386.md (decrement_and_branch_until_zero matcher): Fix typo. + +Tue Sep 10 19:04:19 1996 Jim Wilson + + * mips.c (mips_move_2words): Rewrite 32 bit shifts as 16 bit shifts. + +Tue Sep 10 10:39:07 1996 Jeffrey A Law (law@cygnus.com) + + * pa/pa-gas.h (DBX_DEBUGGING_INFO): Remove all #define + and #undef statements related to debugging information. + * pa/pa-hpux.h, pa-hpux7.h: Likewise + * pa.c (override_options): Disable "-g" and issue a warning + if it's used when !TARGET_GAS. + +Mon Sep 9 17:57:49 1996 Doug Evans + + * sparc.h ({MASK,TARGET}_FPU_SET): Define. + (TARGET_SWITCHES): Record if -m{,no-}fpu passed. + * sparc.c (sparc_override_options): Don't clobber explicit + -m{,no-}fpu setting with cpu default. + +Mon Sep 9 15:57:57 1996 Joel Sherrill + + * configure (mips64orion-*-rtems*): New target. + * mips/rtems64.h: New file. + +Sat Sep 7 22:07:53 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (store_field): If storing a record on big endian targets, + set up so we store the high-order bits. + (expand_expr, case COMPONENT_REF): Likewise for loads. + +Thu Sep 5 14:59:47 1996 J"orn Rennecke + + * sh.h (LEGITIMIZE_ADDRESS): Define nonempty. + +Thu Sep 5 10:43:36 1996 Jeffrey A Law (law@cygnus.com) + + * pa.md (movsi, movdi, movsf patterns): Handle + 'R' constraints as needed. + +Wed Sep 4 17:13:28 1996 Bob Manson + + * except.c: (add_partial_entry): New routine. + (expand_start_try_stmts): Moved from cp/except.c. + (expand_start_all_catch): Move functionality of expand_end_try_stmts + here. + +Wed Sep 4 12:30:02 1996 Mike Stump + + * except.c (emit_unwinder): Ensure that CLOBBER and USE insns come + last, if present. + +Tue Sep 3 12:01:43 1996 Ian Lance Taylor + + * configure (sh-*-elf*): New target. + * sh/elf.h: New file. + +Fri Aug 30 17:52:26 1996 Jim Wilson + + * dwarf2out.c (gen_formal_types_die): Delete extra argument from + gen_type_die call. + +Fri Aug 30 15:40:40 1996 James G. Smith + + * mips/elf64.h: Allow MULTILIB_DEFAULTS to be defined + before this file is included. + +Fri Aug 30 15:00:06 1996 Stan Cox + + * i386.md: (movsicc,movhicc): Allow reload from memory. + + * i386.c (override_options): Don't thread the prologue if profiling. + +Fri Aug 30 15:00:06 1996 James Hawtin + + * i386/t-sol2 (gcrt1.o): Added for profiling Solaris 2 + * i386/sol2.h (STARTFILE_SPEC): New. + * i386/gmon-sol2.c, i386/sol2-gc1.asm: New files. + +Thu Aug 29 22:08:03 1996 Jim Wilson + + * except.c (add_eh_table_entry): Multiply realloc size by sizeof int. + +Thu Aug 29 15:15:31 1996 Jeffrey A Law (law@cygnus.com) + + * pa.md (fcmp patterns): Don't try to eliminate useless add,tr + insns here. + * pa.c (pa_reorg): Do elimination of useless add,tr insns here instead. + (print_operand, case 'y'): Remove this code. + +Wed Aug 28 16:19:34 1996 Doug Evans + + * toplev.c (print_single_switch): Ultrix fprintf returns 0 for success. + + * toplev.c (main): Rewrite -g parsing. + +Mon Aug 26 16:15:49 1996 Fred Fish + + * Makefile.in (objc-parse.y): Fix typo in name of temp file. + +Mon Aug 26 14:08:37 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (mark_all_temps_used): Fix error in last change. + +Sun Aug 25 22:27:19 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (mark_all_temps_used): New function. + +Fri Aug 23 11:34:57 1996 Michael Meissner + + * rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Fixes to make -fPIC + really the same as -mrelocatable. + (ASM_SPEC): Pass -K PIC to the assembler if -fpic/-fPIC. + + * rs6000/sol2.h (ASM_CPU_SPEC): Remove passing -K PIC to the + assembler if -fpic/-fPIC. + + * bi-{arity,opcode,opname}.c (fancy_abort): Define, so that + -Dabort=fancy_abort works again. + +Thu Aug 22 11:39:34 1996 Michael Meissner + + * rs6000/t-ppcgas ({stmp,install}-crt): Only build and install the + eabi ecrt[in].o object files in eabi multilib directories, only + build and install the solaris scrt[in0].o object files in solaris + directories. + (MULTILIB_MATCHES): Remove matches for solaris, linux to other + switches. + +Tue Aug 20 18:49:55 1996 Michael Meissner + + * rs6000/sysv4.h (ASM_OUTPUT_SECTION_NAME): If -mrelocatable or + -mrelocatable-lib, don't make read-only sections, since if there + are pointers to be fixed up, the assembler complains. + +Mon Aug 19 18:42:13 1996 Doug Evans + + * sparc.h ({MASK,TARGET}_LITTLE_ENDIAN): Define. + (LIBGCC2_WORDS_BIG_ENDIAN): Add little endian support. + * sparc/sp64-elf.h ({CPP,ASM,LINK}_SPEC): Add little endian support. + (SUBTARGET_SWITCHES): Recognize -m{big,little}-endian. + ({BYTES,WORDS}_BIG_ENDIAN): Likewise. + * sparc/splet.h (SUBTARGET_SWITCHES): Recognize -m{big,little}-endian. + ({CPP,ASM,LINK}_SPEC): Add little endian support. + ({BYTES,WORDS}_BIG_ENDIAN): Likewise. + * sparc/t-splet (MULTILIB_{OPTIONS,DIRNAMES}): Likewise. + + * sparc/lynx-ng.h (CPP_SPEC): Use %(cpp_cpu). + +Sat Aug 17 15:23:39 1996 Geoffrey Noer + + * i386/cygwin32.h (CPP_PREDEFINES): Define _WIN32, not WIN32. + Define only __CYGWIN32__, not CYGWIN32 or __CYGWIN32. + * rs6000/cygwin32.h (CPP_PREDEFINES): Likewise. + * cccp.c (absolute_filename): Drive specifiers make the pathname + absolute in cygwin32. + * choose-temp.c: Delete !defined(_WIN32) condition when including + sys/file.h (NO_SYS_FILE_H is still used). + * gcc.c: Change ifndef _WIN32 to ifndef NO_SYS_FILE_H when deciding + whether to include sys/file.h. + (execute): -pipe is supported for cygwin32. + * getopt.c: Change win32 test from WIN32 to _WIN32. + * pexecute.c: Update test for win32 (&& ! cygwin32). + * protoize.c: Likewise. + (kill): Delete decl. + * toplev.c: Update test for win32 (&& ! cygwin32). + * ginclude/stdarg.h: Change __WIN32__ to _WIN32. + * ginclude/varargs.h: Likewise. + * ginclude/va-ppc.h: Likewise. + +Fri Aug 16 16:02:09 1996 Michael Meissner + + * rs6000.c (rs6000_got_register): Make sure pic_offset_table_rtx + allocated, even if current_function_uses_pic_offset_table set. + +Fri Aug 16 15:56:04 1996 J. Kean Johnston + + * i386/sco5.h (CLASS_LIKELY_SPILLED_P): Deleted. + (STARTFILE_SPEC): Insert crtbegin.o in correct place, and correct + versions of values-X?.o. + (SWITCH_TAKES_ARG): Extend DEFAULT_SWITCH_TAKES_ARG, not replace. + (CPP_SPEC): Add -Di386, and correctly include extra directories. + Define HAVE_ATEXIT in ELF mode for global destructors. + +Thu Aug 15 16:42:44 1996 Doug Evans + + * sparc.c (label_ref_operand): New function. + (emit_move_sequence): Pass label_ref to gen_move_label_di to not + lose flags. + * sparc.md (move_label_di): Operand one is label_ref now. + * genattrtab.c (write_test_expr): Allow label_ref in match_dup. + + * sys-protos.h (gethostid): Make return type `int' ifdef __alpha__. + * gen-protos.c: Delete support for SYS_PROTO_OVERRIDES. + * alpha.h (SYS_PROTO_OVERRIDES): Delete. + +Thu Aug 15 17:36:09 1996 Mike Stump + + * libgcc2.c (__throw): New routine. + (__eh_pc): New data object for exception handling. + + * except.c (eh_saved_pc): New object so we can call + assemble_external. + (expand_internal_throw_indirect): Call assemble_external for __eh_pc. + (end_eh_unwinder): Likewise. + (init_eh): Initialize eh_saved_pc. + +Thu Aug 15 13:02:42 1996 Mike Stump + + * arm.h (RETURN_ADDR_RTX): Define. + + * expr.c (expand_builtin_return_addr): Fix order of parameters. + +Wed Aug 14 19:48:00 1996 Torbjorn Granlund + + * stmt.c (expand_return): In code for doing scc with jumps, + stick to default handling if we have corresponding scc pattern. + +Wed Aug 14 10:31:28 1996 Jeffrey A Law (law@cygnus.com) + + * pa.c (override_options): Treat TARGET_FAST_INDIRECT_CALLS + just like TARGET_NO_SPACE_REGS. + (output_millicode_call): Likewise. + * pa.h (TARGET_FAST_INDIRECT_CALLS): Define. + (TARGET_SWITCHES): Add "fast-indirect-calls". + * pa.md: 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 + + * ginclude/va-ppc.h: Add Windows NT support. + * ginclude/{varargs,stdarg}.h: For PowerPC Windows NT, include + va-ppc.h, instead of using the default handling. + +Tue Aug 13 18:30:10 1996 Ian Lance Taylor + + * fixincludes: Remove duplicate volatile from sig_atomic_t in AIX + sys/signal.h + +Tue Aug 13 16:51:37 1996 Jim Wilson + + * i960-coff.h (LIB_SPEC): Undef. + + * sh.h (PROFILE_BEFORE_PROLOGUE): Define. + +Tue Aug 13 11:36:02 1996 Michael Meissner + + * gcc.c (set_spec,process_command): Dump and load the compiler + version number in the specs file. + + * rs6000.c (output_toc): Fix last change, so that it doesn't use + an uninitialized variable if -mminimal-toc. + (output_prolog): Increment probe_labelno after last use. + + * rs6000/t-ppcgas (MULTILIB_*): Build far fewer multilib + libraries. Build all libraries with -mrelocatable-lib and + -mno-eabi. Build special 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 + + * gcc.c (used_arg): Initialize cnt to zero. + +Mon Aug 12 14:03:16 1996 Jim Wilson + + From Mike Stump: + * sh.c (regno_reg_class): Change entry 23 from NO_REGS to GENERAL_REGS. + (initial_elimination_offset): New variable live_regs_mask. Add + code to handle RETURN_ADDRESS_POINTER_REGNUM. + * sh.h (RAP_REG, RETURN_ADDRESS_POINTER_REGNUM): Define. + (ELIMINABLE_REGS): Add RETURN_ADDRESS_POINTER_REGNUM support. + (RETURN_ADDR_RTX): Define. + (REGISTER_NAMES): Add rap. + + * iris5.h (DOLLARS_IN_IDENTIFIERS): Undefine. + + * m68kemb.h (LIB_SPEC): Always emit -lc. + +Mon Aug 12 12:30:25 1996 Michael Meissner + + * rs6000.c (rs6000_got_register): Test variable + current_function_uses_pic_offset_table to see whether or not a GOT + register has been created already. + + * Makefile.in (multilib.h): Move to stamp-mlib. + (stamp-mlib): Use move-if-change to conditionally update + multilib.h. Pass MULTILIB_EXTRA_OPTS to genmultilib. + (STAGESTUFF): Add stamp-mlib. + (mostlyclean): Delete tmp-mlib.h. + + * genmultilib: Take 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 + + * expr.c (store_expr): Handle COND_EXPR cleanups like expand_expr. + +Sun Aug 11 22:42:36 1996 J"orn Rennecke + + * optabs.c (expand_abs): When OP0 and TARGET are the same + pseudo register, it is safe to use TARGET. + + * local-alloc.c (reg_equiv_replace): New variable. + (update_equiv_regs): Set reg_equiv_replacement for all REG_EQUIV + notes encountered or generated. + +Sun Aug 11 22:27:14 1996 Scott Christley + + * objc/hash.c (hash_is_key_in_hash): Function somehow got lost. + +Sun Aug 11 21:43:15 1996 Andreas Schwab + + * ginclude/stddef.h (__need_wint_t): Move #undef to right place. + +Sun Aug 11 17:46:22 1996 J"orn Rennecke + + * c-decl.c (finish_struct): If pedantic, also warn if struct/union + has no named members. + +Sun Aug 11 17:32:52 1996 Joel Sherrill + + * i386/rtems.h: Renamed from i386/i386-rtems.h + * i960/rtems.h: Renamed from i960/i960-rtems.h + * m68k/rtems.h: Renamed from m68k/m68k-rtems.h + * rs6000/rtems.h: Renamed from rs6000/powerpc-rtems.h + * sparc/rtems.h: Renamed from sparc/sparc-rtems.h + * config/t-rtems: New file. + * configure (i386-*-rtems*): Added t-rtems to tmake_file. + Renamed i386/i386-rtems.h to i386/rtems.h. + (i960-*-rtems*): Added t-rtems to tmake_file. + Renamed i960/i960-rtems.h to i960/rtems.h. + Added original tm.h file and dbxcoff.h. + (m68k-*-rtems*): Added t-rtems to tmake_file. + Renamed m68k/m68k-rtems.h to m68k/rtems.h. + (powerpc-*-rtems*): Added t-rtems to tmake_file. + Renamed rs6000/powerpc-rtems.h to rs6000/rtems.h. + (sparc-*-rtems*): Added t-rtems to tmake_file. + Renamed sparc/sparc-rtems.h to sparc/rtems.h. + +Fri Aug 9 16:05:13 1996 Stan Cox + + * i386.md: (untyped_call) Avoid SIGFPE. + + * i386.c (output_float_compare): Don't try to initialize + aggregate local variable; use assignment statements instead. + + * i386.h (RTX_COSTS): rtx_cost should pass two parameters. + + * i386/go32.h (ASM_OUTPUT_SECTION_NAME): New. + +Fri Aug 9 16:00:11 1996 Jim Wilson + + * winnt.c (gen_stdcall_suffix): Round parameter size to PARM_BOUNDARY. + +Thu Aug 8 17:42:35 1996 Michael Meissner + + * rs6000.c (output_toc): If we are emitting a reference to a + vtable, don't put in the section name, just use the symbol. + +Wed Aug 7 19:03:36 1996 Jim Wilson + + * sh.md (casesi_jump): New pattern. + (casesi): Generate RTL to match it. + +Wed Aug 7 14:10:07 1996 Jason Merrill + + * ginclude/stddef.h (NULL): Use __null for G++. + +Tue Aug 6 17:37:53 1996 Michael Meissner + + * rs6000/sysv4.h (STACK_BOUNDARY): Always define as 64. + (ABI_STACK_BOUNDARY): Define as 64/128 based on the -mno-eabi + switch. + + * rs6000.c (rs6000_stack_info): Use ABI_STACK_BOUNDARY, not + STACK_BOUNDARY. Define ABI_STACK_BOUNDARY as STACK_BOUNDARY #ifndef. + +Tue Aug 6 14:29:43 1996 Doug Evans + + * gen-protos.c (overrides): New static local. + (add_hash,parse_fn_proto): New static functions. + (main): Add prototypes from SYS_PROTO_OVERRIDES to hash table before + parsing sys-protos.h. Reserve entry 0 in std_protos. + * alpha.h (SYS_PROTO_OVERRIDES): Define. + +Mon Aug 5 16:53:36 1996 Doug Evans + + * sparc/t-splet (MULTILIB_OPTIONS): Add mbroken-saverestore. + (MULTILIB_DIRNAMES): Add brknsave. + + * stor-layout.c (layout_record): Correct overflow test for 0 sized + fields. + +Mon Aug 5 16:12:19 1996 Jim Wilson + + * alpha.c (alpha_output_filename): When emitting stabs, don't + disable them if using GNU as. + (alpha_output_lineno): Likewise, when not using GNU as. + + * sh.c (arith_reg_operand): Reject SUBREG of an invalid hard reg. + + * sparc/lite.h (aoutos.h): Don't include it. + * configure (sparclite-*-aout*): Add aoutos.h to tm_file. + +Sat Aug 3 23:13:55 1996 Jeffrey A Law (law@cygnus.com) + + * combine.c (rtx_equal_for_field_assignment_p): Check for + get_last_value returning (CLOBBER (CONST_INT 0)). + +Sat Aug 3 20:19:14 1996 Jim Wilson + + * i960.md (subsi3+1): Handle case where first operand is constant + but second operand is not. + + * m68k/vxm68k.h (WCHAR_TYPE_SIZE): Undef, then define to 16. + +Fri Aug 2 15:46:19 1996 Jeffrey A Law (law@cygnus.com) + + * pa/pa-hpux.h (LINK_SPEC): Don't link in PA1.1 specific + libraries when creating shared libraries. + * pa/pa-hpux9.h, pa/pa-hpux10.h: Likewise. + +Fri Aug 2 13:36:42 1996 Stan Cox + + * i386.c (output_float_compare): fcomi should be followed by the + correct conditional jump instead of fcom/pfstsw/and/jne + (override_options): Added -mbranch-cost to set BRANCH_COST. + + * i386.md (sgt+1,slt+1,sge+1,sle+1,bgt+1,blt+1,bge+1,ble+1,bleu+4) + Added TARGET_CMOVE check for fcomi. + (movsicc_1+1,movhicc_1+1): Added to handle the general case. + + * i386.h (i386_branch_cost, i386_branch_cost_string): Added. + +Fri Aug 2 11:53:55 1996 Brendan Kehoe + + * sparc/vxsparc.h (CPP_PREDEFINES): Add `-DCPU=SPARC'. + +Thu Aug 1 23:56:01 1996 Jeffrey A Law (law@cygnus.com) + + * pa.h (ASM_OUTPUT_INT): Remove all hacks for exception table. + +Thu Aug 1 10:08:14 1996 Torbjorn Granlund + + * m68k.h (RTX_COSTS, case PLUS): Get operand order right. + +Wed Jul 31 15:06:46 1996 Doug Evans + + * sparc.md (negtf2,abstf2): Fix v9 case. + +Wed Jul 31 09:49:25 1996 Jeffrey A Law (law@cygnus.com) + + * pa.h (ASM_OUTPUT_INT): Use an 'E%' prefix for items in + the exception table if TARGET_GAS && ! TARGET_PORTABLE_RUNTIME. + +Tue Jul 30 15:37:31 1996 Jim Wilson + + * i386/cygwin32.h (dbxcoff.h): Include. + (DBX_DEBUGGING_INFO, SDB_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE): + Move definitions before include of dbxcoff.h. + (ASM_OUTPUT_SOURCE_LINE, DBX_OUTPUT_MAIN_SOURCE_FILE_END): Delete. + (DBX_BLOCKS_FUNCTION_RELATIVE, DBX_FUNCTION_FIRST): Delete. + +Tue Jul 30 15:03:53 1996 Torbjorn Granlund + + * i960.md (eq reg (const_int 0)): New pattern. + +Tue Jul 30 11:15:44 1996 Jeffrey A Law (law@cygnus.com) + + * pa.h (RETURN_ADDR_RTX): Offset is -20 from the frame, not +20! + +Mon Jul 29 12:16:17 1996 Jeffrey A Law (law@cygnus.com) + + * pa.h (GO_IF_LEGITIMATE_ADDRESS): Fix thinko in last change. + +Fri Jul 26 18:19:47 1996 Doug Evans + + * dwarfout.c (output_bound_representation): Fix typo. + +Thu Jul 25 16:00:10 1996 Mike Stump + + * expr.c (do_jump, case TRUTH_ORIF_EXPR): Ensure end of an + exception region comes after its start. + (do_jump, case TRUTH_ANDIF_EXPR): Likewise. + +Thu Jul 25 13:36:42 1996 Stan Cox + + * i386.c (output_float_compare): Added support for Pentium Pro + fcomi instruction which sets EFLAGS instead of FPU Status Word. + +Wed Jul 24 21:48:08 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cse.c (canon_hash, cse_insn): MEM is not unchanging if it is + in the frame (since the temp slot might be reused). + +Wed Jul 24 17:34:06 1996 J"orn Rennecke (amylaar@cygnus.com) + + * sh.md (branch_true, branch_false, inverse_branch_true): Express + tests of the T bit as comparisons against zero, rather than one. + (inverse_branch_false, beq, bne, bgt, blt, ble, bge, bgtu): Likewise. + (bltu, bgeu, bleu, casesi): Likewise. + +Wed Jul 24 15:58:06 1996 Stan Cox + + * i386.md: (mov{sf,df,xf}cc{,_1}): New patterns for P6 FP cmove. + * i386.c (put_condition_code, print_operand, output_fp_cc0_set): + Support fcmov suffixes. + +Wed Jul 24 10:53:38 1996 Jeffrey A Law (law@cygnus.com) + + * pa.c (move_operand): Relax "mode" test. Allow scaled + indexed addressing modes. + (output_fp_move_double): Tweak output strings to work with updated + 'F' and 'M' output modifiers. + (print_operand): Collapse 'F' and 'M' into a single hunk of code. + For auto-increment modes output "s,ma" and "s,mb". + For scaled indexing modes output "x,s" + For other addresses, output nothing for 'M' and "s" for 'F'. + * pa.h (EXTRA_CONSTRAINT): Don't accept scaled indexed addresses + for 'Q' and 'T'. Do accept scaled indexed addresses for 'R'. + (GO_IF_LEGITIMATE_ADDRESS): Accept scaled indexed addresses + for SFmode and DFmode. + * pa.md: Remove all scaled indexed load patterns. + (movsi patterns): Accept scaled indexed addresses in some + cases. Update output strings for updated 'M' and 'F' output modifiers. + (movhi, movqi, movsf, movdf, movdi patterns): Likewise. + +Tue Jul 23 23:10:41 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.h (struct tree_int_cst): Add field for TREE_CST_RTL. + * varasm.c (decode_addr_const, output_constant_def): AllowINTEGER_CST. + +Tue Jul 23 16:42:09 1996 Jim Wilson + + * sh.c (reg_unused_after): Handle JUMP_INSN inside a sequence. + +Tue Jul 23 16:33:25 1996 Mike Stump + + * Make exception handling work better when optimizations are on. + * except.c, except.h: New files. + * Makefile.in (OBJS): Add except.o. + (except.o): Add. + (stmt.o, final.o): Add except.h. + * rtl.c (note_insn_name): Add NOTE_INSN_EH_REGION_{BEG,END}. + * rtl.h: Likewise. + * arm.h (MASK_RETURN_ADDR): Define. + * pa.h (MASK_RETURN_ADDR, RETURN_ADDR_RTX): New macros. + * sparc.h (DOESNT_NEED_UNWINDER): Define if not doing a flat function. + * mips.h (RETURN_ADDR_RTX): Improve. + * vax.h (RETURN_ADDR_RTX): Improve. + * toplev.c (rest_of_compilation): Use find_handler_labels. + (main, interim_eh{,_hook}): Remove interim_eh_hook support. + (flag_exceptions): New flag; also add to table. + (compile_file): Emit the exception table in the backend now. + * final.c (final_scan_insn): Support ASM_OUTPUT_EH_REGION_{BEG,END}. + (final_scan_insn): Redo handler labels, implement + NOTE_INSN_EH_REGION_BEG and NOTE_INSN_EH_REGION_END and use them + instead of CODE_LABELs. + (final): Add call to check_handler_labels. + * libgcc2.c (L_eh): Add support for EH_TABLE_LOOKUP. + * sparc.md (return): Add a reference to the return address register. + * flow.c (find_basic_blocks): Add support for handler_labels. + * loop.c (find_and_verify_loops): Likewise. + * jump.c (jump_optimize): Likewise. + Add call to check_handler_labels. Add call to exception_optimize. + * sched.c (sched_analyze): Smuggle exception region notes around. + (unlink_notes, reemit_notes, schedule_block): Likewise. + (sched_analyze): Add extra element since we remove two at a time. + * integrate.c (save_for_inline_copying): Add support for exception + regions. + (expand_inline_function): Likewise. + (function_cannot_inline_p): Don't inline functions that have EH + regions before NOTE_INSN_FUNCTION_BEG. + (finish_inline): Use FIRST_FUNCTION_INSN, not NEXT_INSN. + * function.c (expand_start_all_catch): New function. + * function.h: Add exception handling support information. + * expr.c (expand_expr, {defer,expand}_cleanups_to, do_jump): Transform + interim_eh_hook into calls to expand_ehregion_{start,end}. + * stmt.c (expand_{decl_cleanup,cleanups}): Likewise. + (init_stmt_for_function): Call init_eh. + (save_stmt_status): Call save_eh_status. + (restore_stmt_status): Call restore_eh_status. + * expr.h (throw_libfunc): Add. + * optabs.c (throw_libfunc): Initialize. + * print-rtl.c (print_rtx): Add support for exception regions. + * rs6000.c (EXCEPTION_SECTION): Define. + * output.h (exception_section): Declare. + * varasm.c (exception_section): Define. + * i386.c, i960.c, rs6000.c: Include except.h for function.h. + * c-pragma.c, emit-rtl.c, expr.c, final.c, flow.c: Include except.h. + * function.c, integrate.c, jump.c, loop.c, objc-act.c: Likewise. + * stmt.c, stor-layout.c, toplev.c, tree.c, varasm.c: Likewise. + +Tue Jul 23 12:32:54 1996 Michael Meissner + + * rs6000.c (rs6000_replace_regno): Set pic_offset_table_rtx so + that other phases will use the PIC register instead of the + placeholder. + + * rs6000.md (movsi_got*): Eliminate -fPIC code, keep -fpic code. + (movsi): Only call movsi_got if -fpic, not -fPIC. + + * sysv4.h (OVERRIDE_OPTIONS): Improve error messages. Always set + -msdata=data by default, even if -fpic/-fPIC/-mrelocatable. Treat + -fPIC the same as -mrelocatable-lib and vica versa. + + * t-ppcgas: (MULTILIB_*): Use -mreloctable-lib, instead of + -mrelocatable. Map Solaris into mcall-sysv-noeabi case. Build + -mrelocatable-lib libraries under non-eabi case. When linking, if + -fpic, -fPIC, or -shared, link in the -mrelocatable-lib libraries. + +Mon Jul 22 19:34:20 1996 Jim Wilson + + * iris6.h (ASM_SPEC): Change {% to %{. + + * dwarf2out.c (output_call_frame_info): Change FDE CIE offset to + be section name rather than 0. + (gen_subprogram_die): Only emit DW_AT_external if origin is NULL. + Only call equate_decl_number_to_die if origin is NULL. + (dwarfout_begin_function): In code that computes offset of frame + pointer, change 4 to UNITS_PER_WORD. + + * combine.c (undo_all): Clear previous_undos field. + +Mon Jul 22 19:10:45 1996 Ian Lance Taylor + + * configure: Don't change target_alias to target in Makefile. + +Sat Jul 20 09:28:38 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * dwarfout.c (output_bound_representation): Treat default case + as variable bounds, then look inside for SAVE_EXPR. + + * mips.h (INITIALIZE_TRAMPOLINE): Use `_flush_cache'; flush data + cache too. + +Sat Jul 20 09:24:13 1996 Marco Walther (Marco.Walther@mch.sni.de). + + * configure (mips-sni-sysv4): New target. + * mips/sni-gas.h, mips/sni-svr4.h, mips/x-sni-svr4: New files. + +Fri Jul 19 17:44:13 1996 Stan Coxs + + * i386.md: (leave): Clobbers esp and ebp. + + * i386.h: (TARGET_USE_Q_REG): Support inline strlen on PentiumPro + +Fri Jul 19 15:56:18 1996 Ian Lance Taylor + + * m68k/t-m68kbare (MULTILIB_OPTIONS): Add m5200. + (MULTILIB_EXCEPTIONS): Define. + * m68k/lb1sf68.asm: Add MCF5200 support. + * m68k.md (adddi_sexthishl32): Set condition to !TARGET_5200. + (subdi_sexthishl32, ashrdi3, ashrhi3): Likewise. + (negdi2): Change into define_expand. + (negdi2_internal): Rename from old negdi2; condition now !TARGET_5200. + (negdi2_5200): New insn. + * m68k.c (output_function_prologue): Don't use add.w if TARGET_5200. + (output_function_epilogue): Likewise. + + * m68k.md (movqi): Remove complex cases which move between address reg + and memory; rely on secondary reloads instead. + +Fri Jul 19 12:22:50 1996 Brendan Kehoe + + * fixproto (std_files): Add utime.h. + +Fri Jul 19 10:59:46 1996 Jeffrey A Law (law@cygnus.com) + + * m68k/m68kemb.h: Remove '\' at EOF. + +Fri Jul 19 09:59:00 1996 Joel Sherrill + + * m68k/coff.h (STARTFILE_SPEC): Add #undef before definition. + +Fri Jul 19 09:44:45 1996 J.T. Conklin + + * m68k.h (LEGITIMATE_INDEX_P): Coldfire does not have scale + by 8 addressing modes. + + * m68k-none.h: Use MASK_* macros instead of explicit constants. + +Fri Jul 19 09:08:53 1996 Philippe De Muyter + + * m68k.md (negdi2): Undo last change: don't apply neg to address regs. + +Fri Jul 19 09:03:01 1996 Robert Wilhelm (rwilhelm@Physik.TU-Muenchen.DE) + + * toplev.c (main): Correct typo in error message. + +Thu Jul 18 20:29:33 1996 Jim Wilson + + * Makefile.in (OBJS): Add dwarf2out.o. + (dwarf2out.o): New rule. + * dwarf2.h, dwarf2out.c: New files. + * dwarfout.c: Check DWARF_VERSION macro. + + * mips/iris6.h (DWARF_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE): + Move after header files are included. + (iris5.h): Include instead of iris5gas.h. + (MACHINE_TYPE): Change 5.x to 6.x. + (DEBUG_SECTION, LINE_SECTION): Add debug_ to name, fix attributes. + (SFNAMES_SECTION, SRCINFO_SECTION, MACINFO_SECTION, PUBNAMES_SECTION, + ARANGES_SECTION): Fix attributes. + (DWARF_VERSION, MIPS_DEBUGGING_INFO, ASM_DECLARE_FUNCTION_NAME, + ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED, + FRAME_SECTION, ABBREV_SECTION): Define. + (DBX_DEBUGGING_INFO, SDB_DEBUGGING_INFO, MIPS_DEBUGGING_INFO, + DWARF_DEBUGGING_INFO, PREFERRED_DEBUGGING_INFO): Delete undefs at + end of file. + * mips/mips.c (function_prologue): Use FUNCTION_NAME_ALREADY_DECLARED. + (function_epilogue): Likewise. + +Thu Jul 18 19:24:19 1996 David Mosberger-Tang + + * alpha/elf.h (INT_ASM_OP): Change from ".long" to ".quad". + +Thu Jul 18 19:20:58 1996 Ulrich Drepper + + * stddef.h: Undefine __need_wint_t. + +Thu Jul 18 19:06:35 1996 J.T. Conklin + + * longlong.h (mc680x0): Define umul_ppmm, udiv_qrnnd, sdiv_qrnnd + for the '020, '030, '040, and '332. Define count_leading_zeros + for the '020, '030, '040, and '060. + + * m68k.md: Add TARGET_5200 to conditions which determine whether + the extbl instruction is emitted. + (mulsi3): Enable pattern with TARGET_5200. + + * m68k.md (add patterns): Don't use two addqw instructions when + adding small (8 < N <= 16) integers to address registers on 68040. + +Thu Jul 18 18:06:15 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure: Write target_alias in Makefile. + (i[3456]86-*-sco3.2v4*): Set truncate_target. + * Makefile.in (target_alias): New and used for all current uses + of `target'. + +Thu Jul 18 17:46:02 1996 Dave Love + + * gcc.c (default_compilers): Extra Fortran extensions. + +Wed Jul 17 10:28:10 1996 Torbjorn Granlund + + * expmed.c (expand_mult_highpart): Revert last change. + +Tue Jul 16 12:51:59 1996 Doug Evans + + * sparc/sparc-rtems.h: #include "sparc/sparc-aout.h" -> sparc/aout.h. + +Mon Jul 15 14:42:06 1996 Jim Wilson + + * mips/iris6.h (LINK_SPEC): Add -woff 84. + +Fri Jul 12 17:34:01 1996 Michael Meissner + + * rs6000/eabi.asm (__eabi): Convert pointers in the Global Offset + Table if -mrelocatable. Move loops into separate subroutines for + ease of debugging. Reorganize code somewhat. + + * rs6000/rs6000.c (small_data_operand): Allow small data under + Solaris. + + * rs6000/sol-c0.c (_start): Initialize r13 to point to the small + data operand. + + * rs6000/sol-c{i,n}.asm (_init, _fini): Enable shared library + support. + + * rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Default to + -msdata=data, even if -fpic or -mrelocatable. Allow -mrelocatable + and -mno-eabi. + (CPP_SYSV_SPEC): If -fpic, define __PIC__ and __pic__ to 1. If + -fPIC, define them to 2. + (CPP_ENDIAN_SPEC): Push definition of macros for specific endian + targets to new specs. + (CPP_ENDIAN_DEFAULT_SPEC): Define to use CPP_ENDIAN_BIG_SPEC. + (CPP_ENDIAN_{LITTLE,BIG,SOLARIS}_SPEC): New specs for little + endian mode, big endian mode, and Solaris, which can't define + _LITTLE_ENDIAN. Define __LITTLE_ENDIAN__ in all cases for little + endian systems. Define __BIG_ENDIAN__ in all cases for big endian + systems. + (SUBTARGET_EXTRA_SPECS): Add new specs. + + * rs6000/{eabile,sysv4le}.h (CPP_ENDIAN_DEFAULT_SPEC): Define to + use CPP_ENDIAN_LITTLE_SPEC. + + * rs6000/sol2.h (CPP_ENDIAN_LITTLE_SPEC): Define as + CPP_ENDIAN_SOLARIS_SPEC so that _LITTLE_ENDIAN is not define. + +Fri Jul 12 17:34:01 1996 David Edelsohn + + * rs6000.c (function_arg): Add IBM AIX XL compiler broken FP arg + passing compatibility mode. + * rs6000.h (TARGET_XL_CALL): Define default. + * aix3newas.h (TARGET_XL_CALL, SUBTARGET_SWITCHES): Define. + * aix41.h (TARGET_XL_CALL, SUBTARGET_SWITCHES): Define. + +Fri Jul 12 15:04:43 1996 Doug Evans + + * arm/arm.h (ASM_OUTPUT_MI_THUNK): Handle fns returning structures. + + * ptx4.h ({ASM,LINK}_SPEC): %{V} %{v:%{!V:-V}} -> %{v:-V}. + * svr4.h ({ASM,LINK}_SPEC): Likewise. + * dsp16xx/dsp16xx.h ({ASM,LINK}_SPEC): Likewise. + * i386/dgux.h (LINK_SPEC): Likewise. + * i386/sol2.h (LINK_SPEC): Likewise. + * m88k/dgux.h ({LINK,ASM_CPU}_SPEC): Likewise. + * sparc/sol2.h ({ASM,LINK}_SPEC): Likewise. + * sparc/sp64-elf.h ({ASM,LINK}_SPEC): Likewise. + * sparc/sysv4.h (ASM_SPEC): Likewise. + +Thu Jul 11 17:29:33 1996 Michael Meissner + + * rs6000.h (GOT_TOC_REGNUM): New macro for r2, which is used as a + marker for the GOT/TOC register to be allocated later. + (MACHINE_DEPENDENT_REORG): Call rs6000_reorg. + (rs6000_reorg): Add declaration. + + * rs6000.c (rs6000_got_register): Return REG 2, not a pseudo + register in order to work with inlined functions. + (rs6000_replace_regno): New function to replace a register with a + new pseudo register. + (rs6000_finalize_pic): Loop through all 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 + + * mips/iris6.h (ASM_SPEC): Correct typos in Jun 18 change. + +Wed Jul 10 18:56:38 1996 Ian Lance Taylor + + * 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 + + * rs6000.c (rs6000_got_register): New function to return a pseudo + register to hold the pic register. Abort if reload is in progress + or done. + (num_insns_constant): Allow SFmode and DFmode. + + * rs6000.h (CONST_DOUBLE_OK_FOR_LETTER_P): Redo 'G' so that it + means a constant that takes exactly two insns. + (rs6000_got_register): Add declaration. + + * rs6000.md (movsi_got): Move setup of pic register to + rs6000_got_register. + (movsf): If -msoft-float, don't force constants to memory. + (mov{sf,df} insns): If soft floating point, allow any constant to + be loaded. Add define_splits that allow the 604 to use both + integer units for loading constants. Make sure insn length is + correct. + +Tue Jul 9 17:05:10 1996 Michael Meissner + + * rs6000.c (easy_fp_constant): All FP constants are considered + hard for -fpic and hardware floating point, so that the GOT + register is created. + +Tue Jul 9 15:21:27 1996 Jim Wilson + + * x-iris6 (FIXPROTO_DEFINES): Add -D_SGI_SOURCE. + +Mon Jul 8 18:00:33 1996 Jim Wilson + + * sh/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 + + * 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 + + * sparc/sol2.h (LINK_SPEC): Don't pass `-z text' if + -shared -mimpure-text. + +Sun Jul 7 18:03:46 1996 Torbjorn Granlund + + * m68k/lb1sf68.asm (__udivsi3): Use faster tstw instead of btst. + +Thu Jul 4 11:44:39 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (get_inner_reference): Delete using alternate mode for + bitfield; we don't make bitfields anymore if not needed. + +Wed Jul 3 18:23:17 1996 Stephen L Moshier (moshier@world.std.com) + + * c-common.c (record_function_format): Define as static. + + * collect2.c (at SUNOS4_SHARED_LIBRARIES): Fix reference to unistd.h. + +Wed Jul 3 17:35:20 1996 Gavin Koch + + * c-typeck.c (default_conversion): Add bitfield promotions. + +Wed Jul 3 17:09:22 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * gcc.c (default_compilers): Add null entries for languages we + heard of. + (main): If found one of those entries, say compiler not installed. + +Wed Jul 3 12:52:53 1996 Jeffrey A. Law + + * pa.c (fmpy_operands): Define. + (combinable_fmpy): 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 + + * pa.c (ireg_or_int5_operand): New function. + (output_parallel_movb, output_parallel_addb): Likewise. + (combinable_copy, combinable_add, following_call): Likewise. + (pa_adjust_insn_length): Handle parallel unconditional branches. + (output_movb): Handle case were destination is %sar. + * pa.h: Declare new functions. + * pa.md (parallel_branch): New "type" attribute. + (delay slot descriptions): Don't allow "parallel_branches" in + delay slots. Fill "parallel_branches" like "branch" insns. + (movb patterns): Handle %sar as destination register. + + * expr.c (compare): If function pointers need canonicalization + before comparisons, canonicalize them. + (do_store_flag): Do not use an sCC insn for a function pointer + comparison if function pointers need canonicalization before + comparing. + +Tue Jul 2 17:56:37 1996 Michael Meissner + + * rs6000/sysv4.h ({START,END}FILE_LINUX_SPEC): If -mnewlib is not + used, use the crtbegin/crtend that 2.7.2 used. + +Sat Jun 29 07:10:02 1996 Michael Meissner + + * rs6000.h (INIT_EXPANDERS): Define, call rs6000_init_expanders. + (RS6000_VARARGS_OFFSET): fpmem area no longer next to outgoing + argument area. + (STARTING_FRAME_OFFSET): 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 + + * reload1.c (choose_reload_regs): Properly mark spill registers + as in use for inherited reloads. + +Fri Jun 28 18:37:20 1996 Stephen L Moshier + + * objc/sarray.c (ifdef __alpha__): Don't declare `free'. + * objc/thr-decosf1.c (objc_thread_id): Use pthread_getunique_np + to obtain a thread ID value. + (objc_mutex_allocate): Cast mutex->owner to _objc_thread_t. + (objc_mutex_deallocate): 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 + + * objc/sendmsg.c (__objc_block_forward): New function. + (get_imp, objc_msg_lookup): Use different forwarding function + when the returning a floating point value. + +Fri Jun 28 16:25:25 1996 Andreas Schwab + + * configure: Allow multiple makefile frags. + (i[3456]86-*-linux*oldld*): Add i386/t-crtstuff as target frag. + (i[3456]86-*-linux*aout*, i[3456]86-*-linux*): Likewise. + (m68k-*-linux*aout*): Add t-linux-aout as target frag. + (m68k-*-linux*): Add t-linux as target frag. + * Makefile.in (Makefile): xmake_file and tmake_file now already + contain the $(srcdir)/config prefix. + + * config/t-linux (BOOT_CFLAGS): Removed, no longer necessary. + (CRTSTUFF_T_CFLAGS): Don't define. + (CRTSTUFF_T_CFLAGS_S): Define this instead. + * config/t-linux-aout (BOOT_CFLAGS): Removed. + * m68k/t-linux: Remove variables now in t-linux. + +Fri Jun 28 15:06:05 1996 John F. Carr + + * alpha.c (alpha_emit_conditional_move): Emit correct code when + incoming comparison code is NE. + +Fri Jun 28 14:35:45 1996 J.T. Conklin + + * c-decl.c (init_decl_processing): Register __builtin_memset + and memset as builtin functions. + * expr.c (expand_builtin, case BUILTIN_MEMSET): Open code memset + where val == 0. + +Fri Jun 28 14:10:03 1996 Richard Henderson + + * alpha/linux.h (FUNCTION_PROFILER): _mcount has non-standard linkage. + * alpha/elf.h (LINK_SPEC): Bring emulation name into sync + with Cygnus snapshot. + + * alpha.h ({MASK,TARGET}_BUILD_CONSTANTS): New macros. + (TARGET_SWITCHES): New target option build-constants. + * alpha.c (alpha_emit_set_long_const): New function. + * alpha.md (movdi): Call it. + * expmed.c (expand_mult_highpart): Use op1 not wide_op1 in + expansion of mul_highpart. + + * alpha.c (output_{pro,epi}log): Flag_inhibit_size_directive + should supress .ent, .end, and accompanying directives. + (alpha_output_lineno): Fix polarity on GAS test. + * alpha.h (NO_DBX_FUNCTION_END): New macro. + * dbxout.c (dbxout_function): Respect NO_DBX_FUNCTION_END. + * alpha/elf.h: New file. + * alpha/linux.h (INITIALIZE_TRAMPOLINE): New definition. + * alpha/xm-linux.h (HAVE_STRERROR): Define. + * configure (alpha*-linux*ecoff*): New target, was alpha-*-linux*. + (alpha-*-linux*): Use elf.h. + * crtstuff.c (init_dummy): Only i386-linux (at most) + needs ___brk_addr hack. + +Thu Jun 27 20:23:30 1996 Jon Buller (jonb@metronet.com) + + * ns32k.c (split_di): New; from i386.c. + * ns32k.md (adddi3, subdi3, negdi3): New patterns. + +Thu Jun 27 19:42:50 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (force_to_mode, case NE): Fix typo and logical error. + (simplify_comparison): Don't swap args if op1 is CONST_INT. + +Thu Jun 27 18:49:35 1996 Jim Wilson + + * expmed.c (extract_bit_field): Check TRULY_NOOP_TRUNCATION before + making a SUBREG of a REG. + +Thu Jun 27 11:03:59 1996 Ian Lance Taylor + + * mips/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 + + * 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 + + * gcc.c (PEXECUTE_VERBOSE): Define. + (execute): Pass PEXECUTE_VERBOSE to pexecute if -v. + +Tue Jun 25 12:23:54 1996 Michael Meissner + + * rs6000.h (FINALIZE_PIC): Define to call rs6000_finalize_pic. + (rs6000_finalize_pic): Add declaration. + (svr4_traceback): Delete unused declaration. + + * rs6000.md (movsi_got): Don't emit gen_init_v4_pic insn. + (V.4 call insns): Do not use @plt for PIC calls. + + * rs6000.c (print_operand_address): Handle LABEL_REF just like + SYMBOL_REF. + (rs6000_finalize_pic): Define, emit the gen_init_v4_pic insn + before all other insns if needed for V.4 PIC calls. + + * eabi-ci.asm (_GLOBAL_OFFSET_TABLE_): Do not provide a default + definition, since it interferes with the linker generated version. + +Tue Jun 25 01:17:50 1996 Jeffrey A. Law + + * h8300/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 + + * configure ({i386,i960,m68k,powerpc,sparc}-rtems): New targets. + * i386/go32-rtems.h, i386/i386-rtems.h: New files. + * i960/i960-rtems.h: New file. + * m68k/m68k-rtems.h: New file. + * rs6000/powerpc-rtems.h: New file. + * sparc/sparc-rtems.h: New file. + +Mon Jun 24 23:09:22 1996 Paul Eggert + + * cccp.c: (create_definition): Diagnose `#define #' only once. + +Mon Jun 24 11:42:58 1996 Jim Wilson + + * i386/cygwin32.h, rs6000/cygwin32.h (CPP_PREDEFINES): For consistency, + change to define WIN32, WINNT, and CYGWIN32. + +Mon Jun 24 10:46:50 1996 Michael Meissner + + * rs6000.md (floatsidf2*): Move the xor of the argument into the + define_insn, since it confuses inline function expands. + +Fri Jun 21 20:40:17 1996 Jim Wilson + + * mips.md (call_internal1, call_value_internal1): Delete obsolete code. + (call_internal2, call_value_internal2, call_value_multiple_internal2): + Delete obsolete code. Explicitly load SYMBOL_REF into register. + (call_value): Change Pmode to SImode in gen_call_value_internal0 call. + +Thu Jun 20 12:20:33 1996 Michael Meissner + + * configure (*-aix*): If building a cross compiler, use t-xnewas + instead of t-newas. + + * rs6000.c (num_insns_constant_wide): Fix typo if HOST_WIDE_INT + has more than 32 bits. + +Wed Jun 19 17:50:33 1996 Richard Henderson + + * combine.c (move_deaths): New parameter maybe_kill_insn. + Don't move note if reg killed by maybe_kill_insn. + (try_combine): Pass new arg to move_deaths. + +Wed Jun 19 10:44:47 1996 Brendan Kehoe + + * toplev.c (flag_keep_static_consts): Define. + (f_options): Add "keep-static-consts" entry. + (compile_file): Check it in addition to !optimize for emitting + static const variables. + +Tue Jun 18 23:37:20 1996 Doug Evans + + * i386/cygwin32.h (ASM_OUTPUT_SOURCE_LINE): Local symbols begin with L. + +Tue Jun 18 12:00:11 1996 Jason Merrill + + * varasm.c (asm_output_aligned_bss): Don't emit a skip of size 0. + +Tue Jun 18 06:24:28 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * integrate.c (expand_inline_function): Add missing call to + force_operand when getting structure_value_addr into reg. + + * alpha.c (override_options): Allow EV4/5 or 21064/21164 for cpu. + Clean up handling of floating-point options. + * alpha.h (TARGET_SWITCHES): Have all -mieee options turn + on MASK_IEEE_CONFORMANT. + (TARGET_DEFAULT): Use symbolic value. + * alpha.md: When not involving named pattern, update condition + to include alpha_tp != ALPHA_TP_INSN. + Don't do float_extend as part of other pattern when ALPHA_TP_INSN. + (extendsfsd2): Split into two patterns, depending on + value of alpha_tp. + + * mips/iris6.h (ASM_SPEC): Treat -o32 as -32 and -n64 same as -64. + * mips.c (override_options): Likewise. + + * genattrtab.c (fatal): Declare A1 and A2 as char *. + + * function.c (find_temp_slot_from_address): Check for overlap + from BASE_OFFSET if X is PLUS of virtual_stack_vars_rtx and const. + + * flow.c (flow_analysis): Fix typo in last change. + + * expr.c (expand_builtin, case BUILT_IN_{SET,LONG}JMP): Properly + handle case when ptr_mode != Pmode. + + * combine.c (try_combine): Don't use split if dest of new I2 + is used between I2 and I3. + + * c-typeck.c (pointer_int_sum): Convert integer to both signedness + and precision of sizetype. + * explow.c (convert_memory_address, case PLUS, MULT): Don't commute + operation with extension if not adding small integer. + + * Makefile.in (BOOT_LANGUAGES): New variable. + (bootstrap): Use it to select languages for stage1. + * configure (extra_host_objs): New variable. + Separate files needed for target and host and concatenate list. + (extra_gcc_objs): Use setting for host, not target. + (objc_thread_file): Start with it as null, then don't include "thr-". + Print name of file after others and in same format. + (alpha-*-winnt*, i[3456]86-*-winnt): oldnames.o is in extra_host_objs. + (all_boot_languages): New variable. + Set from boot_language variable in config-lang.in. + Defines value of BOOT_LANGUAGES in Makefile. + (Makefile): Set target to the canonical form of target. + +Mon Jun 17 22:37:07 1996 Mike Meissner + + * rs6000/win-nt.h (ASM_DECLARE_FUNCTION_NAME): Put function + descriptor in .reldata, not .text. + +Mon Jun 17 16:05:34 1996 Brendan Kehoe + + * ginclude/stddef.h (wint_t): Don't wrap with #ifndef __cplusplus. + +Mon Jun 17 15:03:20 1996 Jim Wilson + + * mips.c (mips_split_addresses): New variable. + (simple_memory_operand): Add comment about mode check. Add check + for LO_SUM. + (call_insn_operand): OP is now an addresses instead of a MEM. + (move_operand, mips_check_split): New functions. + (mips_count_memory_refs): Add check for LO_SUM. + (mips_move_1word): Add HIGH support. + (mips_address_cost): Delete check for HIGH. + (output_block_move): Handle LO_SUM addresses. + (override_options): Set mips_split_addresses. + (print_operand_address): Add LO_SUM support. + * mips.h (mips_split_addresses, mips_check_split, move_operand): + New declarations + (GO_IF_LEGITIMATE_ADDRESS): Reject constant addresses when + mips_split_addresses is TRUE. Add LO_SUM support. + (LEGITIMIZE_ADDRESS): Add LO_SUM support. + (PREDICATE_CODES): Modify call_insn_operand support. Add + move_operand. + * mips.md (memory): Change r4100/r4300 support. + (imuldiv): Add r4300 support. + (high, low): New patterns. + (movsi, movdi): Add LO_SUM support. + (movsi_internal1, movsi_internal2): Use move_operand instead of + general_operand. + (movstrsi_internal, movstrsi_internal2): Delete R constraint. + (call, call_value): Pass address instead of MEM to call_insn_operand. + Call gen_call_{value_}internal0 instead of internal1. + (call_internal0, call_value_internal0, call_multiple_internal0): + New patterns. + (call_internal1, call_internal2, call_value_internal1, + call_value_internal2, call_value_multiple_internal2): Add explicit + MEM before target address. + +Sun Jun 16 23:05:16 1996 Jeffrey A. Law + + * configure (hppa*-hp-hpux10*): Use new pa-hpux10 configuration file. + (hppa*-hp-hpux*): Use hpux9 configuration files by default. + * pa/pa-hpux10.h: New file. + * pa/pa-ghpux9.h: Deleted. No longer used. + +Sat Jun 15 04:35:51 1996 Roland McGrath + + * i386/gnu.h (LINK_SPEC): Remove -rpath /lib/ option. + Ignore -ibcs option. + +Thu Jun 13 14:49:41 1996 Jim Wilson + + * gen-protos.c (main): Change argv[i] to argv[0][i]. + +Thu Jun 13 10:46:24 1996 Doug Evans + + * gcc.c (pfatal_pexecute): Delete code to check errno < sys_nerr. + +Wed Jun 12 21:47:10 1996 Eliot Dresselhaus + + * alpha.c (alpha_cpu, alpha_cpu_string): New variables. + (override_options): Process -mcpu= value. + (alpha_adjust_cost): Handle adjustments for EV5. + * alpha.h (enum processor_type): New enum. + (alpha_cpu, alpha_cpu_string): New declarations. + (target_options): Add "cpu=". + (RTX_COSTS): Adjust values for EV5. + * alpha.md: Add scheduling rules for EV5. + +Tue Jun 11 17:51:03 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-common.c (check_format_info): Change text of message about use + of `0' with precision. + +Tue Jun 11 15:14:10 1996 Stan Cox + + * i386.h (TARGET_SCHEDULE_PROLOGUE): New. Allows prologue to + be emitted as asm or rtl. + + * i386.c (function_prologue): Emit prologue as asm. + (override_options): Don't emit rtl for prologue if -fpic. + +Tue Jun 11 14:41:01 1996 Michael Meissner + + * rs6000/eabi.asm (__eabi): Fix normal code so that it properly + loads up r2/r13 if needed again. + + * rs6000/sysv4.h (CPP_ENDIAN_SPEC): Call cpp_endian_default, not + cpp_endian_default_spec. + +Mon Jun 10 15:10:56 1996 Jeffrey A. Law + + * local-alloc.c (update_equiv_regs): Ignore insns that read or + write registers that are likely to be spilled. + + * pa.h (cmp_type): Add CMP_PSI. + (FUNCTION_POINTER_COMPARISON_MODE): Define. + * pa.md (cmppsi): New expander. + (plabel_dereference): New pattern + +Mon Jun 10 14:56:14 1996 Michael Meissner + + * rs6000/sol2.h (SKIP_ASM_OP): Delete, Solaris accepts .space, + like rest of PowerPC V4 ports. + + * rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_LOCAL): Emit .lcomm if not + using the .sbss area. If using the .sbss area, put out + appropriate .size directive. + +Mon Jun 10 14:53:38 1996 Doug Evans + + Move fork/exec/wait handling into file of its own. + * pexecute.c: New file. + * Makefile.in (pexecute.o): Add rule. + (xgcc): Link in pexecute.o. + (protoize,unprotoize): Likewise. + * gcc.c (_WIN32): Don't include process.h or declare spawnv{,p}. + (pexecute,pwait): Add prototypes. + (PEXECUTE_{FIRST,LAST,SEARCH}): Define. + (execv,execvp): Delete decls. + (perror_exec): Delete. + (pfatal_pexecute): New function. + (pexecute support): Delete. + (execute): -pipe not supported if _WIN32 or OS2. + Update call to pexecute. Fatal error if pexecute fails. Call pwait. + * protoize.c: Include gansidecl.h. + (my_execvp): Delete. + (choose_temp_base,pexecute,pwait): Declare. + (PEXECUTE_{FIRST,LAST,SEARCH}): Define. + (execvp): Delete decl. + (usage): Fix typo. + (gen_aux_info_file): Rewrite to use pexecute/pwait. + + * gcc.c (do_spec_1): Allow leading text in version string. + Delete support for default minor number = 0. + +Mon Jun 10 11:49:53 1996 Scott Christley + + * objc/Makefile (libobjc.a): Don't delete the library. + + * objc/thr.h (objc_set_thread_callback): New function. + (objc_thread_callback): Typedef for the hook function. + * objc/thr.c (__objc_thread_detach_function): Clear thread storage. + Call the thread hook function when first becoming multi-threaded. + (objc_set_thread_callback): New function. + + * objc/selector.c (__sel_register_typed_name): Additional parameter + that indicates whether name and type parameters are constant or not. + * objc/runtime.h (__sel_register_typed_name): Likewise. + * objc/init.c (__sel_register_typed_name): Likewise. + + * objc/init.c (__objc_init_protocols): Need to unlock mutex. + +Mon Jun 10 11:44:44 1996 Kaveh R. Ghazi + + * sparc/t-sol2 (gmon.o): Depend on stmp-int-hdrs. + (crt1.o, crti.o, crtn.o, gcrt1.o): Depend on $(GCC_PASSES). + +Mon Jun 10 11:29:46 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * flow.c (flow_analysis, find_basic_blocks): Ignore + nonlocal_label_list for CALL_INSN that has a REG_RETVAL. + + * c-common.c (decl_attributes, case A_T_UNION): Don't look at fields + of union if there aren't any. + +Sat Jun 8 22:13:33 1996 Stan Cox + + * i386.c (ix86_expand_prologue): Keep pic register load ahead + of reference which may use a pic register. + +Sat Jun 8 22:13:33 1996 Jim Wilson + + * i386.md (strlensi_unroll4, strlensi_unroll5): Use + not =& for + constraint for input/output operand 2. + +Sat Jun 8 22:13:33 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * i386.h (CONST_COSTS): Even integer constants have a cost. + (RTX_COSTS): Take costs of subexpressions into account. + If a multiply is actually a shift, use the cost of the shift. + * i386/unix.h (SHIFT_DOUBLE_OMITS_COUNT): New macro. + * i386/{gas, next, seq-gas}.h (SHIFT_DOUBLE_OMITS_COUNT): Redefine + as zero. + * i386.c (print_operand): new letter 's'. + +Sat Jun 8 15:13:33 1996 Jim Wilson + + * mips/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 + + * toplev.c (main): Re-enable -gxcoff+. + +Sat Jun 8 14:20:14 1996 J.T. Conklin + + * m68k/lb1sf68.asm (__{eq,ne,gt,lt,ge,le}{df,sf}2): Removed + extraneous comments, constants, labels, etc. + + * m68k/altos3068.h (TARGET_DEFAULT): Use MASK_* macros + instead of explicit constants in definitions or conditionals. + * m68k/{apollo68, aux, ccur-GAS, dpx2, hp320, hp3bsd}.h: Likewise. + * m68k/{hp3bsd44, isi-nfp, isi, linux-aout, linux}.h): Likewise. + * m68k/{lynx-ng, lynx, m68k-none, m68k-psos, m68kv4}.h): Likewise. + * m68k/{mot3300, netbsd, news, next, pbb, plexus, sun2o4}.h): Likewise. + * m68k/{sun3, sun3n, tower}.h): Likewise. + +Sat Jun 8 13:55:23 1996 Matthias Pfaller (leo@marco.de) + + * ns32k.md (define_insns for ffs[qhs]i2): Deleted. + (define_expand for ffssi2): New pattern. + +Sat Jun 8 13:44:14 1996 Stephen L Moshier (moshier@world.std.com) + + * reload.c (find_equiv_reg): Set need_stable_sp if GOAL is the + stack pointer. + +Sat Jun 8 13:36:05 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (fixup_var_refs_1, case SIGN_EXTEND): Handle + paradoxical SUBREGs as first operand. + (fixup_var_regs_1, case SET): Handle paradoxical SUBREGs as + first operand of a ZERO_EXTRACT in SET_DEST. + + * c-common.c (enum attrs): Add A_FORMAT_ARG. + (init_attribute): Initialize it. + (decl_attributes, case A_FORMAT): Clean up error messages. + (decl_attributes, case A_FORMAT_ARG): New case. + (struct international_format_info): New structure and typedef. + (international_format_list): New variable. + (record_international_format): New function. + (init_format_info): Call it for gettext, dcgettext, and dcgettext. + (check_format_info): See if format arg is call to + internationalization function. + +Fri Jun 7 20:04:40 1996 Jim Wilson + + * gcc.c (MULTILIB_SELECT): Delete definition. + (multilib_select): Delete static initializer. + (multilib_obstack, multilib_raw): New global variables. + (multilib.h): Include inside multilib_raw definition. + (main): Set multilib_select from multilib_raw. + * genmultilib: Change output to be a sequence of short strings + separated by commas rather than a single long macro definition. + + * cse.c (simplify_binary_operation, case MULT): Check for case + where width is larger than HOST_BITS_PER_WIDE_INT, and upper most + bit is set. We can not generate a simple shift in this case. + + * gsyms.h (enum sdb_type): Add T_LNGDBL if EXTENDED_SDB_BASIC_TYPES. + (enum sdb_masks): Add EXTENDED_SDB_BASIC_TYPES masks. + * sdbout.c (gsyms.h): Include if CROSS_COMPILE is defined. + (plain_type_1): Use TYPE_PRECISION instead of TYPE_SIZE. + Add check for LONG_DOUBLE_TYPE_SIZE if EXTENDED_SDB_BASIC_TYPES. + * i960/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 + + * Makefile.in (OBJC_THREAD_FILE): New variable. + * configure (objc_thread_file): Set new variable to appropriate + values based upon target operating system; default is `thr-single'. + * objc/Makefile (OBJC_THREAD_FILE): Add target and dependency. + (thr.o): Remove OS specific thread files as dependencies. + * objc/thr-decosf1.c: Now compiles as a separate source file, so + include appropriate Objective-C headers. + * objc/thr-{mach,os2,posix,irix,single,solaris,win32}.c: Likewise. + * objc/thr.c: Remove inclusion of source files. + * objc/thr.h (__objc_thread_exit_status): Declare global variable. + * objc/thr-pthreads.c: New file. + +Fri Jun 7 19:04:04 1996 J.T. Conklin + + * m68k.h (TARGET_SWITCHES): Treat -m68302 like -m68000 and -m68332 + like -m68020; remove -mno-68302 and -mno-68332. + +Fri Jun 7 12:06:12 1996 Per Bothner + + * expr.c (safe_from_p): Allow Chill-style variable-sized arrays. + +Thu Jun 6 23:11:11 1996 Jeffrey A. Law + + * h8300.c (h8300_monitor_function_p): New function. + (h8300_os_task_function_p): Likewise. + (os_task, monitor): Variables to note if the current + function is an os_task or monitor. + (function_prologue): Set monitor and/or os_task as needed. Handle + os_task and monitor functions. + (function_epilogue): Clear monitor and os_task. Handle os_task and + monitor functions. + (h8300_valid_machine_decl_attribute): Accept "OS_Task" and + "monitor". + +Thu Jun 6 20:01:54 1996 Per Bothner + + * gen-protos.c (progname): New variable (needed by cppalloc.c). + (main): Set progname. + + * cpplib.h (struct parse_file): Removed. + (CPP_FATAL_LIMIT, CPP_FATAL_ERRORS, CPP_OUT_BUFFER): New macros. + * cpphash.c (cpp_lookup): Change struct parse_file -> cpp_reader. + + * cpplib.c (init_parse_option): Renamed to cpp_options_init. + (push_parse_file): Renamed to ... + (cpp_start_read): Change to return 1 on success, 0 on failure. + (init_parse_file): Renamed to cpp_reader_init. + * cppmain.c (main): Use CPP_SET_WRITTEN and cpp_fatal. + Use renamed function names, and return protocols. + * fix-header.c (read_scan_file): Likewise. + + * cpperror.c (cpp_message): Generalize for "fatal" errors. + (cpp_fatal): New function (just calls cpp_message). + * cpplib.c (cpp_start_read, cpp_handle_options, cpp_finish, + parse_goto_mark, parse_move_mark): Use cpp_fatal rather than fatal. + + * fix-header.c (check_macro_names): Fix struct parse_file->cpp_reader. + * cpplib.c (newline_fix): Remove unused function. + +Thu Jun 6 19:47:26 1996 Jim Wilson + + Changes to support parameters and return values in multiple + non-contiguous locations. + * calls.c (expand_call): Handle NIL in PARALLEL. Handle PARALLEL + parameter in REG. Handle PARALLEL return value in VALREG. + (emit_library_call, emit_library_call_value): Abort for PARALLEL. + (store_one_arg): Delete code for handling EXPR_LIST. + * expr.c (emit_group_load, emit_group_store): New functions. + (use_group_regs): New function. + (emit_push_insn): Handle PARALLEL parameter in REG. + (expand_assignment): Handle PARALLEL to_rtx. + (store_expr): Handle PARALLEL target. + * expr.h (emit_group_load, emit_group_store, use_group_regs): New + declarations. + * function.c (assign_parms): Handle PARALLEL parameter in ENTRY_PARM. + * stmt.c (expand_value_return): Handle PARALLEL return_reg. + + * mips/abi64.h (TYPE_DEPENDENT_REG): Delete. + * mips/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 + + * m68k.h (TARGET_SWITCHES): Group all floating point options. + When an fp option is selected, unset bits used for other mutually + exclusive fp options. + (OVERRIDE_OPTIONS): Remove special case for SUPPORT_SUN_FPA; + bits used for 68881 and SKY are now cleared by TARGET_SWITCHES. + + * m68k.md (movsi_const0, movhi): Favor clr with TARGET_5200. + (add[qhs]3): Don't use two addqw/subqw insns to add small integers to + an address register with TARGET_68060. + (stack push peephole): Use moveq.l with TARGET_5200 (when appropriate). + + * m68k.h (MASK_5200, TARGET_5200): New macros. + (TARGET_SWITCHES): Add "m5200". + (LEGITIMATE_INDEX_P): Add TARGET_5200 to conditional expression. + * m68k.c (const_method): Do not synthesize long constants + with byte or word operations with TARGET_5200. + * m68k.md: Disable byte and word arithmetic, rotate, integer + divide, dbcc, etc. insns for TARGET_5200. + * m68k-none.h: (CPU_FPU_SPEC, CPP_SPEC, ASM_SPEC): Support m5200. + +Thu Jun 6 17:32:32 1996 Paul Eggert + + * fixproto (subdirs): Work around Solaris 2.5 + /usr/xpgr/bin/sed problem with \+\+. + +Thu Jun 6 15:06:27 1996 Jim Wilson + + * c-decl.c (grokdeclarator): Call pop_obstacks after creating + TYPE_DECL. + + * loop.c (strength_reduce): If HAVE_cc0 defined, disable auto_inc_opt + if it would put an insn between a cc0 setter/user pair. + +Thu Jun 6 13:06:54 1996 Michael Meissner + + * rs6000/sysv4.h (LIBGCC2_WORDS_BIG_ENDIAN): If __sun__ is + defined, treat that as little endian. + +Wed Jun 5 20:04:53 1996 Jim Wilson + + * i960/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 + + * cpplib.h, cpplib.c: Remove support for !STATIC_BUFFERS. + * cpplib.h: Use unsigned char rather than U_CHAR. + * cpplib.h (cpp_reader): Add destructor #ifdef __cplusplus. + (cpp_cleanup): New prototype. + * cpplib.c (special_symbol, do_once, do_include, cpp_get_token): + Compare cpp_buffer against CPP_NULL_BUFFER, not NULL. + + * cpplib.c (dump_special_to_buffer): New function. + (initialize_builtins): Use it. + +Wed Jun 5 19:10:22 1996 Jeffrey A. Law + + * pa/pa.h (TEXT_SPACE_P): Fix thinko in last change. + +Wed Jun 5 16:25:51 1996 Michael Meissner + + * rs6000.h (ASM_DEFAULT_SPEC): Default to "", not -mpwr. + + * sysv4.h (SUBTARGET_SWITCHES): Add -mshlib. + (LINK_PATH_SPEC): Add -compat-bsd support from Solaris. + (LINK_SPEC): Eliminate %{b} and %{G}, since they conflict with GCC + switches. Defer shared library support to LINK_SHLIB_SPEC. Defer + target selection to LINK_TARGET_SPEC. + (LINK_SHLIB_SPEC): Provide two different versions, depending on + whether shared libraries are default or not. Make shared + libraries not default until linker is fixed. + (LINK_OS_*_SPEC): New specs for OS specific linker switches. + (SUBTARGET_EXTRA_SPECS): Add new specs. + + * {sol2,sysv4}.h (LINK_SPEC): Move Solaris link into 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 + + * ginclude/stddef.h: Fix typo: TYPE_ptrdiff_t to _TYPE_ptrdiff_t. + +Wed Jun 5 15:52:57 1996 Per Bothner + + * varasm.c (output_constructor): Handle RANGE_EXPR in array index. + +Wed Jun 5 13:45:54 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sparc.md (*call_{address,symbolic}_struct_value_sp32): Allow + operand 2 to be const0_rtx. + +Tue Jun 4 16:43:44 1996 Jason Merrill + + * varasm.c (make_decl_rtl): Don't update DECL_ASSEMBLER_NAME for + local statics. + + * c-decl.c (start_decl): Always set DECL_COMMON on statics. + * varasm.c (assemble_variable): Only treat vars with DECL_COMMON + as common. + +Tue Jun 4 14:55:49 1996 Jeffrey A. Law + + * pa.c (reloc_needed): New function. + * pa.h (TEXT_SPACE_P): Variables/constants with initializers + requiring relocs never live in the text space. + +Tue Jun 4 14:10:46 1996 Ian Lance Taylor + + * sh.c (fp_zero_operand): Do not accept minus zero. + + * sh.h (ASM_OUTPUT_LOOP_ALIGN): Define. + (ASM_OUTPUT_ALIGN_CODE): Define. + (ADJUST_INSN_LENGTH): Add in bytes that may be added by + alignment. + * sh.c (output_branch): Run ADJUST_INSN_LENGTH in reverse to get + correct length. Just call abort rather than returning "bad". + (find_barrier): Adjust limits for possible alignment. + +Tue Jun 4 09:35:05 1996 Michael Meissner + + * rs6000/t-solaris: New target config file for PowerPC Solaris + without gas. + + * rs6000/t-ppc: Eliminate all multilib varients except for + software floating point. + + * configure (powerpcle-*-solaris*): If not --with-gnu-as, use + t-solaris, not t-ppc. + + * rs6000/sol2.h (MULTILIB_DEFAULTS): Add correct defaults for + Solaris. + + * rs6000/sysv4.h (ASM_OUTPUT_SECTION_NAME): Clone from svr4.h, omit + @progbits, since Solaris assembler doesn't like it. + (LIB_SOLARIS_SPEC): If -msolaris-cclib, add libabi.a. + ({START,END}FILE_SOLARIS_SPEC): If -msolaris-cclib, use explicit + pathnames for the Solaris compiler start/end files. + (ASM_SPEC): Pass -mno-regnames to the assembler. + +Mon Jun 3 19:40:10 1996 Jim Wilson + + * mips/abi64.h (CPP_SPEC): Make -mabi=n32 the default. + * mips/iris6.h (MIPS_ISA_DEFAULT, MIPS_ABI_DEFAULT, MULTILIB_DEFAULTS, + ASM_SPEC, STARTFILE_SPEC, ENDFILE_SPEC, LINK_SPEC): Likewise. + * mips.md (tablejump_internal4+1): Fix typo in condition. + * mips/x-iris6 (CC, OLDCC): Define to be `cc -32'. + +Mon Jun 3 07:57:35 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.def ([LR]SHIFT_EXPR): Remove `a' from printed names. + + * sparc.md (call): Mask unimp operand to 12 bits, just like Sun. + + * expr.c (store_field): Fix typo in last change; update TARGET addr. + + * c-decl.c (start_struct): Set TYPE_PACKED from flag_pack_struct. + (start_enum): Likewise but from flag_short_enums. + (finish_enum): Test TYPE_PACKED, not flag_short_enums. + * stor-layout.c (layout_decl): Test DECL_PACKED and TYPE_PACKED + instead of flag_pack_struct. + (layout_record): Likewise. + +Sun Jun 2 19:41:14 1996 Jim Wilson + + * mips.md (tablejump_internal3, tablejump_internal4): New patterns. + (tablejump): Use them for PIC code. + +Fri May 31 17:26:53 1996 Stan Cox + + * i386.c (ix86_expand_epilogue): Don't generate references to an + exposed vacated stack. + * i386.md (epilogue_set_stack_ptr): New. + +Fri May 31 15:07:49 1996 Jim Wilson + + * mips/abi64.h: Add -mabi=n32 support. + (ABI_64BIT): Delete. + (TARGET_LONG64, CPP_SPEC, STACK_BOUNDARY, MIPS_STACK_ALIGN, + GP_ARG_LAST, FP_ARG_LAST, SUBTARGET_CONDITIONAL_REGISTER_USAGE, + MAX_ARGS_IN_REGISTER, FUNCTION_ARG_PADDING, RETURN_IN_MEMORY, + SETUP_INCOMING_VARARGS): Modify. + (REG_PARM_STACK_SPACE): Ifdef out. + (TARGET_DEFAULT, SUBTARGET_TARGET_OPTIONS): Define. + * mips/iris6.h: Add -mabi=n32 support. + (TARGET_DEFAULT, ASM_OUTPUT_INTERNAL_LABEL, + ASM_GENERATE_INTERNAL_LABEL): Delete. + (MULTILIB_DEFAULTS, ASM_SPEC, EXTRA_SECTION_FUNCTIONS, + ASM_OUTPUT_ALIGNED_LOCAL, STARTFILE_SPEC, ENDFILE_SPEC, LINK_SPEC): + Modify. + (MIPS_ABI_DEFAULT, LOCAL_LABEL_PREFIX): Define. + * mips/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 + + * rs6000/sysv4.h (SUBTARGET_SWITCHES): Add -msolaris-cclib to use + the Sun compiler's crt files instead of ours. + ({START,END}FILE_SOLARIS_SPEC): If -msolaris-cclib, use the Sun + compiler's crt files instead of ours. + (SUBTARGET_OVERRIDE_OPTIONS): Don't set -msdata=data for Solaris. + (SBSS_SECTION_ASM_OP): For Solaris, don't use @nobits. + (CPP_OS_SOLARIS_SPEC): Remove -Asystem(unix) and -Asystem(svr4). + + * rs6000/t-ppc{,gas} (MULTILIB*): Add Solaris specific multilibs. + + * rs6000/eabi{,le}sim.h (*_DEFAULT_SPEC): Rather than using + duplicate definitions, just use %(...) so that there is only one + place in the specs file where the switches are defined. + * rs6000/{linux,sol2}.h (*_DEFAULT_SPEC): Ditto. + + * rs6000/sol2.h (CPP_PREDEFINES): Use the standard one in sysv4.h. + (RS6000_ABI_NAME): Default is solaris. + (ASM_OUTPUT_ALIGNED_LOCAL): Don't redefine. + + * rs6000/sol-c{i.asm,n.asm,c0.c}: Provide more things that Solaris + needs for program startup. + +Thu May 30 21:57:34 1996 Mike Stump + + * tree.def (OFFSET_REF): Remove. + * expr.c (expand_expr, case OFFSET_REF): Likewise. + * tree.c (substitute_in_expr): Remove OFFSET_REF code. + +Wed May 29 14:54:44 1996 Michael Meissner + + * rs6000/eabi.asm (__eabi): If not -mrelocatable, don't assemble + relocatable functions, so that it can be assembled with the + Solaris assembler. + + * rs6000/sysv4.h (CPP_SYSV_SPEC): Define _RELOCATABLE if + -mrelocatable-lib as well as -mrelocatable. + + * rs6000.c (rs6000_file_start): New function to print some more + information to the asm file. + * rs6000/{sysv4,win-nt,rs6000}.h (ASM_FILE_START): Call it. + +Tue May 28 15:21:24 1996 Michael Meissner + + * rs6000.h (FIRST_PSEUDO_REGISTER): Bump to 77. 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 + + * gcc.c (MSDOS pexecute): Call xmalloc, not malloc. + +Sun May 26 08:31:54 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure (vax-*-{sysv}): tm_file and xm_file now list. + (vax-*-ultrix): tm_file is now list. + (we32k-att-sysv*): xm_file now list. + * vax/xm-netbsd.h: Deleted. + * vax/netbsd.h: No longer include vax.h and config/netbsd.h. + * vax/ultrix.h, vax/vaxv.h: No longer include vax.h. + * vax/xm-vaxv.h: No longer include xm-vax.h. + * xm-we32k.h: No longer include xm-svr3.h. + + * configure: Separately set target_cpu_default for two + case statements and then combine if both set. + (alpha-*-winnt3): tm_file and xm_file are now list. + Set target_cpu_default to 64. + * winnt/config-nt.bat: Make .h files properly for Alpha. + * alpha.h (WINDOWS_NT): No longer defined and used. + (MASK_WINDOWS_NT, TARGET_WINDOWS_NT): New macros. + (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_WINDOWS_NT. + * alpha.c (output_prolog): Test TARGET_WINDOWS_NT, not WINDOWS_NT. + * alpha.md: Likewise. + * alpha/config-nt.sed: Properly set tm_file and {build,host}_xm_file. + * alpha/win-nt.h: Don't include alpha.h + (WINDOWS_NT): No longer define. + * alpha/xm-winnt.h: Don't include xm-alpha.h and winnt/xm-winnt.h. + +Fri May 24 12:34:22 1996 Doug Evans + + * configure (cpu_type): Add case for arm. + (sparclet-*-aout*): Delete extra_headers. + + * varasm.c (asm_output_bss): New argument DECL. + Use ASM_DECLARE_OBJECT_NAME if defined. + (asm_output_aligned_bss): Likewise. + (assemble_variable): Pass DECL to ASM_OUTPUT{,_ALIGNED}_BSS. + * arm/aout.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * h8300/h8300.h (ASM_OUTPUT_BSS): Update. + * i386/linux.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * i386/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * m68k/coff.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * m68k/linux.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * m68k/m68k-aout.h (ASM_OUTPUT_BSS): Update. + * rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * rs6000/win-nt.h (ASM_OUTPUT_ALIGNED_BSS): Update. + * sparc/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Update. + +Thu May 23 19:55:52 1996 Jim Wilson + + * combine.c (set_nonzero_bits_and_sign_copies): Set + reg_sign_bit_copies to one not zero to indicate that the value + is unknown. + +Thu May 23 18:39:24 1996 J.T. Conklin + + * config/netbsd.h (SWITCH_TAKES_ARG): Add -R. + (LINK_SPEC): Add %{R*}. + + * m68k/lb1sf68.asm: Construct exception masks at compile time + instead of or'ing in bits at run time. + +Thu May 23 15:53:06 1996 Ian Lance Taylor + + * sh/sh.md: Add new instruction types fp and fpdiv. Set new + instruction types where appropriate. Add function unit fp. + Claim that store instructions use function unit memory. + +Thu May 23 00:36:19 1996 Jeffrey A. Law + + * h8300/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 + + * fixincludes (pthread.h): Add extern to __page_size* declarations + for AIX 4.1.x. + + * combine.c (nonzero_bits): Don't assume arg pointer has same + alignment as stack pointer. + +Wed May 22 16:09:05 1996 Michael Meissner + + * rs6000/sysv4.h (LINK_START_DEFAULT_SPEC): Spell macro correctly. + (LIB_DEFAULT_SPEC): Provide default version. + +Wed May 22 11:23:57 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * i386.md (return_pop_internal): new pattern. + (pop): disable emitting of bogus move instruction. + * i386.c (ix86_expand_epilogue): use gen_return_pop_internal to + simultanously return and pop args; removed stray semicolon. + * config/linux-aout.h, config/linux.h (SET_ASM_OP): Added for + __attribute__ ((alias ())) support. + +Wed May 22 08:06:42 1996 Richard Kenner + + * combine.c (init_reg_last_arrays, setup_incoming_promotions): + Correct prototypes. + +Tue May 21 13:42:17 1996 Jeffrey A. Law + + * h8300/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 + + * vax.h (TARGET_NAME): Define unless already defined. + (TARGET_VERSION): Print TARGET_NAME. + * vax/vms.h (TARGET_NAME): Always redefine. + (TARGET_VERSION): Delete; retain vax.h definition. + +Mon May 20 14:00:44 1996 Jim Wilson + + * sh.c (output_file_start): Delete misplaced semicolon. + +Mon May 20 11:58:15 1996 Jeffrey A. Law + + * reorg.c (relax_delay_slots): Call update_block before + redirecting a branch past a redundant insn. + +Sun May 19 16:40:53 1996 Philippe De Muyter + + * Makefile.in (libobjc.a, sublibobjc.a): 'specs' added to + dependencies. + +Sun May 19 12:25:48 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure: Add new switch to provide default for cpu_type; + delete numerous settings of it in main switch. + (hppa): Reflect rerrangements below; use new configure features. + * pa/pa-gas.h, pa/pa-pro-end.h: New files. + * pa/pa1.h, pa/pa1-osf.h, pa/pa1-ghpux.h, pa/pa1-oldas.h: Deleted. + * pa/pa1-ghpux9.h, pa/pa1-hpux9.h, pa/pa1-hpux.h: Deleted. + * pa/pa1-ghiux.h, pa/pa1-hiux.h, pa/pa-ghpux.h: Deleted. + * pa/pa-gux7.h, pa/pa-ghiux.h: Deleted. + * pa/pa-hiux.h: No longer include pa-hpux.h. + * pa/pa-hpux.h: No longer include pa.h. + (TARGET_DEFAULT): Unset before setting. + (LINK_SPEC): Provide option for pa1. + * pa/pa-hpux7.h: No longer include pa.h. + (HP_FP_ARG_DESCRIPTOR_REVERSED): Don't define here. + * pa/pa-hpux9.h, pa/pa-oldas.h: No longer include pa-hpux.h. + (TARGET_DEFAULT): Don't need to set here. + * pa/pa-osf.h: No longer include pa.h. + (TARGET_DEFAULT): Don't define; identical to default. + * pa/pa-pro.h: No longer include pa.h. + Move definitions after include to new file pa-pro-end.h. + * pa.h (TARGET_SWITCHES): Include TARGET_CPU_DEFAULT. + (TARGET_CPU_DEFAULT): Provide default value. + (CPP_SPEC): Test TARGET_CPU_DEFAULT too. + + * Makefile.in (function.o): Includes bc-emit.h. + (reg-stack.o): Includes insn-flags.h. + * expr.h (function_value): Deleted; no such function. + (bc_build_calldesc, bc_runtime_type_code): New declarations. + * c-decl.c: Add prototypes for all static functions. + * c-iterate.c: Likewise. + * dbxout.c: Likewise. + (adspath): Delete; never used and has numerous parse errors. + * dwarfout.c: If not GNUC, make `inline' null; otherwise, leave alone. + Add `static' to inline functions. + Add prototypes for static function. + * expr.c (bc_runtime_type_code): Delete redundant declaration. + * function.c: Include bc-emit.h. + ({save,restore}_machine_status): Add prototype for args. + (bc_runtime_type_code, bc_build_calldesc): Delete redundant decls. + (bc_emit_trampoline, bc_end_function): Likewise. + * reg-stack.c: Include insn-flags.h. + Add prototypes for static functions. + (gen_jump, gen_movdf, gen_movxf): Delete redundant declarations. + (find_regno_note, emit_jump_insn_before, emit_label_after): Likewise. + (swap_rtx_condition): Now static. + * sdbout.c: Add prototypes for static functions. + (sdbout_parms, sdbout_reg_parms): Delete extra parm to plain_type. + +Sun May 19 11:50:10 1996 John Carr + + * alpha.c (alpha_emit_conditional_move): Compare to 0 in correct mode. + +Sat May 18 20:17:27 1996 Jim Wilson + + * sh.c (prepare_move_operands): If source is r0, and dest is reg+reg + MEM, then copy source to a pseudo-reg. + * sh.md (untyped_call): New pattern. + + * unroll.c (copy_loop_body): When update split DEST_ADDR giv, + check to make sure it was split. + (find_splittable_givs): Fix reversed test of verify_addresses result. + +Sat May 18 10:26:04 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (unsave_expr_now): Avoid use of NULL_RTX since no rtl.h. + + * configure: Set cpu_default, tm_file, and xm_file early. + Remove redundant settings of those, tmake_file, and xmake_file. + Use ${tm_file} and ${xm_file} to refer to the main files. + Sort some entries for consistency and reformat some others. + (rs6000, powerpc): Remove bogus test on host == target. + (alpha-*-linux): xm-linux.h no longer includes xm-alpha. + (alpha-*-osf*): Remove redundant setting of target_cpu_default. + (*-convex-*): Use target_cpu_default instead of separate .h files. + (clipper-intergraph-clix*): clix.h no longer includes any files. + (i860, i960, pdp11): Reflect removal of includes listed below. + * alpha/xm-linux.h: No longer include xm-alpha.h. + * clipper/clix.h: No longer include clipper.h and svr3.h. + * convex.h: Provide a default for TARGET_DEFAULT. + Take "or" of TARGET_DEFAULT and TARGET_CPU_DEFAULT everywhere. + * convex/convex{1,2,32,34,38}.h: Deleted. + * i860/bsd-gas.h: No longer include bsd.h. + * i860/bsd.h: No longer include i860.h. + * i860/fx2800.h: No longer include i860/sysv4.h. + (OUTPUT_TDESC): No longer define. + (ASM_FILE_END): Move redefinition to here. + * i860/mach.h: No longer include i860.h. + * i860/paragon.h, i860/sysv3.h: No longer include i860.h and svr3.h. + * i860/sysv4.h: No longer include i860.h and svr4.h. + (ASM_FILE_END): Delete redefinition from here. + * i860/xm-fx2800.h: No longer include xm-i860.h. + * i860/xm-paragon.h, i860/xm-sysv{3,4}.h: Deleted. + * i960/i960-coff.h: No longer include i960.h and dbxcoff.h. + * i960/vx960-coff.h: No longer include i960-coff.h. + * i960/vx960.h: No longer include i960.h. + * pdp11/2bsd.h: No longer include pdp11.h. + + * i370/i370.h: Renamed from mvs.h. + * i370/i370.c: Renamed from mvs370.c. + * i370/t-i370: Renamed from t-mvs. + * i370/xm-i370.h: Renamed from xm-mvs.h. + * configure (i370-*-mvs*): Use default names for all files. + + * c-parse.in: Update number of shift/reduce conflicts for objc. + +Sat May 18 08:20:17 1996 Dennis Glatting (dennisg@plaintalk.bellevue.wa.us) + + * m68k/next.h (FINALIZE_TRAMPOLINE): Add missing backslashes. + +Fri May 17 19:57:20 1996 Pat Rankin + + * vax/xm-vms.h (dbxout_resume_previous_source_file): New macro. + +Fri May 17 14:20:13 1996 Mike Stump + + * expr.c (expand_expr, cond TARGET_EXPR): Make TARGET_EXPRs + redoable for UNSAVE_EXPR. + * stmt.c (expand_decl_cleanup): Wrap the cleanup in an UNSAVE_EXPR + to that we can redo it. + * tree.c (unsave_expr_now): Handle TARGET_EXPRs fully now. + * tree.def (TARGET_EXPR): Add a fourth field so that TARGET_EXPRs + are redoable. + + * expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++ + frontend to the backend where it belongs. + * tree.c (unsave_expr): 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 + + * rs6000.md (lshrsi3 insns): Add special case code for shifting by + 0 to avoid bad code generated with no optimization. + +Fri May 17 13:50:55 1996 Jason Merrill + + * i386/unix.h (ASM_OUTPUT_MI_THUNK): Define. + * i386/{att.h,bsd.h,sun386.h} (ASM_OUTPUT_MI_THUNK): Delete. + +Fri May 17 13:34:28 1996 Ian Lance Taylor + + * 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 + + 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 + + * objc/sendmsg.c (objc_get_uninstalled_dtable): New function. + * objc/objc-api.h (objc_get_uninstalled_dtable): New declaration. + + * objc/thr-os2.c, objc/thr-posix.c, objc/thr-mach.c: New files. + * objc/THREADS.MACH: New file. + + * objc/sendmsg.c (nil_method): Deleted from here. + * objc/nil_method.c: New file. + * Makefile (OBJC_O): Add dependency for nil_method.c. + + * objc/hash.c (hash_is_key_in_hash): New function. + * objc/hash.h: Include objc/objc.h here instead of in objc/hash.c + to get BOOL typedef. + +Fri May 17 08:01:48 1996 Doug Rupp (rupp@gnat.com) + + * msdos/configur.bat: If Ada subdirectory present, adjust Makefile. + +Fri May 17 07:40:04 1996 Ulrich Drepper (drepper@cygnus.com) + + * stddef.h: If need_wint_t defined, nothing in this file is needed. + (_WINT_T, __WINT__TYPE__, wint_t): Define under certain circumstances. + +Thu May 16 18:53:25 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (fold, case EQ_EXPR): When folding VAR++ = CONST, + mask the new const if VAR is a bitfield reference; also for VAR--. + +Thu May 16 18:29:03 1996 Doug Evans + + * varasm.c (function_section): Delete flag_function_sections support. + (assemble_start_function): Put it here. Use UNIQUE_SECTION if defined. + +Wed May 15 13:35:11 1996 Michael Meissner + + * rs6000.{h,c,md} (rs6000_pic_register): Delete all uses, use + pic_offset_table_rtx instead. + + * rs6000.md (move_to_float): Rewrite so that it uses the register + allocator to allocate the stack temp, instead of calling + rs6000_stack_temp. + (fix_truncdfsi2): Ditto. + + * rs6000.c (rs6000_stack_temp): Delete, no longer used. + +Wed May 15 10:39:27 1996 Jeffrey A. Law + + * 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 + + * toplev.c (compile_file): Don't warn about artificial functions + declared static and not defined. + +Thu May 9 22:03:28 1996 Doug Evans + + * varasm.c (assemble_start_function): ASM_DECLARE_FUNCTION_NAME + needn't consider bytecodes. + (assemble_variable): ASM_DECLARE_OBJECT_NAME needn't + consider bytecodes. + * toplev.c (rest_of_decl_compilation): Likewise with + ASM_FINISH_DECLARE_OBJECT. + * arm/aof.h (ASM_DECLARE_{FUNCTION,OBJECT}_NAME): Delete bytecode + support. + * vax/vms.h (ASM_DECLARE_OBJECT_NAME): Likewise. + +Thu May 9 19:36:13 1996 Jim Wilson + + * sh.h (SET_ASM_OP): Define. + +Thu May 9 13:31:58 1996 Michael Meissner + + * rs6000/sysv4.h (SUBTARGET_{SWITCHES,OPTIONS}): Add support for + finer grain control on -msdata, so that eabi people can specify to + compile sdata code to only use r13 instead of r2/r13. Make + -mrelocatable-lib turn off -msdata, just like -m relocatable does. + (SUBTARGET_OVERRIDE_OPTIONS): Ditto. + (ENCODE_SECTION_INFO): Move to rs6000.c. + (ASM_SPEC): -msdata=eabi sets -memb also. + (CC1_SPEC): -mno-sdata gets converted to -msdata=none. + + * rs6000.c (rs6000_sdata{,_name}): Add support for finer grain + control on -msdata. + (output_options): 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 + + * 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 + + * 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 + + * varasm.c (make_decl_rtl): Update DECL_ASSEMBLER_NAME for local + statics. Remove reference to flag_no_common. + +Mon May 6 21:38:36 1996 Paul Eggert + + * cpplib.c (skip_comment, handle_directive): Don't use uninit vars. + +Mon May 6 18:47:36 1996 Doug Evans + + * dbxout.c (dbxout_function): When deciding to call dbxout_function_end + change test from flag_function_sections to DECL_SECTION_NAME != NULL. + + * varasm.c (named_section): Accept any decl. + +Mon May 6 16:41:08 1996 Stan Cox (coxs@dg-rtp.dg.com) + + * final.c (final_scan_insn): Modify conditional moves whose cc is + nonstandard. + + * c-common.c (decl_attributes): Chain multiple attributes correctly. + +Mon May 6 15:41:43 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stmt.c (expand_decl): Don't deduce alignment of SIZE from + DECL_ALIGN; use TYPE_ALIGN instead. + + * function.c (assign_parms): Set RTX_UNCHANGING_P in stack_parm + if parm is read-only. + + * c-common.c (truthvalue_conversion, case ADDR_EXPR): Don't + treat address of external decl as always nonzero. + +Mon May 6 11:33:57 1996 Jason Merrill + + * c-decl.c (start_decl): Check -fno-common here. + * varasm.c (assemble_variable): Instead of here. + * final.c (end_final): Likewise. + * c-common.c (init_attributes, decl_attributes): Add A_COMMON. + +Mon May 6 11:12:39 1996 Mike Stump + + * expr.c (expand_increment): Add third parameter to know when to + ignore the result value. + (store_constructor): Likewise + (expand_expr, case {PRE,POST}{INC,DEC}REMENT_EXPR): Likewise. + * tree.c (stabilize_reference): Always ignore the first operand of + COMPOUND_EXPRs. + +Mon May 6 13:14:45 1996 Jim Wilson + + * sh.c (gen_shifty_op): Truncate VALUE to avoid out of bounds array + access. + + * expr.c (expand_expr, case INDIRECT_REF): Delete obsolete code + to special case a SAVE_EXPR operand. + +Mon May 6 10:00:12 1996 Pat Rankin + + * vax.h (ASM_OUTPUT_MI_THUNK): Define. + +Mon May 6 09:49:10 1996 Andreas Schwab + + * m68k/linux.h: Use the new trampoline definition. + (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE): Deleted. + (INITIALIZE_TRAMPOLINE): Changed. + (FINALIZE_TRAMPOLINE, CLEAR_INSN_CACHE): New. + +Mon May 6 09:43:55 1996 Patrick J. LoPresti (patl@lcs.mit.edu) + + * rtlanal.c (rtx_addr_varies_p): Scan operands of type `E'. + +Mon May 6 09:04:40 1996 H.J. Lu (hjl@gnu.ai.mit.edu) + + * x-linux{,-aout} (BOOT_CFLAGS, STMP_FIXPROTO, STMP_FIXPROTO): Deleted. + * config/t-linux (BOOT_CFLAGS, STMP_FIXPROTO, STMP_FIXPROTO): New, + moved from x-linux. + * t-linux-aout: New file. + * configure (i[3456]86-*-linux*oldld*, i[3456]86-*-linux*aout*): + Set tmake_file to t-linux-aout. + +Sun May 5 22:13:22 1996 H.J. Lu (hjl@gnu.ai.mit.edu) + + * Makefile.in (gxx_include_dir): Change to $(prefix)/include/g++. + (old_gxx_include_dir): New - defined as $(libdir)/g++-include. + (cccp.o, cpplib.o): Also pass OLD_GPLUSPLUS_INCLUDE_DIR (set + from $(old_gxx_include_dir)). + * cccp.c (include_defaults_array): For C++, also search + OLD_GPLUSPLUS_INCLUDE_DIR. + * cpplib.c (default_include): Likewise. + * configure: Remove no-longer-needed support for --gxx-include-dir. + +Sun May 5 21:59:53 1996 Andreas Schwab + + * c-lex.c (check_newline): Fix #pragma parsing; issue error message + for directive that starts with `p' but isn't `pragma'. + +Sun May 5 13:13:40 1996 Jeremy Bettis + + * objc/hash.c (hash_value_for_key): Prevent endless loop when 0 was + stored in a hashtable. + +Sun May 5 13:09:54 1996 Satoshi Adachi (adachi@wisdom.aa.ap.titech.ac.jp) + + * m68k/newsgas.h (SET_ASM_OP, ASM_WEAKEN_LABEL): Define. + +Sun May 5 12:48:08 1996 Stephen L Moshier (moshier@world.std.com) + + * tree.c (build_real_from_int_cst): Remove spurious test for + REAL_IS_NOT_DOUBLE. + +Sat May 4 12:17:58 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.h (ASM_OUTPUT_MI_THUNK): Moved here from aout.h. Rewrite to be + independent of the selected assembler, and to use optimal number of + instructions. + * arm/aout.h (ASM_OUTPUT_MI_THUNK): Delete. + + * arm/aout.h (ASM_OUTPUT_OPTIONS): Define. + (ASM_FILE_START): Call ASM_OUTPUT_OPTIONS. + (BSS_SECTION_OP): Define. + (ASM_OUTPUT_ALIGN): Don't output anything if byte alignment is wanted. + (ASM_OUTPUT_ALIGNED_BSS): Define. + * arm.h (target_cpu_name): Delete. + (TARGET_SWITCHES): Delete "be" and "le". + (TARGET_OPTIONS): Delete "cpu-", add "tune=". + (struct arm_cpu_select): New struct. + (PROCESSOR_DEFAULT, TARGET_CPU_DEFAULT): Define. + (EXTRA_CC_MODES, EXTRA_CC_NAMES): Add CC_Cmode. + (CANONICALIZE_COMPARISON): Define. + * arm.c (arm_select): Declare and initialize. + (all_procs): Add arm7100. + (arm_override_options): Parse arm_select structure to determine + selected architecture and tuning parameters. + (output_option, output_options): New functions. + (arm_canonicalize_comparison): New function. + (arm_gen_movstrqi): Don't add a writeback of the index registers for + the last instructions. + (arm_select_cc_mode): Detect case where mode is carry out of unsigned + arithmetic. + (output_lcomm_directive): Use bss_section (), and use alignment + rather than rounding. + (get_arm_condition_code): Handle CC_Cmode. + (final_prescan_insn): Avoid boundary case where we would occasionally + inline MAX_INSNS_SKIPPED+1 insns. Allow call_insns to be inlined in + APCS_32 mode if they are the last insn in the block. + * arm.md (*addsi3_compareneg): Delete potentially unsafe insn. + (*addsi3_compare_op[12]): New insns. + (*compare_addsi2_op[01]): New insns. + (*addsi3_carryin, *addsi3_carryin_alt[12]): New insns. + (*cmp_ite1): Use arm_add_operand instead of arm_rhs_operand. + * semi.h (PROCESSOR_DEFAULT): Default to PROCESSOR_ARM6. + +Fri May 3 10:52:11 1996 1996 Stan Cox (coxs@dg-rtp.dg.com) + + * i386.md (movesicc, movehicc) Pentium Pro conditional move insns. + + * i386.h (TARGET_PENTIUMPRO, TARGET_CMOVE, BRANCH_COST, + ASM_OUTPUT_FUNCTION_PREFIX): New macros for conditional move. + + * i386.c (asm_output_function_prefix, function_prologue): Setup + pic on Pentium Pro so a return will match the call. + (print_operand, put_condition_code): Output conditional move suffixes. + +Fri May 3 10:52:11 1996 Jason Merrill + + * i386/{att.h,gas.h,bsd.h,sub386.h} (ASM_OUTPUT_MI_THUNK): Define. + +Wed May 1 17:54:51 1996 Doug Evans + + * sparc.h (ASM_OUTPUT_MI_THUNK): Fix for sparc64, optimize. + +Wed May 1 13:28:32 1996 Jason Merrill + + * i386/linux.h (ASM_OUTPUT_ALIGNED_BSS): Define. + * i386/sysv4.h: Likewise. + * sparc/sysv4.h: Likewise. + +Wed May 1 01:44:47 1996 Jeffrey A. Law + + * h8300/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 + + * svr4.h (SELECT_SECTION): If RELOC is true, put it in data. + +Tue Apr 30 17:26:30 1996 Jason Merrill + + * fold-const.c (fold): Don't call convert to recreate tree nodes + we already have. + +Tue Apr 30 16:52:41 1996 Jeffrey A. Law + + * h8300/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 + + * rs6000/sol-c0.c (_start): Temporarily display calling + __do_global_ctors, since the Solaris linker doesn't handle the + relocations properly. + +Mon Apr 29 13:03:12 1996 Doug Evans + + * sparc/vxsparc.h: sparc-aout.h renamed to aout.h. + +Mon Apr 29 00:35:15 1996 Jeffrey A. Law + + * h8300/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 + + * svr4.h (ASM_OUTPUT_SECTION_NAME): If no decl is specified, + make the section read/write data. + +Sat Apr 27 10:28:59 1996 Michael Meissner + + * rs6000/t-ppcgas (MULTILIB_EXCEPTIONS): Don't allow -mrelocatable + and -mcall-sysv-noeabi. + + * rs6000/sysv.h (SUBTARGET_OVERRIDE_OPTIONS): The -mcall-aix + option sets -meabi. Don't allow -mrelocatable without -meabi. + +Fri Apr 26 16:10:46 1996 Doug Evans + + * sparc/sparc.md (*smacsi,*smacdi,*umacdi): Fix constraint on + operand 0. + +Fri Apr 26 14:36:33 1996 Michael Meissner + + * 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 + + * i386/gas.h (ASM_OUTPUT_ALIGN): #if 0 out again. + Undoes change of Apr. 9. + * i386/go32.h (ASM_OUTPUT_ALIGN): Define. + +Thu Apr 25 14:05:33 1996 Richard Kenner (kennervlsi1.ultra.nyu.edu) + + * calls.c (expand_call): In inlining case, if BEFORE_CALLS is + zero, start looking at first insn (one more place). + + * expr.c (expand_builtin, case BUILT_IN_SETJMP): CLOBBER the + static chain after label at setjmp point. + +Thu Apr 25 09:02:24 1996 Michael Meissner + + * rs6000.c (print_operand{,_address}): Correct compile error if + TARGET_EABI is not defined. Also, just call small_data_operand, + without testing the ABI. + (rs6000_select_section): Ditto. + + * rs6000/sysv4.h (CC1_SPEC): For -mcall-solaris, don't pass + -mno-main-init. + +Wed Apr 24 18:26:48 1996 Brendan Kehoe + + * collect2.c (handler): Delete export_file when we get a signal. + +Wed Apr 24 14:54:44 1996 Jeffrey A. Law + + * pa/pa1-ghpux.h (LINK_SPEC): Define. Link in PA1.1 libraries + by default. + * pa/{pa1-ghpux9.h, pa1-hpux.h, pa1-hpux9.h}: Likewise. + +Wed Apr 24 11:12:06 1996 Michael Meissner + + * configure (powerpc{,le}-*-eabi*): Use t-ppc{,gas}, instead of + t-eabi{,gas}. + (powerpc-*-linux,powerpcle-*-solaris): Add definitions. + (MULTILIB_DIRNAMES): Pick shorter names for the multilib + directories. + (MULTILIB_*): Do not build -msdata versions of the library. Build + both system V and eabi versions of the libraries. + + * rs6000/t-ppc{,gas} (MULTILIB*): Don't build -msdata versions of + the libraries. Split -mcall-sysv libraries into + -mcall-sysv-{eabi,noeabi} varients. + (LIB2FUNCS_EXTRA): Add eabi.S, eabi-ctors.c. + (eabi.S): Use eabi.S, not eabi.s for eabi.asm. + (crt files): Add support for Solaris crt files. + + * rs6000/sol{2.h,-c0.c,-ci.asm,-cn.asm}: New files for Solaris + 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 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 + + * 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 + + * 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 + + * 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 + + * rs6000.h (BIGGEST_FIELD_ALIGNMENT): Delete. + (ADJUST_FIELD_ALIGN, ROUND_TYPE_ALIGN): Define. + * sysv4.h (BIGGEST_FIELD_ALIGNMENT): Delete. + (ADJUST_FIELD_ALIGN, ROUND_TYPE_ALIGN): Undefine. + * win-nt.h (ADJUST_FIELD_ALIGN, ROUND_TYPE_ALIGN): Undefine. + +Sun Apr 21 17:52:36 1996 Jim Wilson + + * m68k/coff.h (ASM_OUTPUT_SECTION): Test DECL before + dereferencing it. + + * cse.c (cse_process_notes): Handle SUBREG like ZERO_EXTEND. + +Sun Apr 21 12:57:12 1996 Doug Evans + + * arm/aout.h (ASM_OUTPUT_MI_THUNK): Define. + +Sun Apr 21 09:50:09 1996 Stephen L Moshier (moshier@world.std.com) + + * choose-temp.c: Include sys/types.h before sys/file.h for sco3.2v5. + +Sun Apr 21 08:42:13 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (check_float_value): Cast args of bcopy to avoid warnings. + +Sat Apr 20 21:22:21 1996 David Edelsohn + + * stor-layout.c (layout_record): Use ADJUST_FIELD_ALIGN to modify + alignment of fields within records. + +Sat Apr 20 19:55:33 1996 Niels Moller + + * c-parse.in (typespec): Made equivalent + to (id ). + (non_empty_protocolrefs): New nonterminal. + +Sat Apr 20 08:34:02 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * stmt.c (check_for_full_enumeration_handling): Call case_tree2list + before checking for case expressions not corresponding to enumerators. + (mark_seen_cases): If SPARSENESS == 2, exploit AVL order. + Else, convert tree to list. + Set xlo to -1 if SPARSENESS == 1 search failed. + (expand_end_case): Avoid calling case_tree2list on list. + +Fri Apr 19 16:54:57 1996 Michael Meissner + + * rs6000/win-nt.h (BIGGEST_FIELD_ALIGNMENT): Set to 64, not + 32 that AIX uses. + +Fri Apr 19 16:40:38 1996 Stan Cox + + * i386.md (movqi): Handle QImode values in %si and %di. + +Thu Apr 18 20:56:56 1996 Jim Wilson + + * sh.md (lshrsi3): Change gen_ashlsi3_d to gen_lshrsi3_d. + +Thu Apr 18 15:49:28 1996 Per Bothner + + * sparc.h (ASM_OUTPUT_MI_THUNK): Define. + +Thu Apr 18 15:19:26 1996 Jeffrey A. Law + + * h8300.md: Remove "type" attribute from all patterns + except those which have varying length branches. Eliminate + obsolete "type" attributes. Add 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 + + * pa.h (SELECT_SECTION): Define. Never place a something + into the read-only data section if it requires a reloc. + + * pa.md (rotlsi3): Delete unnecessary and incorrect pattern. + +Wed Apr 17 17:15:40 1996 Michael Meissner + + * rs6000.md (movdi): Never FAIL, even if operand[1] is not a + general operand, due to being in volatile memory. + +Wed Apr 17 15:20:10 1996 Brendan Kehoe + + * c-lex.c (check_newline): Rewrite to use tokens. + (handle_sysv_pragma): Take a token instead of a character. + * i960.c (process_pragma): Take the IDENTIFIER_POINTER tree + node instead of a character. + * sh.c (handle_pragma): Likewise. + * config/nextstep.c (handle_pragma): Likewise. + * h8300.c (handle_pragma): Likewise. + * i960.h (HANDLE_PRAGMA): Expect/pass 2nd arg of NODE, not CH. + * sh.h (HANDLE_PRAGMA): Likewise. + * config/nextstep.h (HANDLE_PRAGMA): Likewise. + * h8300.h (HANDLE_PRAGMA): Likewise. + +Wed Apr 17 14:28:43 1996 Doug Evans + + * choose-temp.c: Don't include sys/file.h ifdef NO_SYS_FILE_H. + #include . + (choose_temp_base): Make tmp,usrtmp, static locals. + +Wed Apr 17 08:41:02 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (alpha_emit_conditional_move): Fix some bugs in previous + change and do some cleanup. + +Tue Apr 16 18:53:05 1996 Jim Wilson + + * reload.c (push_reload): Add extra reload for inside of SUBREG if + it is CONSTANT_P. + + * expr.c (do_store_flag): Rewrite last change to avoid compiler + warnings. + + * reload.c (push_reload): When reuse an old reload, set the modes + to be the larger of the old and new modes. + + * i960/t-960bare (xp-bit.c): Fix typo in source file name. + +Tue Apr 16 18:09:16 1996 Jeffrey A. Law + + * h8300/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 + + * function.c (expand_function_end): Allow TRAMPOLINE_TEMPLATE + to be omitted on systems for which it is not cost effective. + * varasm.c (assemble_trampoline_template): No such function + if no TRAMPOLINE_TEMPLATE. + * m68k.h: Greatly simplify the run-time trampoline code: + (TRAMPOLINE_TEMPLATE, TRANSFER_FROM_TRAMPOLINE): Delete define. + (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Changed. + (TRAMPOLINE_ALIGN): No point aligning to cache line. + (FINISH_INIT_TRAMPOLINE): New define. + * m68k/next.h: Instead of redefining INITIALIZE_TRAMPOLINE, + make use of the new FINISH_INIT_TRAMPOLINE. + * m68k/{m68k.h,next.h,aux.h} (FINISH_INIT_TRAMPOLINE): + Rename to FINALIZE_TRAMPOLINE. + * m68k/{linux.h,m68kv4.h}: Override trampoline macros. + +Tue Apr 16 16:02:50 1996 David Edelsohn + + * combine.c (make_field_assignment): Allow XOR in final case. + +Tue Apr 16 11:33:53 1996 J.T. Conklin + + * m68k.h (TARGET_SWITCHES): Don't remove MASK_68060 with -msoft-float. + + * m68k.h (MULL_COST, MULW_COST, RTX_COSTS): Add costs for TARGET_68060. + * m68k.md (ashlsi_16, lshrsi_16): Disable pattern for TARGET_68060; + this special case is not faster for that cpu. + +Tue Apr 16 10:54:55 1996 Eliot Dresselhaus + + * alpha.c (alpha_emit_conditional_move): New function. + * alpha.h (alpha_emit_conditional_move): Declare it. + * alpha.md (cmov* define_expands): Use it. + +Tue Apr 16 09:06:17 1996 Andreas Schwab + + * function.h (struct function): New field returns_pointer. + * function.c (push_function_context_{to,from}): Save and restore + current_function_returns_pointer. + + * config/svr4.h (ENDFILE_SPEC): Add missing `%s'. + + * configure (m68k-*-linux*aout*): Set tmake_file to m68k/t-linux-aout. + (m68k-*-linux*): Set extra_parts. + * m68k/t-linux (INSTALL_ASSERT_H): New definition. + (CRTSTUFF_T_CFLAGS_S, TARGET_LIBGCC2_CFLAGS): New definitions. + * m68k/t-linux-aout: New file. + * m68k/linux.h (LIB_SPEC): Deleted. + (BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_BSS): Define. + + * m68k.h (TRAMPOLINE_ALIGNMENT): Specify alignment in bits, not bytes. + +Tue Apr 16 08:53:17 1996 Philippe De Muyter + + * final.c (final_scan_insn): Allow removal of redundant test and + compare instructions that use clobbers. + +Tue Apr 16 06:22:00 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-decl.c (clear_limbo_values): New function. + (pushdecl): Call it for function body blocks. + + * objc/thr-decosf1.c (_objc_thread_id): Correct return type from + int to _objc_thread_id. + + * expr.c (expand_builtin, case BUILT_IN_LONGJMP): Make a decl + for __dummy, so we can call make_function_rtl on it. + + * expr.c (expand_assignment): Don't pre-evaluate RHS if a CALL_EXPR + with a variable-size return. + +Mon Apr 15 17:38:45 1996 Ian Lance Taylor + + * fixincludes: Fix undefined VOIDFUNCPTR in VxWorks 5.2 . + +Mon Apr 15 15:12:16 1996 Jim Wilson + + * expr.c (do_store_flag): Before calling exact_log2, remove any + sign extension bits. + + * reload1.c (emit_reload_insns): Call reload_reg_reaches_end_p for + every reg of multi-reg spill register. Invalidate old info for multi + reg spill registers when only part survives to the end. + +Mon Apr 15 14:49:12 1996 Mike Stump + + * function.c (preserve_temp_slots): Only preserve temporaries that + happen to be at the current level. + +Mon Apr 15 14:08:12 1996 Doug Evans + + * gansidecl.h: New file. + * choose-temp.c: New file. + * Makefile.in (xgcc): Depend on and link in choose-temp.o. + (collect2): Likewise. + (choose-temp.o): Add rule for. + * collect2.c: #include "gansidecl.h". + (const,PROTO): Delete. + (P_tmpdir): Delete. + (choose_temp_base): Declare as extern, delete internal copy. + (main): Update call to choose_temp_base. + * cpphash.c: #include "gansidecl.h". + (NULL,const,volatile): Delete. + * demangle.h: #include "gansidecl.h". + (PROTO,PTR,const): Delete. + * expr.h (const): Delete. + * fix-header.c: #include "gansidecl.h". + (const): Delete. + * gcc.c: #include "gansidecl.h". + (PROTO,VPROTO,PVPROTO,VPROTO,VA_START,NULL): Delete. + (GENERIC_PTR,NULL_PTR,P_tmpdir): Delete. + (choose_temp_base): Declare as extern, delete internal copy. + (concat): Rewrite to take a variable number of arguments. + (choose_temp_base_try,concat[346]): Delete. + (translate_options,set_spec,process_command,do_spec_1, + is_directory,main): Always use concat, not concat[346]. Pass + NULL_PTR as trailing arg to concat. + * genattr.c (main): Delete printing of "#define PROTO". + * machmode.h: #include "gansidecl.h". + (PROTO): Delete. + (HAVE_MACHINE_MODES): Move definition to standard place. + * recog.h: #include "gansidecl.h". + (PROTO,const): Delete. + * rtl.h: #include "gansidecl.h". + (PROTO,VPROTO,PVPROTO,VPROTO,VA_START,STDIO_PROTO): Delete. + (NULL,GENERIC_PTR,NULL_PTR): Delete. + * tree.h: Likewise. + +Mon Apr 15 08:49:20 1996 Tom May (ftom@netcom.com) + + * cse.c (invalidate_skipped_set): Ignore CLOBBER after calling + note_mem_written, not before. + +Mon Apr 15 08:22:03 1996 Philippe De Muyter + + * m68k.md (tstdi): Optimized for "d" case. + (movqi): Allow moving "i" into "a". + (zero_extendsidi2): Alternatives merged. + (extendplussidi): Fixed when operands 0 and 1 share a register. + (adddi_sexthishl32): Constraints reordered for better reload. + (adddi3,subdi_sexthishl32,subdi3,negdi2): Likewise. + (ashldi_sexthi): Accept "m" as operand 0. + (ashldi_const32): Alternatives merged. + (ashift patterns): Output "lsl" instead of "asl". + (beq0_di): If condition codes already set, output only branch insn. + (bne0_di,bge0_di,blt0_di): Likewise. + * m68k.c (notice_update_cc, case ASHIFT{,RT}, LSHIFTRT, ROTATE{,RT}): + Don't set CC_NO_OVERFLOW. + * m68k.h (TARGET_SWITCHES): Fix typo in "c68000" entry. + +Mon Apr 15 08:06:17 1996 Stephen L Moshier (moshier@world.std.com) + + * real.c (eadd1): Check for overflow on X plus X. + +Mon Apr 15 08:02:24 1996 J.T. Conklin + + * i386/netbsd.h (HAVE_SYSV_PRAGMA): Removed definition. + * config/netbsd.h (HAVE_SYSV_PRAGMA): Define. + (SET_ASM_OP): Define. + +Mon Apr 15 07:28:54 1996 Fila Kolodny + + * configure: Add definition for host= into Makefile. + * build-make (CC): Pass -b $(host), not target. + +Mon Apr 15 05:12:39 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (bc_expand_increment): Change declaration to return void. + + * toplev.c (max_label_num_after_reload): New variable. + (rest_of_compilation): Set it. + * reorg.c (find_dead_or_set_registers): Only kill spill regs after + label made before jump2. + + * combine.c (expand_field_assignment): Take SUBREG_WORD into + account when have STRICT_LOW_PART. + (make_extraction): Make a STRICT_LOW_PART at any low-order word. + +Mon Apr 15 03:43:11 1996 Jeffrey A. Law + + * flags.h (flag_function_sections): Declare. + * toplev.c (flag_function_sections): Define. + (compile_file): Add warnings when -ffunction-sections is + used with -g, or profiling. Disable -ffunction-sections + when profiling is used. Add warning when -ffunction-sections + is used on a target that doesn't support it. + * varasm.c (named_section): Make a copy of the section name + in case the original is in temporary storage. + (function_section): Set DECL_SECTION_NAME for each function + if flag_function_sections is on and the target supports it. + * dbxout.c (dbxout_function_end): New function. + (dbxout_function): Call dbxout_function_end if using extensions + and flag_function_sections is on. + * sparc/sysv4.h (ASM_OUTPUT_SECTION_NAME): Prefix a function + section's name with ".text%" when -ffunction-sections. + +Sun Apr 14 19:37:43 1996 Doug Evans + + * toplev.c (main): Delete redundant test for -p used with -fbytecode. + +Sun Apr 14 19:01:59 1996 John F. Carr + + * c-decl.c (finish_enum): Don't crash if no type can represent all + enumeration values. + +Sun Apr 14 18:56:40 1996 J.T. Conklin + + * m68k.md (ftruncdf2): Enable for m68060 systems. + +Sun Apr 14 18:49:30 1996 David L. Reese (david.reese@east.sun.com) + + * fold-const.c (range_test): Don't convert hi_cst or lo_cst + to unsigned when folding signed range tests. + +Sun Apr 14 08:56:27 1996 Stephen L Moshier + + * real.h (ereal_from_{int,uint}): Add new arg, MODE. + (REAL_VALUE_FROM{,_UNSIGNED}_INT): New arg, MODE. + * real.c (ereal_from_{int,uint}): New arg, MODE. + * cse.c (simplify_unary_operation): Add new arg to REAL_VALUE_FROM_INT. + * fold-const.c (fold_convert): Likewise. + * tree.c (real_value_from_int_cst): New arg, TYPE. + Pass mode to REAL_VALUE_FROM_INT. + (build_real_from_int_cst): Properly deal with truncation. + +Sun Apr 14 08:21:29 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): When substituting in output of I2, + ensure dest isn't clobbered in I2. + + * combine.c (combine_instructions): In initial scan of insns, + handle a REG_INC note's affect on sign bit copies and nonzero bits. + (set_nonzero_bits_and_sign_copies): Treat a zero SET arg as a CLOBBER. + +Sun Apr 14 07:52:28 1996 Manor Askenazi + + * objc/encoding.c (objc_skip_typespec): Don't abort for _C_UNDEF. + +Sat Apr 13 20:35:36 1996 Richard Henderson (richard@atheist.tamu.edu) + + * configure (m68k-apple-aux*): Rework to take advantange + of list of tm.h files and support all four gas/gld options. + * m68k/auxas.h, m68k/auxgas.h, m68k/auxgld.h, m68k/auxld.h: New files. + * m68k/auxstd.h, m68k/auxgnu.h: Deleted. + +Sat Apr 13 20:18:11 1996 Stephen L Moshier + + * alpha.c (check_float_value): New function. + * alpha.h (CHECK_FLOAT_VALUE): Define. + (ASM_OUTPUT_FLOAT): Print the value in hex. + +Sat Apr 13 15:08:45 1996 Doug Evans + + * configure: New target arm{,el}-*-coff*. + (cpu_default): Sort alphabetically. + * arm/coff.h: New file. + * arm/t-bare: New file. + * arm/arm.c (use_return_insn): Don't use return for naked functions. + (arm_valid_machine_decl_attribute): New function. + (arm_naked_function_p): New function. + (output_func_prologue): Naked functions don't have prologues. + (arm_expand_prologue): Likewise. + (output_func_epilogue): Likewise with epilogues. + +Sat Apr 13 11:31:32 1996 Jeffrey A. Law + + * h8300.c (adds_subs_operand): Fix thinko in last change. + + * h8300.md (subhi3): Turn into a define_expand. + (subhi3 using adds_subs): New pattern. + (H8300 subhi): Derived from old subhi pattern. Simplified. + (H8300H subhi): Likewise. + (subsi using adds_subs): New pattern. Only used on H8300H. + (subsi_h8300): Allow "a" registers as destination. + (subsi_h8300h): Allow "a" registers as destination. Simplify. + + * h8300.md (bcs_qiqi, bcs_hihi, bs_hiqi): Fix thinkos + in last change. + +Sat Apr 13 08:59:48 1996 Fila Kolodny + + * i370/mvs.h (ASM_DECLARE_FUNCTION_NAME): Don't write anything to + asm file, because everything is handled in FUNCTION_PROLOGUE. + +Sat Apr 13 07:55:38 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (alpha_emit_set_const_1): Renamed from + alpha_emit_set_const and static. + Remove change of Nov 26; again use normal mechanism for SImode. + (alpha_emit_set_const): New function. + +Fri Apr 12 18:19:39 1996 Jeffrey A. Law + + * h8300.c (adds_subs_operand, output_adds_subs): New functions. + * h8300.md (addhi3): Turn into a define_expand. + (addhi3 using adds_subs): New pattern. + (H8300 addhi): Derived from old addhi pattern. Simplified. + (H8300H addhi): Likewise. + (addsi using adds_subs): New pattern. Only used on H8300H. + (addsi_h8300): Allow "a" registers as destination. + (addsi_h8300h): Simplify. Allow "a" registers as destination. + + * h8300.md (bcs): New attribute type. + (default_length): Compute correct length for bcs insns. + (bcs_qiqi, bcs_hihi, bs_hiqi): Use new type and update + to account for correct length computation. + + * h8300/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 + + * arm.md (*ldmsi,*stmsi): Use (mem (match_operand ...)) + to avoid using indirect_operand (reload problems). + * arm/semi.h (CPP_PREDEFINES): Define __semi__ instead of semi. + * arm/aout.h (ASM_GENERATE_INTERNAL_LABEL): Use LOCAL_LABEL_PREFIX. + (ASM_OUTPUT_ADDR_{VEC,DIFF_ELT}): Likewise. + +Fri Apr 12 09:43:30 1996 Jason Merrill + + * dbxout.c (dbxout_typedefs): Don't emit incomplete types yet. + (dbxout_symbol): Use DECL_ARTIFICIAL to recognize C++ implicit + typedefs. + +Thu Apr 11 21:56:26 1996 Doug Evans + + * i386/t-winnt (winnt.o): Rewrite based on .c.o rule. + (oldnames.o,spawnv.o): Add rules for. + +Thu Apr 11 07:25:06 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * calls.c (expand_call): In inlining case, if BEFORE_CALLS is + zero, start looking at first insn. + + * expr.c (preexpand_calls, case CALL_EXPR): Rework to properly + avoid expanding functions returning variable size objects. + + * integrate.c (expand_inline_function): When comparing types + of formal and actual, use TYPE_MAIN_VARIANT. + +Thu Apr 11 00:48:29 1996 Jeffrey A. Law + + * h8300/lib1funcs.asm (modnorm): New function(s). Like divnorm, + but gets the sign bit right for modulo operations. + (__modhi3, modsi3): Use modnorm. + + * h8300/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 + + * sparc.h (ASM_OUTPUT_INTERNAL_LABELREF): Delete. + (FUNCTION_PROFILER): Use ASM_GENERATE_INTERNAL_LABEL instead. + + * sparc.c (sparc_override_options): 90c701 renamed to tsc701. + (eligible_for_epilogue_delay_slot): Don't allow anything if + -mbroken-saverestore. + (output_function_prologue): Only use trivial save's if + -mbroken-saverestore. + * sparc.h (CPP_SPEC): Handle -mcpu={sparclet,tsc701}. + (ASM_SPEC): Likewise. + ({MASK,TARGET}_BROKEN_SAVERESTORE): Define. + (enum processor_type): 90C701 renamed to TSC701. + * sparc.md (attr cpu): 90c701 renamed to tsc701. + * sparc/splet.h (SUBTARGET_SWITCHES): Recognize -mbroken-saverestore. + +Wed Apr 10 17:56:02 1996 Stan Cox + + * m88k/dgux.h (EXTRA_SPECS): Define. + (ASM_SPEC,CPP_SPEC,STARTFILE_SPEC): Use EXTRA_SPECS. + * m88k/dguxbcs.h (ASM_SPEC,CPP_SPEC,STARTFILE_SPEC): Use EXTRA_SPECS. + * m88k/m88k.c (output_ascii) Output literal HT. + +Wed Apr 10 17:28:37 1996 James Carlson (carlson@xylogics.com) + + * configure: Work around AIX bug when defining SUBDIRS. + +Wed Apr 10 17:22:42 1996 Paul Eggert + + * cexp.y (parse_number): Don't reject long long constants unless + pedantic. + +Wed Apr 10 17:19:56 1996 Stephen L. Moshier (moshier@world.std.com) + + * real.c (e64toe): Properly distinguish between NaN and infinity + bit patterns for real-words-big-endian targets. + +Wed Apr 10 17:17:26 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * real.c (endian): Add two explicit casts. + (e64toe): Support ARM extended precision fp format. + Check negative infinities properly for NaNs. + (toe64): Support ARM extended precision fp format. + +Tue Apr 9 12:53:31 1996 Doug Evans + + * i386/gas.h (ASM_OUTPUT_ALIGN): Define and use .balign. + +Tue Apr 9 12:48:45 1996 Stephen L Moshier (moshier@world.std.com) + + * sparc.c (fp_zero_operand): Exclude -0.0. + +Tue Apr 9 07:11:24 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c: Fix typo in last change. + + * tree.c (substitute_in_expr): Don't return new expression if + nothing changed. + (substitute_in_type): Deleted, not used. + * tree.h (substitute_in_type): Delete declaration. + +Mon Apr 8 16:30:18 1996 Jeffrey A. Law + + * flow.c (find_auto_inc): Also make sure there aren't + any sets of the incremented register between the memory + reference and increment insn. + +Mon Apr 8 15:41:14 1996 John Polstra (jdp@polstra.com) + + * configure (i[3456]86-*-freebsdelf*): New target. + * i386/freebsd-elf.h: New file. + * i386/x-freebsd (USER_H): New define; to null. + +Mon Apr 8 14:44:41 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-decl.c (finish_function): Always warn if main doesn't return int. + +Mon Apr 8 13:01:37 1996 Michael Meissner + + * rs6000.c (got_operand): New function, returns true if the + operand can go in V.4's GOT. + (rs6000_pic_register): New variable. + (output_epilog): Reset rs6000_pic_register. + + * rs6000.h (rs6000_pic_register,got_operand,flag_pic): Add + 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 + + * rs6000.c (print_operand): Use reg_names to print registers. + +Fri Apr 5 00:40:19 1996 Jeffrey A. Law + + * h8300.c (h8300_valid_machine_decl_attribute): Use underscores, + not dashes in attributes. + (h8300_funcvec_function_p): Corresponding changes. + (h8300_interrupt_function_p): Likewise. + + * pa.h (INIT_CUMULATIVE_INCOMING_ARGS): Initialize "indirect" + field to zero. + +Thu Apr 4 12:52:11 1996 Jim Wilson + + * loop.c (combine_givs): Use new macro GIV_SORT_CRITERION. + New variable giv_array. Loop over giv_array instead of following + next_iv links. + (giv_sort): New function. + * sh.h (GIV_SORT_CRITERION): Define. + + * c-typeck.c (push_init_level): When output alignment for structure + field, add check to verify it is the next field to be output. + +Thu Apr 4 12:19:26 1996 David Mosberger-Tang + + * alpha.c: Don't include stamp.h for Linux. + +Thu Apr 4 12:17:08 1996 Richardg Kenner (kenner@vlsi1.ultra.nyu.edu) + + * objc/Makefile: Rename thread* to thr*. + * objc/thread.c: Rename thread-* to thr-*. + * objc/thr-decosf1.c: Renamed from thread-decosf1.c + * objc/thr-irix.c: Renamed from thread-irix.c. + * objc/thr-single.c: Renamed from thread-single.c. + * objc/thr-solarius.c: Renamed from thread-solaris.c. + * objc/thr-win32.c: Renamed from thread-win32.c. + * objc/objc-api.h: Include thr.h, not thread.h. + * objc/runtime.h, objc/sarray.h: Likewise. + + * i386.md (ashldi3_const_int): Don't recognize if won't match + constraint of operand 2. + +Thu Apr 4 11:40:55 1996 Michael Meissner + + * config/fp-bit.c (EXTENDED_FLOAT_STUBS): If EXTENDED_FLOAT_STUBS + is defined, define all of the XF/TF functions that might be + generated that we don't have code for yet. + + * i960/t-(vxworks960,960bare): (LIB2FUNCS_EXTRA): Make and + compile xp-bits.c that defines EXTENDED_FLOAT_STUBS. + + From: steve chamberlain + * i386/x-cygwin32 (LANGUAGES): Delete. + * i386/xm-cygwin32.h (EXECUTABLE_SUFFIX): Set to .exe. + * rs6000/xm-cygwin32.h (EXECUTABLE_SUFFIX): Set to .exe. + +Wed Apr 3 14:10:16 1996 Jim Wilson + + * expr.c (emit_push_insn): Clobber register only if it is non-zero. + +Wed Apr 3 11:31:55 1996 Jeffrey A. Law + + * h8300.h (h8300_funcvec_function_p): Declaration moved here. + * h8300.c (h8300_funcvec_function_p): Declaration removed from here. + * h8300.md (tstqi): Tweak to work like other tstXX patterns. + (cmphi): Turn into a define_expand. Add two anonymous + matterns to match the output of the cmphi expander. + (cmpsi): Accept constants as the second input operand. + +Tue Apr 2 13:52:30 1996 Jeffrey A. Law + + * h8300.md (movqi_internal): Remove useless alternative(s). Fix + lengths and simplify by reordering remaining alternatives. + (movstrictqi, movhi_internal, movstricthi): Likewise. + (movsi_h8300h, movsf_h8300h): Likewise. + + * h8300/h8300.c (extra_pop): Remove unused variable. + (current_function_anonymous_args): Likewise. + (function_prologue): Remove incorrect varargs/stdarg + related code. + (function_epilogue): Likewise. + (function_arg): Never pass unnamed arguments in registers. + * h8300.h (LONG_LONG_TYPE_SIZE): Use 64bits when ints are 32bits. + (SETUP_INCOMING_VARARGS): Remove definition. + +Mon Apr 1 16:59:48 1996 Ian Lance Taylor + + * fixincludes: Fix signal prototype on SunOS to avoid pedantic C++ + error. + +Mon Apr 1 16:16:34 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (get_inner_reference): When finding mode to access bitfield + that ends up properly aligned, use mode class of its type unless + type's mode was BLKmode. + +Mon Apr 1 13:45:30 1996 Jeffrey A. Law + + * h8300.c (interrupt_handler): Renamed from pragma_interrupt. + All references changed. + (function_prologue): Set interrupt_handler if the current + function has the "interrrupt-handler" attribute. + (small_call_insn_operand): New function. + (h8300_interrrupt_function_p): New function. + (h8300_funcvec_function_p): New function. + (h8300_valid_machine_decl_attribute): New function. + * h8300.h (VALID_MACHINE_DECL_ATTRIBUTE): Define. + * h8300.md (call insns): Handle calls through the + function vector. Indirect calls and calls through + the function vector have a length of two bytes. + +See ChangeLog.10 for earlier changes. 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 .. ) 0)) + insist that constant be positive in mode N. + Also test mode N in similar zero_extend case. + + * c-typeck.c (build_modify_expr): When assigning to COND_EXPR + put cast to void around precomputed rhs. + + * calls.c (emit_call_1): Make funexp a valid address. + +Tue Nov 7 18:57:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (emit_move_insn): If args in memory, make addresses valid. + + * rtl.h: Undefine FFS in case it was defined by the system. + + * c-parse.y (combine_strings): Ignore warn_write_strings + if -traditional or -fwritable-strings. + + * Makefile.in (gnulib2): Fix syntax in shell conditionals. + + * stmt.c (expand_return): Handle COND_EXPR specially. + +Mon Nov 6 14:43:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (expand_float): Check sign of FROM; may be faster than TO. + + * fold-const.c (fold): If REAL_INFINITY, allow division by zero. + * tm-sun3.h (REAL_INFINITY): Define it. + + * tm-i860.h, tm-m88k.h, tm-pyr.h, tm-spur.h (INIT_CUMULATIVE_ARGS): + Test aggregate_value_p, not just BLKmode. + + * gnulib2.c (__builtin_saveregs): Moved from gnulib.c. + Code added for mips. + + * pyr.md (conditional branch recognizers): Don't simplify if not -O. + + * out-pyr.c (extend_and_branch): Handle two constant operands. + + * integrate.c (function_cannot_inline_p): Don't inline if alloca used. + +Sun Nov 5 02:59:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Always make a LET_STMT and notes for the top level of a function + if it has any subblocks. + * c-decl.c (struct binding_level): New field keep_if_subblocks. + (poplevel): Obey the new field. + (keep_next_if_subblocks): New variable. + (pushlevel): Use that variable. + (store_parm_decls): Set that variable. + (compstmt): Pass nonzero to expand_end_bindings + for the new kept binding levels. + (kept_level_p): New function. + + * xm-mips.h: Define USE_C_ALLOCA if compiling with CC. + + * tm-alliant.h (CHECK_FLOAT_VALUE): Define this. + + * calls.c (expand_call): Make valreg 0 if passing structure address. + +Sat Nov 4 23:27:02 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * caller-save.c (emit_mult_save, emit_mult_restore): + Test regs for suitability as address before using as temps. + + * cccp.c (make_definition, do_define): Better error checks for name. + +Fri Nov 3 01:05:04 1989 Torbj|rn Granlund (tege at echnaton) + + * pyr.md (tstdi): New pattern. Use 64-bit shift with count zero. + + * tm-pyr.h: -mretd pops args with the retd insn. + + * pyr.md (peep-holes for loop optimizations): Use the R output + format in PRINT_OPERAND, don't use output_branch. + * out-pyr.c: No need for functions output_branch, output_inv_branch. + + * tm-pyr.h (ASM_OUTPUT_ALIGN): Don't truncate alignment to two. + +Wed Nov 1 00:38:27 1989 Torbj|rn Granlund (tege at echnaton.sics.se) + + * out-pyr.c (output_inv_branch): When reversing test operands, ne + remains ne, and eq eq eq. + + * pyr.md: Cleanup output code for compare patterns. + + * pyr.md (return): Adjust frame pointer if + current_function_pretend_args_size != 0. + + * pyr.md (extendsidi2): Use general_operand for the input operand. + + * pyr.md, out-pyr.c: Output shift insns with output_shift. + + * tm-pyr.h, out-pyr.c: Make NOTICE_UPDATE_CC understand how + condition codes are really set. Define flag CC_VALID_FOR_UNSIGNED + with to make it possible not to reset cc after each compare or + test. + * pyr.md: Don't use CC_STATUS_INIT for most patterns. + + * out-pyr.c (already_sign_extended): Cleanup, correct, optimize. + + * out-pyr.c: rename radr_diff to constant_diff. + + * out-pyr.c (movdi_possible): Don't combine moves from memory to + memory, because of possible address aliasing. Don't combine moves + with register destination if the source operands are depending on + the destination of the first move, as in + + movw (pr3),pr3 + movw 4(pr3),pr4. + + * out-pyr.c (consecutive_operands): Handle SUBREG in addition to REG. + + * out-pyr.c (output_move_double): movl of immediate *sign* extends. + +Tue Oct 31 22:51:39 1989 Torbj|rn Granlund (tege at echnaton.sics.se) + + * pyr.md (cmpsi): Don't expand this. It's just slower. + + * out-pyr.c (extend_and_branch): Handle only QImode and HImode. + Flush code specific for SImode. + + * out-pyr.c (extend_and_branch): To make zero extensions to HImode + of constants not crash: + * out-pyr.c (ensure_extended): Call extend_const if it's a + CONST_INT. Don't call extend_const from extend_and_branch. + * pyr.md, out-pyr.md: Use global variable test_mode to determine the + mode of tests and compares. Set in define_expands for tests and + compares. Used in extend_and_branch. + * out-pyr.c: Pass mode between extend_and_branch and ensure_extended. + + * out-pyr.c (extend_and_branch): Accept SUBREG whereever REG is + accepted. + * out-pyr.c (weird_memory_memory): Accept SUBREG whereever REG is + accepted. + +Thu Nov 2 16:23:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (lshrdi2, and other shifts): Take second arg as long long. + + * combine.c (subst): + Simplify (zero_extract (subreg:SI (lshift:QI (mem:QI ...)) 0) ...) + + * expr.c (do_jump): Don't discard NOP_EXPR from around COMPONENT_REF. + Put one on, if that allows extracting the component in natural mode. + + * final.c (get_attr_length): Omit the body if no length attribute. + + * Makefile.in (genattrtab): Use host-rtlanal.c as dep and to link. + (insn-attrtab.o): Use $(INCLUDES). + + * cse.c: Include stdio.h. + + * c-decl.c (finish_enum): Local `value' was declared and set wrong. + + * Makefile.in (gen*.o): Find source files in $(srcdir). + (LIBDEPS, HOST_LIBDEPS): Don't use USE_ALLOCA. + +Wed Nov 1 00:05:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (init_function_start): Init max_parm_reg. + + * varasm.c (compare_constant_1): For ADDR_EXPR, compare symbol name. + For PLUS_EXPR, etc., don't record code twice. + (record_constant_1): Likewise. + + * expr.c (expand_assignment): Allow for overlap when storing into a + structure value area supplied by the caller. + + * cse.c (remove): Handle an elt in the wrong bucket. + + * function.c (fixup_stack_1): Avoid using move insn for address arith. + + * out-sparc.c (output_mul_by_constant): Constant zero is legitimate. + + * caller-save.c (emit_mult_restore, emit_mult_save): + Handle stack addresses which are invalid. + + * cse.c (use_related_value): Don't abort if offset is 0. + +Tue Oct 31 15:12:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config.gcc (pyramid): Set $machine to pyr. + + * calls.c (expand_call): Don't OK_DEFER_POP in is_const case. + +Mon Oct 30 17:00:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * final.c (shorten_branches, init_insn_lengths): + Define unconditionally; conditionalize the contents, perhaps. + +Mon Oct 30 03:23:52 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * final.c (shorten_branches): New function. + (init_insn_lengths, get_attr_length): New functions. + * function.c (init_function_start): Call init_insn_lengths. + * recog.c (constrain_operands): Call alter_subreg if nec. + * toplev.c (rest_of_compilation): Call shorten_branches. + (compile_file): Init and print shorten_branch_time. + +Mon Oct 30 03:23:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (spill_regs): Make it short, not char. + +Sun Oct 29 00:53:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * final.c (final_scan_insn): Delete no-op moves, even without -O. + + * c-parse.y (yylex): Prevent warning for numbers that underflow. + + * stmt.c (assign_parms): Convert stack addresses to valid addresses. + (validize_mem): New subroutine. + + * c-decl.c (finish_enum): If -fshort-enums, round size up to match + some ordinary C integer type. + Compute precision properly when some values are negative. + Make type double precision when necessary. + + * c-decl.c (lang_decode_option): Accept and ignore -fnotraditional. + + * gcc.c (default_compilers): Pass -ftraditional to cpp as -traditional. + + * DOLLARS_IN_IDENTIFIERS now has three values. 1 is now the default. + It means enable $ only with -traditional. 2 means enable unless -ansi. + * c-decl.c (lang_decode_option): Implement that. + * cccp.c (main): Likewise. + * tm-vms.h, tm-apollo68.h, tm-convex.h, tm-next.h: + Define DOLLARS_IN_IDENTIFIERS as 2. + * tm-pyr.h: Define it as 0. + * cexp.y (initialize_random_junk): Test DOLLARS_IN_IDENTIFIERS + for nonzeroness. + + * stmt.c (check_for_full_enumeration_handling): Accept enum type + as argument (since was finding it incorrectly). + Delete special case for constant index. + (expand_end_case): Pass enum type; check for constant index. + +Sun Oct 29 00:53:46 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * varasm.c (force_const_double_mem): Remove redundant code. + (record_constant_rtx): Use normal obstack since temporary data. + (force_const_mem): Don't output constant immediately. Instead, + save it for new fn to write. Also, make hash table mapping + internal label to desired constant. + (output_constant_pool): New fn to write constant pool. + (assemble_function): Call it. + (init_const_rtx_hash_table): Initialize new hash table and pool + chain and offset. + (find_pool_constant): New fn to map internal label SYMBOL_REF to + data about constant. + (get_pool_constant, get_pool_mode, get_pool_offset): New fns + using above fn to return data about constant pool labels. + * rtl.h: Define last three new fns. + + * integrate.c (save_constants): New fn to convert constant pool + references to recognizable representation of constant that was + being used. + (save_for_inline): Call it. + (copy_for_inline, output_inline_function): Undo this for copy to + be compiled. + (restore_constants): New fn used in output_inline_function. + (copy_rtx_and_substitute): Make new constant pool entries for + constants in pool when fn was inlined. + + * cse.c (cse_end_of_basic_block): Optionally make a "basic block" + that follows branches. Now takes previous block as argument and + computes which branch to follow/fall through next. + (cse_main, cse_basic_block): Make compatible with above. + + * toplev.c: Add new flag, -fcse-follow-jumps. + (rest_of_compilation): Pass dump file to cse_main. + + * flags.h: Add flag_cse_follow_jumps. + +Sat Oct 28 01:24:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (emit_cmp_insn): Default MODE before computing CLASS. + +Fri Oct 27 16:25:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-next.h (__inline): define as macro for old 1.34 Next uses. + +Thu Oct 26 01:05:09 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * mips.md (compare/branch peepholes): Combine using match_operator. + * out-mips.c (relop, frelop, frelop_reversed): New functions. + * tm-mips.h (PRINT_OPERAND): New codes `C' and `N' for comparisons. + (ASM_OUTPUT_SOURCE_LINE): Output .loc--MIPS likes that. + (EXTENDED_COFF, NO_UNDERSCORES, USE_COLLECT): Define, for collect.c. + (COFF): Undefine, for collect.c. + + * getattrtab.c: Rename define_asm_insn to define_asm_attributes. + * rtl.def: Likewise. + +Wed Oct 25 00:52:12 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.def: Add new RTL codes for insn attributes. + Change last operand of DEFINE_INSN and DEFINE_PEEPHOLE. + + * rtlanal.c (rtx_equal_p): Add support for "V", "n", and "s" types. + + * genoutput.c (output_epilogue): No longer output machine_info + stuff. + (process_template): New function. + (gen_insn, gen_peephole): Call process_template. + (fatal): Add more args. + + * final.c: Allow called configuration macros to use attribute data. + +Wed Oct 25 00:52:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * rtlanal.c (rtx_equal_p): Handle operand types n, V, S. + + * optabs.c (floattab): Record unsigned-float insns. + (can_float_p): New arg UNSIGNEDP. + (expand_float): Use those insns if available. + +Tue Oct 24 19:23:11 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genattr.c, genattrtab.c: New files. + * Makefile.in (insn-attr.h, insn-attrtab.c): + New files made by those two. + + * Makefile.in (insn-*.[ch]): Name the temp file `tmp-foo.c', etc., + not `tmp-insn-foo.c'. + + * combine.c (subst): Generalize simplification of + (zero_extend:M (subreg:N (zero_extract:M ...) 0)) and similar. + +Tue Oct 24 19:23:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (try_combine): Don't move a volatile asm. + +Mon Oct 23 01:45:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (try_combine): Don't install a subreg relating two modes + that aren't tieable. + + * gnulib2.c (__fixdfdi): Declare __fixunsdfdi. + + * combine.c: Make uid_cuid an int *. + (combine_instructions): Allocate as such. + * loop.c: Make uid_luid an int *. + (loop_optimize): Allocate as such. + +Sun Oct 22 20:35:55 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): Call simplify_set_cc0_and for SIGN_EXTEND. + (subst): Start by putting constant last in commutative operations + and convert MINUS of a constant to PLUS. + Put CONST around any PLUS with 2 constants. + Simplify (minus (and (const_int -pow2))). + Handle (zero_extend (and ...)) when the and is nontrivial. + Convert (XOR (NOT x) (NOT y)) to (XOR x y). + Simplify (abs (neg )). + Simplify abs of something known positive. + Handle (zero_extend (truncate...)) using gen_lowpart. + Do it for sign_extend too. + Simplify (ZERO_EXTRACT (AND x) ...). + Simplify (ZERO_EXTRACT (ZERO_EXTEND z) ...), etc. + Extend "Extracting a single bit from result of shift" to SIGN_EXTRACT. + (ashiftrt (*shift ) ) can be (sign_extend ) + (lshiftrt (*shift ) ) can be (zero_extend (subreg )) + Do (lshift (sign_extend )) on non-regs using gen_lowpart. + Eliminate AND in (lshift (and ) ). + Use gen_lowpart in (lshift:m1 (zero_extend:m2 ) ). + Use gen_lowpart in (and x const) => (zero_extend (subreg x 0)). + (simplify_set_cc0_and): Ignore outermost SIGN_ or ZERO_EXTEND. + Handle constant bit number. + Try to get into SImode for bitfield jumps. + + * recog.c (apply_change_group, validate_change): New functions. + +Sat Oct 21 00:51:49 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_end_of_basic_block): Optionally make a "basic block" + that follows branches. Now takes previous block as argument and + computes which branch to follow/fall through next. + (cse_main, cse_basic_block): Make compatible with above. + + * cse.c (new_basic_block): Don't assume sizeof (rtx) == sizeof (int). + + * cse.c (make_new_qty, canon_hash): Add sanity checks. + + * cse.c (lookup_as_function): Don't assume VOIDmode == 0. + + * cse.c (exp_equiv_p): For commutative operations, check both orders. + Detect unexpected operand-type letters. + Mode is significant for all codes. + + * cse.c (fold_rtx): CONST_DOUBLE can also appear in DImode. Verify + that floating-point is used before folding it. + Verify that the host's INT width is wide enough to do folding. + + * cse.c (cse_insn): Treat each component of PARALLEL exactly the same + way as if it were standing alone. + + * combine.c (combine_instructions): If an insn explicitly references + CC0, try to combine it with the previous insn. Also, enable + combining an insn with two different insns whose results it uses. + + * combine.c (try_combine): Ignore USE or CLOBBER parallel parts in + I2 and I1 as they are not functional. + +Sat Oct 21 00:51:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * out-pyr.c (extend_and_branch): Allow SUBREG like REG. + * pyr.md (mem-reg and reg-mem HI, QI patterns): + Don't match unless one arg is MEM. + +Sat Oct 21 00:28:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_decl): No more need to avoid >1 wd in one reg. + + * tree.c (build_index_type): Copy precision from sizetype. + + * reload.c (find_reloads_toplev): Don't truncate constant if bigger + than host word size. + + * gnulib2 (__floatdidf, __fixunsdfdi): Use WORD_SIZE, not BITS_PER... + (WORD_SIZE): # of bits in a `long' on the target. + + * genextract.c (gen_peephole): Use sizeof (rtx) copying operands. + + * fold-const.c (force_fit_type): Use POINTER_SIZE for pointers. + + * final.c (end_final, final_scan_insn): In sizes and aligns of + profiling vars and tbls, use INT_TYPE_SIZE for size of an int, + or give max alignment. + + * expr.c (do_jump): Comparing constant arg vs 0, take # sig bits + from mode of data type. + + * gcc.c: Add CC1PLUS_SPEC like CC1_SPEC. + (validate_all_switches, do_spec_1, process_command, read_specs): + Handle it. Use %2 to use it. + (default_compilers): Pass %2 to cc1plus. + + * out-sparc.c (output_fp_move_double): Use ldd only when safe, + on same conditions used for std. + + * Makefile.in (USE_ALLOCA): New var is $(ALLOCA) if compiling with + cc, null otherwise. Use this to refer to alloca. + + * Makefile.in (gnulib): Test vrbl HPUX_GAS to decide whether to run + hpxt instead of ranlib. + (stamp-gnulib2): Don't ranlib if HPUX_GAS. + * make-hp9kgas: New file, sets HPUX_GAS. + +Fri Oct 20 13:33:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (store_bit_field, extract_bit_field): + Use mode whose size is UNITS_PER_WORD for struct in reg. + (store_fixed_bit_field, extract_fixed_bit_field): + Handle bigger constant masks. + (mask_rtx, lshift_value): New subroutines. + + * c-parse.y (combine_strings): Use correct width of `int'. + + * varasm.c (make_decl_rtl): Warn for volatile explicit register vars. + +Fri Oct 20 00:27:00 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (reload_as_needed): Set new variable reload_in_progress + and clear it after reload complete. + + * reload1.c (choose_reload_regs): + Don't count deleted reloads vs number of spill regs. + + * reload1.c (choose_reload_regs): Arg of HARD_REGNO_MODE_OK + was the pseudo; should be the reload reg. + + * reload1.c (gen_input_reload): Don't generate a move with a PLUS + as an operand. + + * reload.c (find_reloads): Ignore unconstrained operands + when looking for conflict with an earlyclobber. + + * reload.c (subst_indexed_address): + Replace and canonicalize more thoroughly. + (form_sum): New subroutine. + + * out-i386.c (singlemove_string): Handle ordinary constants as input. + + * tm-decstatn.h (CPP_PREDEFINES): Add bsd4_2, ultrix, MIPSEL, + host_mips, R3000, LANGUAGE_C, SYSTYPE_BSD. + * tm-mips.h (CPP_PREDEFINES): Add host_mips, R3000, MIPSEB, LANGUAGE_C. + (CPP_SPEC): Remove those from here. + Define __SYSTYPE_*__ always. Define SYSTYPE_* only if not -ansi. + No CPP_SPEC needed for decstation. + Correct typos in option tests. + + * c-parse.y (unary_expr): Handle EXTENSION here, not in primary. + +Thu Oct 19 18:16:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-m68k.h, tm-alliant.h (PRINT_OPERAND): + Don't print :l for address if :w was already printed. + + * Allow elided braces with unions. + * c-typeck.c (digest_init): Treat unions more like records. + (process_init_constructor): Handle union types. + + * c-parse.y (program): Pedantic warning for empty file. + +Wed Oct 18 22:28:21 1989 Torbj|rn Granlund (tege at echnaton.sics.se) + + * out-pyr.c (extend_const, extend_and_branch): Make sure all const + are CONST_INT. + + * out-pyr.c (movdi_possible): Handle combination of two immediate + moves correctly. (Pyramid immediate move to a DImode operand + (movl) work by SIGN extension of the 32 bit immediate source.) + * Handle CONST tagged addresses. + + * out-pyr.c (already_sign_extended): Skip harmless JUMP_INSN when + scanning after extension insn. + * Check for right mode of extension. + * Delete redundant register number test. + + * pyr.md (anonymous SImode test pattern): Predicate need to accept + any operand that can be generated for corresponding compare. Used + to reject "foo(p) int *p {int a=0; return *p==a;}". + + * pyr.md (shift patterns): Condition bogus if no insn really output. + + * pyr.md: Flush obsolete comment about conversion. + + * tm-pyr.h (FUNCTION_PROLOGUE): Don't really set up a frame pointer + if it's never referenced. Also, don't round up frame size to a + multiple of 32, since input args and alloca nevertheless breaks + such alignment attempts. + * tm-pyr.h (FUNCTION_EPILOGUE): Goodbye. Use (define_insn "return" + ..) in md instead. + * pyr.md (return): Use "ret" or "retd" depending on the existense + of a freme pointer. + * tm-pyr.h (EXIT_IGNORE_STACK): Ensure the stack pointer is + preserved even when the frame pointer is not really set up. + + * pyr.md: Reinsert move-and-test peep-hole optimization. + + * pyr.md: Flush silly peep-hole optimizations for loops. They were + inverted optimizations. + + * tm-pyr.h (NOTICE_UPDATE_CC): Make it identify the most important + cases when set conditions codes can be used, without an explicit + test. + +Wed Oct 18 13:01:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (default_compilers): Support -E on .h file. + + * tm-mips.h (FUNCTION_PROLOGUE): Get rid of __0__gcc macro. + Store that value in frame_stack_difference. + (FUNCTION_EPILOGUE): Get rid of __0__gcc macro. + (FIX_FRAME_POINTER_ADDRESS): Use frame_stack_difference. + * out-mips.c (frame_stack_difference): Define here. + + * gcc.c (default_compilers): Define __GNUG__ for g++. + +Tue Oct 17 01:17:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-i860.h (HAVE_PRE_INCREMENT): Undefine this. + + * mips.md (movsf): New alternatives for r registers. + * tm-mips.h (FUNCTION_PROLOGUE): Handle big stack frames. + * out-mips.c (function_arg): Handle mode distinction for floating args. + + * pyr.md (mtstsw pattern): Accept general_operand. + + * Makefile.in (gcc): Force-move when installing new gcc. + (realclean): Delete Makefile. + + * i860.md (movsf): New alternatives: allow loading r from F. + Prefer f-reg as reload when moving m from F. + * tm-i860.h (PRINT_OPERAND): Handle CONST_DOUBLE if SFmode. + +Sun Oct 15 14:27:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i860.md (movhi, movqi): Support moves to/from fp regs. + + * stmt.c (expand_goto): USE both stack ptr and static_chain_rtx + just before jumping. + + * sparc.md (tablejump peepholes): Fix paren error that no-op'd them. + + * tm-sparc.h (*TRAMPOLINE*): Defined macros, but defns are wrong. + * sparc.md (indirect_jump): New pattern; plus peepholes. + + * sparc.md (cse'd multiply): New pattern for mult. by -1. + + * out-i860.c (load_opcode, store_opcode): Handle DImode and fp reg. + + * toplev.c (compile_file): Always test TREE_USED and TREE_ADDRESSABLE + in identifier as well as in decl. + * c-decl.c (poplevel): Preserve TREE_ADDRESSABLE from local externs. + * c-typeck.c (mark_addressable): Don't set bit in identifier here. + +Fri Oct 13 00:12:46 1989 Richard Kenner (rms at sugar-bombs.ai.mit.edu) + + * flow.c (life_analysis): No need to think abt CONSIDER on first pass. + + * flow.c (propagate_block): Remove duplicated code to update OLD. + + * flow.c (mark_set_1): Handle nested SUBREG, SIGN_EXTRACT, + STRICT_LOW_PART, etc. Also, always set subreg_p when setting + a bit field, even if modes are same. + + * expr.c (expand_expr): Check for |= or &= of two bitfields of size 1. + Convert to test followed by assignment. + + * rtl.def (INLINE_HEADER): Correct erroneous field types. + + * rtl.h: Add definitions for saving flags in INLINE_HEADER. + + * emit-rtl.c (gen_inline_header): Correct out-of-date arguments. + Add support for saving flags. + + * integrate.c (save_for_inline): Save function flags. + Update comments. + (expand_inline_function, output_inline_function): Let machine-dependant + code view (or possibly modify) inlined insn, if desired. + + * function.c (assign_stack_local): Don't set frame_pointer_needed or + invalid_stack_slot if assigning zero-sized area. + + * stmt.c (fixup_var_refs_1): If the machine's SIGN_EXTRACT or + ZERO_EXTRACT insns can't accept a memory operand, fix them up. + + * expr.c (do_jump): Look inside EQ_EXPR or NE_EXPR if one arg is 0. + Be smart about PLUS_EXPR, MINUS_EXPR, ABS_EXPR, REFERENCE_EXPR, + NEGATE_EXPR, rotation, CONVERT_EXPR. + + * jump.c (reverse_condition): Make non-static. + (swap_condition): New routine. + + * final.c (alter_cond): Use new swap_condition. + + * expr.c (expand_expr): In cases where a jump will be generated, use + original_target because the registers won't be able to be merged due + to the jump. + + * expr.c (expand_expr): Put constant last for PLUS. + +Fri Oct 13 00:12:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * recog.c (constrain_operands): Add case for `&'. + + * tm-vax.h (TRAMPOLINE_TEMPLATE): Add a .word 0 at beginning. + (TRAMPOLINE_SIZE): Increase by 2. + (INITIALIZE_TRAMPOLINE): Copy reg mask from pure code to trampoline. + Jump into the pure code after the reg mask. + + * expmed.c (expand_divmod): Use divmod insn for quotient if no div. + + * expmed.c (extract_bit_field): With structure reg fetched from mem, + don't put in subreg if mode already correct. + (store_bit_field): Typo: had extzv, wanted insv. + + * recog.c (init_recog): Set volatile_ok to 1. + (init_recog_no_volatile): Similar, but set volatile_ok to 0. + (recog_memoized): Don't set volatile_ok. + * reload1.c (reload): Call init_recog. + * combine.c (combine_instructions): Call init_recog_no_volatile. + * loop.c (loop_optimize): Likewise. + * cse.c (cse_main): Likewise. + * function.c (expand_function_start): Call init_recog_no_volatile + for the sake of predicates called from optabs.c. + + * toplev.c (compile_file): Warn if fun declared static and used + but never defined. + +Thu Oct 12 01:48:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (macarg1): Count newlines even after backslash. + + * c-decl.c (pushdecl): Don't warn for explicit extern + followed by static. That case is useful for incomplete arrays. + + * c-decl.c (grokdeclarator): Delete some junk about Pmode vs EPmode. + + * tm-sparc.h (SELECT_RTX_SECTION): Test was backwards. + + * reload.c (reg_class_subset_p): New function. + +Wed Oct 11 00:35:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * vax.md (indirect_jump): New pattern. + + * c-parse.y (primary): Turn off pedantic after `__extension__'. + (hash, is_reserved_word, etc.): Recognize `__extension__'. + + * expr.c (emit_library_call, expand_call): Make a SEQUENCE for + any needed USE insns and pass them to emit_call_1. + (emit_call_1): Place the passed SEQUENCE immediately before the + generated CALL_INSN even if gen_call made more than one insn. + + * tm-seq386.h (DBX_DEBUGGING_INFO): Override this. + (HARD_REGNO_MODE_OK): Override this. + + * c-typeck.c (build_conditional_expr): Supply missing layout_decl arg. + + * dbxout.c (dbxout_symbol): Handle nested functions. + +Wed Oct 11 00:35:25 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c: Update jump_chain when insns change. + (jump_optimize): Leave room in jump_chain for some extra labels. + Record length in max_jump_chain. Check this when updating. + When optimizing jump-to-return, delete from one chain and add to other. + When cross-jumping turns cond jump to simple one, add to new chain. + Zero jump_chain at end, so redirect_jump won't change it further. + (redirect_jump): Delete from one chain, add to another. + (do_cross_jump): Likewise. + (delete_from_jump_chain): New subroutine. + + * cse.c: If `if (x != y) goto l;' fails to jump, assume x==y. + (reg_invaliate): Add new argument for when value isn't + changing, just its class. + (invalidate): Update reg_invalidate call. + (record_jump_equiv): New function. + (cse_insn): Call it. + + * cse.c (cse_insn): Delete previous test based on + prev_insn_explicit_cc0 just as based on prev_insn_cc0. + +Tue Oct 10 00:14:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (push_reload, combine_reloads): Let two reloads share + if one's regclass is a subset of the other. + + * Makefile.in: What depends in expr.h, depends on insn-codes.h also. + +Mon Oct 9 19:11:38 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (finclude): Close descriptor as soon as text is read. + Eliminate `success'; return directly after successful processing. + (do_include): Don't close descriptor here. + + * tm-i386.h (REG_CLASS_FROM_LETTER): Don't define `S' letter. + It wasn't used; and now it means something else. + + * tm-ns32k.h (REG_CLASS_FROM_LETTER): Don't define `r' here. + `r' is standard. + +Mon Oct 9 01:09:25 1989 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * flow.c (life_analysis): Ignore USEs and CLOBBERs when finding + redundant register copies. + * jump.c (jump_optimize): Do the same thing here. + + * jump.c (mark_jump_label): Loop NOTEs aren't relevant after loop + optimization. + + * integrate.c (copy_for_inline): Correctly handle RTL type "u". + * final.c (output_operand_lossage): Make non-static. + + * recog.c (constrain_operands): Treat N, O, P like I, J, K, L, M. + For Q...U, use EXTRA_CONSTRAINTS if defined. + * reload.c (find_reloads): Likewise. + + * rtl.c (copy_rtx, read_rtx, print_rtx): Handle operand type `V'. + + * rtlanal.c (note_stores): Use variable Y instead of equivalent + slower expression. + + * rtlanal.c (dead_or_set_p): Hard regs don't always have same RTX. + + * rtlanal.c (may_trap_p): Don't use const0_rtx here. + So we can use this file in programs that don't have const0. + +Mon Oct 9 01:09:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Support language-specific tree codes. + * tree.c (standard_tree_code_type, standard_tree_code_length): + Renamed tables. tree_code_type and tree_code_length are now pointers. + * tree.c (init_tree): Copy the tables to allocated memory. + * tree.c (tree_code_name): Move here from print-tree.c + and define like tree_code_type. + + * rtl.c (print_rtl): Handle 0 as operand. + + * emit-rtl.c (save_emit_status): Don't call init_emit here. + * function.c (push_function_context): Do it here. + + * emit-rtl.c (reinstate_emit_status): New function. + * function.c (trampoline_address): Use this around + INITIALIZE_TRAMPOLINE. + + * function.c (trampoline_address): Use fp->tail_recursion_reentry + when trampoline is in outer function. + + * Save and restore stack levels in nonlocal gotos. + * function.c: New variable nonlocal_goto_stack_level. + (init_function_start, push_function_context, pop_...): Init, push, pop. + (delete_handlers): Delete insns to set or use this slot. + * stmt.c (declare_nonlocal_label): Create this stack slot. + (expand_goto): Restore stack ptr from it. + (expand_end_bindings, expand_decl): When setting stack ptr, + store new value here. + * expr.c (expand_builtin): Likewise, for alloca. + * calls.c (expand_call): Likewise. + + * varasm.c (make_function_rtl): Rename nested functions for assembler. + * c-decl.c (start_function): Clear TREE_PUBLIC for nested function. + + * tm-i860.h (*TRAMPOLINE*): Define macros. + + * i860.md (movdi): accept F source in 2nd alternative. + Accept G source in 3rd. + (adddi3, subdi3): Typo in opcode of output. + + * i860.md (indirect_jump): Added pattern. + + * c-decl.c (lookup_label): Shadow label if it's wrongly inherited. + Set DECL_CONTEXT here, since nondeclared labels must be local. + +Sun Oct 8 01:38:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * function.c (expand_function_start): Copy static chain to pseudo + reg if chain is used. + + * tm-mips.h (ASM_SPEC): Pass -nocpp to as. + + * c-decl.c (grokdeclarator): Ignore variant differences + when preserving typedef types from being altered. + + * Allow inner label scopes for ({...}). + * c-decl.c (push_label_level, pop_label_level): New functions. + * c-parse.y (stmt exprs): Call them. + + * c-decl.c (lookup_label): Set DECL-SOURCE-LINE to locus of reference. + (poplevel): Use locus of reference in err msg for undef label. + (define_label): Use DECL_INITIAL as flag that label has been defined. + + * function.c (expand_end_function): Delete nonlocal goto handlers + if no nonlocal gotos are actually received. + (delete_handlers): New function. + + * flow.c (find_basic_blocks): Treat blocks as reachable + if headed by labels with LABEL_PRESERVE_P. + (insn_dead_p): Don't delete insns to set the frame pointer or arg ptr. + + * m68k.md (indirect_jump): New pattern. + +Sat Oct 7 00:46:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (lookup_label): If label is nonlocal and wasn't declared so, + report error and return 0. + (shadow_label): New function. + * c-parse.y (goto stmt): Handle 0 returned by lookup_label. + (label_decl, label_decls): Parse forward-declarations of labels. + (pushlevel): Allow label declarations at start of compound stmt. + + * rtl.h (LABEL_PRESERVE_P): New flag in CODE_LABEL. + * jump.c (jump_optimize): Increment LABEL_NUSES if that flag is set. + + * stmt.c (any_pending_stack_level): New function. + (expand_end_bindings): If block has stack level or cleanups, + and this function has any nonlocal labels, make a nonlocal goto handler + for the block, and put it in effect during the block. + Set LABEL_PRESERVE_P on the handler's label. + (expand_goto): For a nonlocal label, restore its stack frame + and jump to current handler. + + * function.c: New var nonlocal_labels lists labels ok for nonlocal. + Initted in init_function_start, pushed and popped with fcn context. + * stmt.c (declare_nonlocal_label): Put a LABEL_DECL on this list. + + * output.h: Declare current_function_has_nonlocal_label + and sdb_begin_function_line. + * final.c: Don't declare them. + + * function.c (current_function_has_nonlocal_label): New var. + (init_function_start): Init it. + (push_function_context, pop...): Save and restore it. + * flags.h: Declare current_function_has_nonlocal_label. + * stmt.c (expand_goto): Set it if nonlocal label. + * local-alloc.c (combine_regs): Don't tie call-crossing reg + to a non-call-crossing reg, if receive nonlocal gotos. + (block_alloc): Don't allocate pseudos that cross calls, + if receive nonlocal gotos. + * global-alloc.c (global_alloc): Don't even make an allocno for + a reg that crosses calls, if receive nonlocal gotos. + + * function.c (init_function_start): Init function_call_count. + (push_function_context, pop_...): Save and restore it. + * calls.c (expand_call): Increment function_call_count. + * stmt.c (expand_{start,end}_bindings): Use this var + to determine whether there are any function calls in a block. + No need for a nonlocal goto handler if block has no calls. + + * c-decl.c (define_label): Set DECL_CONTEXT. + Maybe push label on shadowed_labels. + (pop_c_function_context): Clear out labels in named_labels + and reinstall those in shadowed_labels. + Restore shadowed_labels. + (push_c_function_context): Push shadowed_labels. + (start_function): Clear shadowed_labels. + + * function.c: New file, split from stmt.c. + + * xm-mips.h: Use __builtin_alloca. + +Fri Oct 6 00:30:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Optimization of + `if (...) x = 1; else {...} if (x) ...' got sense wrong sometimes. + + * Makefile.in (stamp-gnulib2): depend on gcc, cc1, cpp via + gnulib2-indirect. + + * tm-vax.h (TRAMPOLINE_SIZE,INITIALIZE_TRAMPOLINE,TRAMPOLINE_TEMPLATE): + Define macros. + + * m68k.md (addsi3): Change ! to ? in lea alternatives. + Put them before the add-to-register alternative. + + * reload.c (find_dummy_reload): Use PREFERRED_RELOAD_CLASS here + as in push_reload, so we make accurate predictions. + + * c-decl.c (pushdecl): Don't set DECL_CONTEXT for function declaration + that isn't a definition. + + * explow.c (fix_lexical_addr): Handle address that's just a base reg. + + * expr.c (expand_expr, case VAR_DECL): No need for static chain + if var is static. + + * reload.c (find_equiv_reg): Do let xregno be a pseudo reg, + but don't call HARD_REGNO_NREGS in that case. + + * local-alloc.c (combine_regs): Set reg_qty[sreg] even if it was <0. + + * c-decl.c (start_function): Clear named_labels. + +Thu Oct 5 00:30:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (find_equiv_reg): Don't let xregno be a non-hard reg. + Don't do OVERLAPPING_REGNO_P on a pseudo reg number. + + * Handle addresses of nested functions. + * New tm macros TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, + ALLOCATE_TRAMPOLINE, TRAMPOLINE_TEMPLATE. + * expr.c (expand_expr, case ADDR_EXPR): Handle addresses of nested fns. + * stmt.c (trampoline_address): New function. + * varasm.c (assemble_trampoline_template): New function. + + * i386.md (trunchiqi2, etc.): Output %1 with size of destination. + * out-i386.c (PRINT_REG): Support 'b' as CODE. + + * combine.c (try_distrib): Make sure we don't move a reg use + across a store into that reg. + + * reload1.c (order_regs_for_reload): Rate fixed regs at LARGE+2, + and explicitly used regs at LARGE+1. + + * stor-layout.c (layout_record): Support BIGGEST_FIELD_ALIGNMENT. + * tm-vax.h (BIGGEST_FIELD_ALIGNMENT): Define it. + (BIGGEST_ALIGNMENT): Now always 32. + + * stor-layout.c (build_int): When memoizing, make permanent nodes. + +Wed Oct 4 19:40:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * xm-i860.h: Missing file added. + + * integrate.c (function_cannot_inline_p): Don't inline if > 100 bytes + of stack space, unless declared inline. + +Tue Oct 3 00:16:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (assign_outer_stack_local): New function. + (put_var_into_stack): Allocate stack slot in fn the variable is in. + + * stmt.c (put_var_into_stack): If variable-size object is nonlocal, + put the pseudo with its address into the stack. + + * calls.c: New file, split out from expr.c. + (expand_call): Pass static chain if fn wants it. + + * Make put_var_into_stack handle vars of containing function. + * stmt.c (put_var_into_stack): Find the rtl chains for the + function that the variable belongs to. + (fixup_var_refs): New args FIRST_INSN, STACK and RTL_EXPS. + + * Make DECL_CONTEXT the function a var is in, and set it right away. + * c-decl.c (store_parm_decls): Use DECL_RESULT, not DECL_CONTEXT, + as the flag for duplicate names or missing names. + * c-decl.c (start_function): Don't set current_function_decl + till after calling pushdecl. + * c-decl.c (pushdecl): Set DECL_CONTEXT to current_function_decl. + (poplevel): Used to set it here, to the LET_STMT. Don't. + * stmt.c (init_function_start): Test for a FUNCTION_DECL in + DECL_CONTEXT, not for a LET_STMT. + + * c-parse.y (primary <- identifier): Set TREE_NONLOCAL if appro. + Also call mark_addressable. + + * stmt.c (expand_function_start): Store static chain into stack frame. + Fetch static chains of containing functions into pseudos. + (lookup_static_chain): Moved here; and really does something. + * expr.c (expand_expr): Handle nonlocal variable. + * explow.c (fix_lexical_addr): New function. + + * out-i386.c (fp_pop_int): Use %L0 in fistp insn. + + * global-alloc (find_reg): Fix typo marking new hard reg conflicts. + + * stmt.c (pushcase, pushcase_range, expand_end_case): + When warning about insns at start of case, don't mind NOTEs. + + * local-alloc.c (combine_regs): + Transfer all pseudos from SREG's old qty to its new qty. + + * Support nested functions: + * stmt.c (push_function_context, pop_function_context): New functions. + * tree.c (save_tree_status, restore_tree_status): New functions. + * stor-layout.c (save_storage_status, restore_storage_status): Ditto. + * expr.c (save_expr_status, restore_expr_status): Ditto. + * emit-rtl.c (save_emit_status, restore_emit_status): Ditto. + * c-decl.c (push_c_function_context, pop_c_function_context): Ditto. + (start_function, finish_function): New arg NESTED. + * c-parse.y (nested_function, notype_nested_function): New nonterms. + (decl): New alternative to use them. + + * tree.h: Declare lineno. + * c-decl.c (finish_function): Don't expect lineno as arg. + * c-parse.y (fndecl, *nested_function): Don't pass it. + + * expr.c (init_expr, expand_call): Delete may_call_alloca. + * tm-m88k.h, tm-sparc.h, tm-spur.h: Use current_function_calls_alloca. + * tm-mips.h: It wasn't really used; delete its declaration. + +Mon Oct 2 16:26:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (emit_reload_insns): Reject any OLDEQUIV that is + in use in any other reload of this insn. + + * expr.c (expand_call): Don't put on notes for const functions + if there aren't real insns to hold them. + +Sun Oct 1 19:50:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (expand_inline_function): Handle PARALLEL in CALL_INSNs + when setting follows_call. + + * mips.md (call_value): Change to a straightforward define_insn + with just one action--no PARALLEL. + + * i860.md (pfeq, pfgt and pfle patterns): Add f0 as 3rd arg. + + * integrate.c (save_for_inline): Don't delete NOTE_INSN_FUNCTION_END. + + * c-parse.y (simple_if): Return $$ as value of stmt_count. + (stmt (if statement)): Warn if $$ was not incremented in the body. + (stmt (else statement)): Likewise. + (stmt): All alternatives except null statement increment stmt_count. + +Fri Sep 29 08:56:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * regclass.c (reg_class_record): If move between CLASS and GENERAL_REGS + is costly, charge that cost to GENERAL_REGS and its subclasses. + * tm-alliant.h, tm-m68k.h (REGISTER_MOVE_COST): New macro. + + * regclass.c (regclass): When a reg is a parm equiv to a stack slot, + decrease its memcost, since the insn to load it would go away. + + * global-alloc.c (find_reg): Rewrite two-pass hard reg preference code. + Uses regs_used_so_far to avoid allocating a reg not used elsewhere + in the first pass. Also updates regs_used_so_far. + (global_alloc): Initialize regs_used_so_far. + + * tm-next.h (LINK_SPEC): Typo for -Z option. Don't pass -M option + to ld, since that is for cpp. + + * Support -MD and -MMD options. + * gcc.c (default_compilers): Pass them to cpp in special way. + Don't inhibit compilation for them, only for -M and -MM. + * cccp.c (main): Handle them like -M and -MM except take arg + which is file name to write deps in. + + * toplev.c: #if 0 around everything for GDB_DEBUG. + * symout.c: File removed from distribution. + * Makefile.in: Don't try to compile or link it. + + * tm-hp9k320.h (ASM_FILE_START): Output a `version' pseudo-op. + [! HPUX_ASM] (ASM_SPEC): Don't use the -V option. Recognize -mc68000. + (CALL_USED_REGISTERS): Redefinition deleted. HPUX 6.5 doesn't need it. + * tm-hp9k310.h, tm-hp9k310g.h: New files. + +Thu Sep 28 12:57:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (pushcase, pushcase_range): Warn if code was emitted inside + case stmt before 1st label is seen. + (expand_start_case): New arg is string to use in that warning. + (struct nesting): New fields printname and seenlabel. + * c-typeck.c (c_expand_start_case): Pass new arg to expand_start_case. + + * gcc.c: Can now read compilation specs, and asm_spec (etc), from file. + (cpp_spec, asm_spec, etc.): New variables, initted to corresp. macros. + (do_spec_1, validate_all_switches): Use the variables, not the macros. + (link_command_spec): New name for old link_spec. + (compilers, n_compilers): Now a pointer, with size of vector ptd to. + (default_compilers): New name for old `compilers' vector. + (read_specs): Given file name, read specs and add to `compilers'. + Also set cpp_spec, asm_spec, etc. + (skip_whitespace): New subroutine. + (main): Initialize `compilers' from `default_compilers'. + Find a specs file and call read_specs. + Search thru `compilers' from back to front. + * Makefile.in (install): Use gcc -dumpspecs to write a specs file. + + * Support multiple installed compilers; find them by + target machine and version. + (STANDARD_EXEC_PREFIX): Change to `.../gcc/'. + (standard_exec_prefix_1): Change to `.../gcc/'. + (process_command): Options -b and -V set spec_machine, spec_version. + Option -dumpspecs writes specs file to define cpp_spec, asm_spec, etc. + Option -dumpversion writes version number. + (main): Set machine_suffix from spec_machine and spec_version. + * Makefile.in (libsubdir): New variable, made from libdir. + (gcc.o): Define DEFAULT_TARGET_MACHINE macro in compilation. + Change value of STANDARD_EXEC_PREFIX as above. + (cccp.o): Use libsubdir. + (install): Install files under $(libsubdir), after making that dir. + + * reload.c (decompose): Handle case of pseudo with no hard reg. + +Wed Sep 27 01:20:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * global-alloc.c: #if 0 handling of REG_NO_CONFLICT notes. + + * c-typeck.c (build_c_cast): Implement cast to union type. + + * Edit the makefile automatically when necessary. + * config.gcc: Produce Makefile by editing Makefile.in with sed. + * Makefile.in: New name for file `Makefile'. + Comments on editing the file deleted. + * config/make-*: Various files are inserted by sed into Makefile. + + * Provide a way for languages to control printing of function names. + * toplev.c (error, fatal, announce_function, etc.): + Use value of decl_printable_name to compute what name to print. + * stmt.c (init_function_start): Likewise. + * toplev.c (main): Init that variable. + (decl_name): New function, used by default. + + * explow.c (round_push): Fix typo: return fast if ALIGN is 1. + + * flow.c (dump_flow_info): Delete excess arg to fprintf. + * gcc.c (fatal): Delete excess arg to delete_temp_files. + + * expr.c (convert_move): Handle absence of integer truncate insns + by copying value to a reg (and then using subreg). + + * final.c (final_start_function): Do leaf-function register renumbering + if that is defined for this machine. + (leaf_renumber_regs, only_leaf_regs_used, leaf_function_p): New fns. + + * varasm.c (in_text_section): New function. + * tm-3b1.h (ASM_OUTPUT_SKIP): Use that. + + * stmt.c (case_index_expr_type): New function. + + * c-parse.y (maybe_attribute): Don't fail to return a value. + +Tue Sep 26 02:40:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Do auto-increments for hard regs. + * flow.c (mark_used_regs): Do set reg_next_use for hard regs. + When making an auto-increment for a hard reg, don't mess with + reg_n_refs or reg_n_sets. + (try_pre_increment_1): Likewise. + + * gcc.c (compilers): -undef inhibits predefined symbols. + + * combine.c (subst): In case EQ, prefer ZERO_EXTRACT, not SIGN_EXTRACT. + * vax.md (jbs, jbc patterns): Write with ZERO_EXTRACT. + * m88k.md: Likewise. + + * Merge C++ changes in stmt.c: + * Set up an obstack, stmt_obstack. + (ALLOC_NESTING): Allocate a `struct nesting' on that. Callers changed. + (POPSTACK): Use the obstack. + (init_stmt): New fn: init the obstack. + (any_pending_cleanup): New fn. + (expand_start_bindings): Leave outer_cleanups 0 if nothing in it. + (expand_end_bindings): Preserve some global vars around cleanups. + After cleanups, if no stack level to restore, do pending pops. + (fixup_cleanups): Do pending pops after the cleanups. + (expand_start_case): Don't output a NOTE if already have one. + (assign_parms): Speed up sizetree computations in common case. + (init_function_start): Use lang_printable_name for current_function_name. + (expand_function_end): Don't set REG_FUNCTION_VALUE_P + for a pseudo reg used to copy into the real return. + * toplev.c (compile_file): Call init_stmt. + + * c-typeck.c (commontype): If one arg is error_mark_node, return other. + +Mon Sep 25 12:13:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (expand_binop): Handle boolean ops on >SImode with + several one-word insns. Put out REG_EQUAL and REG_NO_CONFLICT notes. + * global-alloc.c (global_conflicts): For each insn, record + in no_conflict_pairs all the REG_NO_CONFLICT notes of the insn. + (record_one_conflict): Don't mark a conflict between such a pair. + * local-alloc.c (block_alloc): Do combine_regs on the sequences + made by expand_binop for multi-word boolean ops. + (combine_regs): New arg ALREADY_DEAD is 1 if UREG died prior to INSN. + (no_conflict_p): New subroutine. + * combine.c (try_combine): Move REG_NO_CONFLICT notes like REG_INC. + * flow.c (life_analysis): Don't delete no-op moves + if they carry REG_EQUAL notes. These insns are needed later. + * reload.c (find_dummy_reload): Use actual operands (which may be + subregs) for most purposes, including checking for overlap. + (hard_reg_set_here_p): Handle a range of regnos, not just one. + + * loop.c (move_movables): Use special techniques to move regs + used for zero-extension. Don't combine matching regs; instead, + just record them in pairs in regs_may_share. + * global-alloc.c (global_alloc): Digest regs_may_share into a + vector, reg_may_share. Then assign matching regs the same allocno. + (global_alloc): Initialize allocno_n_refs, allocno_live_length, + allocno_calls_crossed. + (allocno_compare): Use those new vectors; don't use allocno_reg. + (find_reg): Use those new vectors. + Assign hard reg to all the pseudos that share the allocno. + + * jump.c (jump_optimize): Two new cases simplify jumping to or + falling into a test-and-branch after setting the register being tested. + * jump.c (get_label_before, get_label_after): New functions. + (do_cross_jump): Use get_label_before. + +Sun Sep 24 00:21:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (__fixunsdfsi): Defined here, not in gnulib.c. + * Makefile (LIBFUNCS, LIB2FUNCS): Corresponding change. + + * tm-i860.h (SDB_DEBUGGING_INFO): Define this, not SDB_... + + * gcc.c (link_spec): Don't specify -lg. + * tm-alliant.h, tm-convex.h, tm-hp9k3bsd.h, tm-isi68.h, tm-news.h + * tm-pyr.h, tm-seq386.h, tm-sequent.h, tm-sparc.h, tm-spur.h + * tm-sun2.h, tm-sun3.h, tm-sun386i.h, tm-tahoe.h, tm-vax.h: + Make LIB_SPEC link with -lg. + * tm-harris.h, tm-vaxv.h, tm-vms.h: Turn off inherited LIB_SPEC. + + * recog.h (insn_*): Declare these tables `const'. + (const): Define this as nothing, if not __STDC__. + * expr.h (insn_gen_function): Declare `const'. + (const): Define this as nothing, if not __STDC__. + * genoutput.c (main): In insn-output.c, don't define `const' if + already defined. + + * recog.c (offsettable_nonstrict_memref_p): New function. + * stmt.c (fixup_var_refs_1): Use that, not offsettable_memref_p. + * reload.c (find_reloads): Likewise. + + * integrate.c (save_for_inline): Set in_nonparm_insns when arrive + at the first nonparm insn. + (copy_for_inline): Set TREE_READONLY only if in_nonparm_insns. + + * Makefile (float.h): Make hard-params an ordinary dependency. + + * c-decl.c (poplevel): When popping a local extern decl, + save the TREE_USED bit in the identifier. + * toplev.c (compile_file): Check that, printing "not used" warnings. + + * c-parse.y (init_lex): Discard undesired reserved words from table. + (yylex): No need to check for them at lookup time. + + * tree.c (make_node): Always put PARM_DECL in saveable_obstack. + + * toplev.c (floor_log2, exact_log2): Rewritten for speed. + + * tree.c (listify): New function. + + * c-typeck.c (convert_for_assignment): New args for function being + called and argument number. Used in error messages. + (actualparameterlist): Pass those args usefully. + (wrn_for_assignment): New function. + + * loop.c (general_induction_var): Handle give copied from a biv. + + * i386.md (div*i3, udiv*i3): New patterns. + (divmodhi4, udivmodhi4): New patterns. + + * combine.c (subst): + Simplify (sign_extend:M (subreg:N (lshiftrt:M REG CONST) 0)) + when REG was assigned from (zero_extend:M (any:N ...)). + Make the similar (zero_extend:M ...) case share code. + + * expr.c (store_field): A frame-pointer-relative address is stable. + + * expr.c (expand_expr): Effectively pass on IGNORE for 2nd op of comma. + +Sun Sep 24 00:21:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.36 released. + + * genextract.c (main): Pass `insn' as arg to `fatal_insn_not_found'. + + * tahoe.md (casel patterns): Use %@ for operand of .align. + * tm-tahoe.h (PRINT_OPERAND): %@ prints `1'. + * tm-harris.h (PRINT_OPERAND): Redefine it; %@ prints `2'. + + * config.gcc (decstation): New entry. + + * tm-harris.h: New file, using tm-tahoe.h. + + * tm-decstatn.h, tm-mips-bsd.h, tm-mips-sysv.h: New files. + +Sat Sep 23 00:28:14 1989 Alain Lichnewsky (lich at glenlivet) + + * added -Zxxx flag in tm-mips.h. (-Z stands for systype) + + used as -ZSYSV or -ZBSD43 on RISC_OS. I suppose + that at somepoint -ZPOSIX might be required for Ultrix. + + * changed command issued to loader to set -systype and to get + crt1 crtn instead of crt0. + + * changed predefines for cpp to agree with RISC-OS + + * tm-mips.h checks for machine type ( defined(ultrix) == DECSTATION) + so that user does not have to go in and change tm-mips.h anymore + + * cpp defines mips host_mips unix and SYSTYPE_SYSV + or SYSTYPE_BSD43. + +Fri Sep 22 00:31:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * pyr.md (andsi3): Flush spurious paren. + + * Makefile (hard-params): Don't use LIBS or LIBDEPS. + + * rtl.c (init_rtl): + Use malloc to allocate the string for format of CONST_DOUBLE. + Don't fail to store in rtx_format. + +Thu Sep 21 00:33:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * print-tree.c (dump): Move decl of P in REAL_CST case. + + * fold-const.c (fold): For ABS_EXPR, handle REAL_IS_NOT_DOUBLE. + + * c-convert.c (convert_to_real): Use REAL_VALUE_ATOF to make 0. + + * mips.md (movdi): Handle constant with or without WORDS_BIG_ENDIAN. + For alternative 2, output just 2 store insns, not 3. + + * dbxout.c (dbxout_symbol): Optionally go to .data for + a static file-scope variable. + * tm-vax.h: Define DBX_STATIC_STAB_DATA_SECTION to request this. + + * varasm.c (output_constant, force_const_mem): + ASM_OUTPUT_DOUBLE_INT now takes rtx as argument. + + * gvarargs.h [__NeXT__]: Undefine macros defined by stdardg.h. + Define _VARARGS_H. + + * stddef.h (size_t): Don't define it if _SIZE_T macro is defined. + (NULL): Undef any previous defn. + + * cexp.y (NULL): Don't define if already defined. + + * emit-rtl.c (force_next_line_note): New function. + * stmt.c (expand_function_start): Call that just before returning. + +Wed Sep 20 01:22:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (asm_clobbers): + Allow string concatenation: call combine_strings. + +Mon Sep 18 00:04:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_call): If calling const function, don't defer + pops for this call. + + * c-parse.y (yylex): When float constant ends in `f', + actually truncate to a single-float. + +Sun Sep 17 01:36:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (SWITCH_TAKES_ARG): -A takes an arg. + (link_spec): Inhibit start files when -A. + + * convex.md (call, call_value): Supply dummy arg to RETURN_POPS_ARGS. + + * gnulib2.c (__fixunsdfdi): After removing top half, A can be neg. + (__cmpdi2, __ucmpdi2): Was misusing macros HIGH and LOW-- + use .s.high and .s.low to extract words from long_long. + + * Makefile (gnulib2): Run `./gcc'. + + * Makefile (float.h): Use `make', not `$(MAKE)'. + (hard-params.o): Use `$(srcdir)' in deps as in commands. + + * out-tahoe.c (output_move_double): Handle constant operand 1. + +Sat Sep 16 01:15:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (emit_reload_insns): Put death note for input reload reg + even if reload was inherited. + + * out-i860.c (output_block_move): Typo loading size of block. + + * m68k.md (dbra patterns): Do CC_STATUS_INIT. + + * cse.c (fold_rtx): Check GET_MODE_CLASS before floating negate. + +Fri Sep 15 00:39:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (subst): Don't combine (subreg (mem)) + if subreg's mode is wider than mem's mode. + +Thu Sep 14 04:33:51 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (clean): Delete temp files used in making gnulib. + + * tm-next.h (LINK_SPEC): Pass -Z and -seglinkedit options. + +Tue Sep 12 01:06:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_type): Ignore MAX_FIXED_MODE_SIZE for ints. + + * mips.md (cmpsi + bleu peephole): Should output unsigned insn. + + * expmed.c (store_bit_field, extract_bit_field): If loading mem + into reg for bit field insn, don't use a larger mode than insn wants. + + * Makefile (stamp-gnulib2): Depend on gcc, cc1, cpp to avoid + wrong order of making when parallel. + + * Makefile (float.h): Do use $(MAKE) to run recursive make. + +Mon Sep 11 00:49:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (main): Test for missing arg after -o, etc. + + * tm-next.h: Nearly completely new. + + * gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Move after config.h. + + * cccp.c: Cast some args to strcpy and strcat. + + * genoutput.c (error): Declare arg S. + + * tm-pyr.h, pyr.md, out-pyr.c, xm-pyr.h: New files. + * config.gcc: New item for pyr. + + * gvarargs.h: If __pyr__, use va-pyr.h. + +Sun Sep 10 00:48:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (inc_for_reload): Really return the first of the insns. + + * stor-layout.c (build_int): Memoize size nodes for sizes <= 32. + + * loop.c (check_dbra_loop): Don't reverse a biv that is used + in between its update and the loop endtest insn. + +Sat Sep 9 02:10:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (genop): Don't use `combine' for nonexplicit constants. + Handle some identity elements, etc., directly. + (layout_basetypes): Function deleted. + (layout_record): Ignore any TYPE_DECLs in the fieldlist. + Don't do PCC_BUTFIELD_TYPE_MATTERS hack on field with ERROR_MARK type. + (layout_union): Delete error check for base types. + Ignore any TYPE_DECLs in the fieldlist. + (layout_type): Copy layout info directly into all variants of type. + Delete unused local `x'. + + * mips.md (movdi): Handle constant source operand. + (movsi): Some output code moved to output_load_immediate. + * out-mips.c (output_load_immediate): New function. + + * config.gcc (iris): Use tm-iris.h and xm-iris.h. + + * integrate.c (copy_for_inline): Copy all nonconstant MEM addresses. + + * tm-3b1.h (ASM_OUTPUT_SPACE): New override defn, to output explicit + bytes of 0 if in text segment. + +Fri Sep 8 19:15:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (try_combine): Don't do i3dest stuff if i3 isn't a SET. + +Thu Sep 7 00:16:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (function_cannot_inline_p): Fn is "not even close" + only if > 3 * max_insns. + + * toplev.c (fatal_insn_not_found): New fn. + * genextract.c (main): Make insn_extract call that fn. + + * integrate.c (expand_inline_function): Don't abort about bad offset + in a parm whose type is error_mark_node. + Make another syntax level to hold parm destructors. + + * tm-mips.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): + Increment push_loc after, not before, each reg save or restore. + When storing reg 9 or 29, use offset tsize-4. + Make tsize larger by 4 initially. + (STARTING_FRAME_OFFSET): -8, not -4. + + * gcc.c (choose_temp_base): Make use of TMPDIR and P_tmpdir + if they exist. + + * toplev.c, gcc.c, cccp.c, gen*.c (fancy_abort): + New function which can be used to replace `abort'. + + * toplev.c (main): Save argv, argc in save_argv, save_argc. + + * jump.c (delete_insn): Always advance NEXT across deleted insns, + in case not optimizing. Fixes setting current_function_returns_null. + + * symout.c: Include stddef.h with <...>. + +Wed Sep 6 00:39:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (find_exec_file): Was using `argbuf[0]' where wanted `prog'. + + * combine.c (combine_instructions): Dont call record_dead_and_set_regs + if insn has become a NOTE. + + * reload.c (combine_reloads): Update reload_when_needed. + + * jump.c (delete_insn): If delete label on ADDR_VEC, delete table too. + (jump_optimize): If ADDR_DIFF_VEC label has 1 ref, delete it and table. + + * gunlib2.c (__fixunsdfdi, __floatdfdi): Make the long long, + and/or its two halves, unsigned. + + * reload1.c (reload): When setting double_reg_address_ok, + require it to be offsettable. + * out-sparc.c (output_fp_move_double): Now safe to use std + for all reg+reg addresses. + + * vax.md: Add another simplified-casesi pattern for operand 0 constant. + + * cse.c (fold_rtx): Don't truncate VAL at end if WIDTH is 0. + Don't alter WIDTH for that purpose based on the operands. + + * stmt.c (warn_if_unused_value): && or || is ok if 2nd op has effect. + + * c-parse.y (ALIGNOF unary_expr): Find a larger value if possible. + + * reload.c (combine_reloads): Don't combine an output address reload. + (find_reloads): Call combine_reloads after setting reload_when_needed. + (find_reloads_address): Update OPERAND if copy the operand. + + * cccp.c (macroexpand): Missing arg no error in 1-arg macro if -trad. + +Tue Sep 5 14:12:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (find_dummy_reload): Don't use the output reg if it is + a fixed reg which can overlap with other regs. + + * cse.c (exp_equiv_p): Two vectors must have same length. + + * tree.def (WITH_CLEANUP_EXPR): Print-name string was wrong. + + * optabs.c (expand_fix): Undo previous change (unsigned conversion). + It doesn't work. + + * gcc.c: Pass -i option to cpp. It takes an arg. + + * cccp.c (cplusplus_include_defaults) [VMS]: Typo in array indices. + + * Makefile (gnulib): Create it in tmpgnulib, then rename at the end. + + * i860.md (movdi from constant pattern): Fix `st' opcode typos. + + * Makefile (hard-params*): Use CCLIBFLAGS, not CFLAGS. + +Fri Sep 1 03:43:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-i386gas.h (ASM_OUTPUT_ALIGN): .align arg isn't a log, in gas. + (ASM_OUTPUT_ALIGN_CODE): Align labels, etc. to 4-byte boundary. + + * integrate.c (save_for_inline): Delete NOTE_INSN_DELETED notes. + + * Makefile (clean): Delete dbr and jump2 dumps. + + * Makefile (gnulib, gnulib2): Compile in main dir, not libtemp subdir. + This avoids trouble with -I options, etc. + +Thu Aug 31 15:07:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (emit_reload_insns): + Be specific moving REG_DEAD notes to an output reload. + Sometimes move them to output-operand-address reloads. + + * out-sparc.c (output_fp_move_double): Very cautious about std. + Use it only for something visibly aligned, or for an array element. + + * cccp.c (main) [VMS]: Remove dirs and extension from PROGNAME. + (pfatal_with_name) [VMS]: Return VMS system call error code as status. + (cplusplus_include_defaults) [VMS]: Add GNU_GXX_INCLUDE. + + * xm-vms.h (FATAL_EXIT_CODE): Now (44 | 0x10000000). + + * expr.c (do_store_flag): Allow more values of STORE_FLAG_VALUE. + + * gnulib2.c (__fixunsdfdi): Explicitly cast doubles to `long int' + to avoid infinite recursion. + +Wed Aug 30 13:28:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (skip_consec_insns): Skip NOTEs. + + * loop.c (general_induction_var): If G or V is a nonreplaceable giv, + give up. If G is allocated here, consider it replaceable. + + * stupid.c: Make uid_suid, reg_where_born and reg_where_dead + vectors of ints, not short. + +Tue Aug 29 00:21:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-iris.h: Fix typo in formfeed char. + + * out-i860.c (singlemove_string): Add missing `.l' to `st', `ld'. + + * loop.c (general_induction_var): Don't set G from 2nd op. of MINUS, + since that would negate the result. + +Mon Aug 28 00:16:36 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * dbxout.c (dbxout_symbol): When we need a pointer type, don't + record it in TYPE_POINTER_TO, lest it not live as long as its target. + + * tm-hp9k320.h (CPP_PREDEFINES): Delete __hp9000s300 and _HPUX_SOURCE. + + * Makefile (gnulib): Deleted stamp-gnulib2 in wrong dir. + (hard-params.o): Copy it into current dir before compiling. + (STAGESTUFF): Include the stamp-*.[ch] files. + +Sun Aug 27 13:59:39 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * out-i860.c (output_size_for_block_move): Typo in CC_KNOW_HI_R31. + + * integrate.c (expand_inline_function): Ignore insns to set value reg + if we don't want the value. + + * varasm.c (make_function_rtl, make_decl_rtl): Use DECL_ASSEMBLER_NAME. + + * Makefile (stamp-gnulib2): Don't explicitly delete old members, + just replace them. + + * m68k.md, alliant.md (trunchiqi): Use movew if moving from memory + or from a const_int. + + * integrate.c (expand_inline_function): Set first_parm_offset + later on, after computing the args, in case those args + contain inline function calls. + + * alliant.md (movqi): Like recent change in m68k.md. + +Sat Aug 26 00:26:03 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * tm-hp9k320.h (CPP_PREDEFINES): Take out m68k and mc68000. + * tm-news.h (CPP_PREDEFINES): Add mc68000. + +Fri Aug 25 15:37:35 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * optabs.c (expand_fix): Can convert to unsigned int + by subtracting 2**(N-1), converting to signed, and adding 2**(N-1). + + * reload.c (find_reloads_address): For out-of-range stack slot, + reload the displacement into a reg. + (find_reloads_toplev): For subreg of a reg with a reg_equiv_address, + turn the whole thing into a memref. + +Thu Aug 24 14:07:03 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * c-decl.c (grokdeclarator): If function is declared `extern inline', + set current_extern_inline. + (start_function): In that case, set TREE_EXTERN in function decl. + * toplev.c (rest_of_compilation): In that case, don't really compile. + (compile_file): Don't output such functions at the end either. + + * c-typeck.c (build_function_call): Do set NAME if we have one. + + * Prevent any variability in results of qsort. + * stupid.c (stupid_reg_compare): Compare by regno as last resort. + * global-alloc.c (allocno_compare): Same idea. + * local-alloc.c (qty_compare_1): Same idea. + * reload1.c (hard_reg_use_compare, reload_reg_class_lower): Same idea. + + * cccp.c (macroexpand): If read one arg, but it's whitespace, + consider that 0 args for checking number of args. + Improve plurals in error messages. + + * expr.h (inhibit_defer_pop): New name for current_args_size, + now declared here. + (NO_DEFER_POP, OK_DEFER_POP): Moved here. + * expr.c: Names related to current_args_size renamed. + (clear_current_args_size): Deleted. + * stmt.c (expand_function_start): Init inhibit_defer_pop here. + + * stmt.c (expand_start_stmt_expr): Do NO_DEFER_POP. + (expand_end_stmt_expr): Do OK_DEFER_POP, and don't do deferred pops. + + * Makefile (c-parse.tab.c): Pass -o option to Bison. + +Wed Aug 23 23:14:06 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * expmed.c (store_bit_field, extract_bit_field): + Use GET_MODE_WIDER_MODE to scan possible modes for bestmode. + + * Makefile (stamp-gnulib2): Discard error messages from `ar d'. + +Tue Aug 22 00:31:51 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * final.c (output_source_line): In COFF, don't output `.ln 0'. + + * Makefile (stamp-gnulib2): Depend on gnulib. For parallel make. + + * stmt.c (uninitialized_vars_warning): Don't crash if DECL_RTL is 0. + + * i386.md (truncdfsf2): Pay attention whether stack top is dead. + +Mon Aug 21 22:02:40 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * reload1.c (choose_reload_regs): Don't use regno uninitialized, + in the code that does find_equiv_reg. + +Sun Aug 20 00:06:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * m68k.md (movqi): Was outputting bad code for areg->mem and mem->areg. + + * explow.c (memory_address): Handle a hard reg in wrong reg class. + + * stmt.c (expand_function_end): Set REG_FUNCTION_VALUE_P in return + reg when returning address of structure value block. + + * integrate.c (save_for_inline): Preserve integrated bit on insns. + +Sat Aug 19 14:20:07 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * combine.c (subst): Don't change (subreg:M (mem:N ...)) to + (mem:M ...) if address is mode-dependent. + + * config.gcc: Copy and alter Makefile for any srcdir except `.'. + In that case, make a .gdbinit as well. + + * sparc.md (andcbsi3, iorcbsi3, xorcbsi3): These are not commutative. + + * vax.md (cmpv and cmpzv patterns): Use COMPARE, not MINUS. + +Fri Aug 18 12:24:52 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * alliant.md (movqi): Change move to mov in assembler code. + + * integrate.c (expand_inline_function): + Handle args passed in regs and copied to slots reached via arg ptr. + + * out-sparc.c (output_delayed_branch): + Do alter_subreg on operands of delay insn. + + * reload1.c (choose_reload_regs): Look for a reg to share + before one that we won't share. + + * expr.h: Define OPTAB_MUST_WIDEN. + * optabs.c (expand_binop): Handle that case. + * expmed.c (expand_shift): Use that when widening lshift to ashift. + + * optabs.c (emit_cmp_insn): Use CONST0_RTX, not individual vars. + + * gnulib2.c (lsh*di3, ash*di3): Return right away if count is zero. + Otherwise tried to shift by 32. + Also replace constant 32 by something symbolic. + + * final.c (output_source_line): Output line number in COFF + even if wrong file. + +Thu Aug 17 15:16:34 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * Makefile (version.o): Make this a target; specify source file. + (obstack.o): Likewise. + + * config.gcc (i860): New alternative. + + * i860.md (movstrsi): Record the alignment as operand 3. + Renumber following (internal) operands. + * out-i860.c (output_block_move): Rewrite as in out-sparc.c. + (output_size_for_block_move): Likewise. And don't + subtract alignment from the size. + +Wed Aug 16 13:27:12 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * loop.c (combine_movables): Don't combine zero-extend + registers that live outside the loop. + + * integrate.c (expand_inline_function): Use copy_to_mode_reg + to set up this_struct_value_rtx, to handle sums right. + + * Makefile: Use $(srcdir) in bison output files used as deps. + Supply some missing deps. + (*.info, doc): *.info files go in srcdir. + +Tue Aug 15 00:11:12 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * i860.md, tm-i860.h, out-i860.c: New files. + + * c-decl.c (duplicate_decls): Fix bug determining whether NEWDECL + is a definition or just a decl. + Combine code to preserve various things from old definition + through a declaration. + + * config.gcc: Scan all args at beginning, setting variables. + Arg of form -srcdir=... sets srcdir explicitly. + srcdir now doesn't contain a slash, and is used with a slash. + + * Makefile (install): Copy header files and gcc.1 from srcdir. + But copy float.h from current dir. (Remove that from USER_H.) + (various): Use new variable INCLUDES to get the -I options. + Add -I. at the beginning of these. + (gnulib, gnulib2): Likewise, use SUBDIR_INCLUDES. + Also, get source file from srcdir. + Also, depend on $(CONFIG_H). + (alloca.o): Get alloca.c from srcdir. + + * reload1.c (emit_reload_insns): Bug in last change: + don't fail to set this_reload_insn. + + * Makefile (Bison rules): Specify $(srcdir) for target and source. + (Explicit C rules): Specify $(srcdir)/ for source in commands. + Use sed to eliminate `./' in normal case. + (insn-*.c): Use $(srcdir) to run move-if-change. + + * config.gcc: Check . and .. for the sources. + If in .., use that when making links. + Also, copy Makefile, alter srcdir in it, and add a VPATH. + + * stmt.c (expand_end_case): When converting CONST_INT index + to an INTEGER_CST, sign-extend if signed type. + +Mon Aug 14 13:51:08 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * c-decl.c (duplicate_decls): Warn for qualifier mismatch + only if pedantic; don't consider it a type mismatch. + Merge the qualifiers of the two decls if the types match. + + * expmed.c (store_bit_field): For insv, memref displacement + always counts in bytes, regardless of unit fetched. + When checking predicate of op0, accept any mode. + + * optabs.c (expand_float): One call to can_float_p had args backwards. + + * loop.c (check_dbra_loop): Set the JUMP_LABEL of the new jump insn. + Increment label's use count rather than storing 2. + + * Makefile: Instead of $<, which fails in certain makes, + use $@ and then substitute in the name with sed. + + * out-sparc.c (output_scc_insn): Handle CC_REVERSED for ordered tests. + Use orcc insns to store the result and set cc's for it. + + * sparc.md (scc combination patterns): + Use operands[0] as basis for recorded cc value. + + * gnulib2.c (floatdidf, fixdfdi, fixunsdfdi): New functions. + + * gnulib.c (floatdidf, fixdfdi, fixunsdfdi): Deleted. + (union longlong, union double_di): Deleted. + (HIGH, LOW): Deleted. + These were deleted because most did not handle full range of DI + and they didn't use the right calling convention for DI. + +Sun Aug 13 13:06:45 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * c-typeck.c (comptypes): Qualifiers must match. + (Was already true for scalars.) + Also, array elt qualifiers must match. + + * tm-apollo68.h (STRUCT_VALUE): Make it 0. + (This was done before and lost.) + * out-i386.c (function_epilogue): Use ret $4 to pop structure address. + (This was done before and lost.) + + * out-i386.c (call_top_dead_p): Don't fail to check + the rtx code of the insns themselves. + (This was done before and lost.) + + * out-sparc.c (output_block_move): If align is 8, make it 4. + + * typeclass.h: New file. + * expr.c: Include it. + (expand_builtin): Use those codes in __builtin_classify_type. + + * Makefile (all, lang-c): Reinstall gnulib2. + + * Makefile (gnulib2): Don't give up if `ar d' fails. + + * expr.c (emit_library_call): New 2nd arg NO_QUEUE. + All callers changed to pass it. + * optabs.c (expand_binop, expand_unop): Don't call emit_queue. + Instead, pass 1 for NO_QUEUE to emit_library_call. + +Sat Aug 12 12:05:22 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * reload1.c (emit_reload_insns): Decision for where to put input + reload insn is now common to ordinary case and auto-increment. + Likewise, updating these positions afterward. + + * stmt.c (assign_parms): Treat last named arg as nameless. + * expr.c (expand_call): Likewise. + + * explow.c (copy_to_mode_reg): Use force_operand for PLUS or MULT. + (copy_addr_to_reg): Use copy_to_mode_reg. + + * expmed.c (store_bit_field): Handle case where insv rejects memrefs. + + * tm-convex.h (ASM_OUTPUT_ALIGN): Magic to handle the fact + that this is not called when LOG is 0. + +Fri Aug 11 16:39:51 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * emit-rtl.c (get_lowpart): For multi-word, in error check, + test the unit size of the containing mode. + + * cccp.c (macroexpand, dump_all_macros): Return void. + (macroexpand): Cast sprintf arg to char*. + (error, warning, error_with_line): Declare first arg char*. + +Thu Aug 10 21:42:13 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * expr.c (expand_call): + Use force_operand to copy arithmetic to register. + + * dbxout.c (dbxout_symbol): Go back to N_FUN for const variable. + + * integrate.c (expand_inline_function): Use proper machine mode + for a structure value in memory at address passed by caller. + +Wed Aug 9 15:21:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config.gcc: Delete unnecessary variable assignments in case stmt. + (isi68-nfp): New alternative. + + * combine.c (try_combine): Don't substitute for a register + which is being explicitly clobbered. + + * This change was requested for C++. + * varasm.c (decode_reg_name, make_decl_rtl): Arg ASMSPEC now char *. + * toplev.c (rest_of_decl_compilation): Likewise. + * c-decl.c (finish_decl): Change call to rest_of_decl_compilation. + + * tree.h (struct tree_decl): Pack machine_mode into 8 bits. + + * explow.c (memory_address, copy_to_reg): + Use force_operand to copy arithmetic to register. + + * tm-isi68-nfp.h: New file. + * tm-isi68.h: Allow overriding TARGET_DEFAULT, and let that + change CPP_SPEC and LINK_SPEC. + (ASM_FILE_START): No `.globl fltused' if soft-float. + +Tue Aug 8 21:50:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (const_hash): For constructor, mask TREE_TYPE to HASHBITS + bits and take modulo, so we don't get negative numbers. + + * varasm.c (record_constant_1, compare_constant_1): + Record and compare the width of an integer. + + * varasm.c (assemble_function, assemble_variable, get_or_assign_label): + (force_const_mem): Don't call ASM_OUTPUT_ALIGN if boundary is 1. + + * c-decl.c (duplicate_decls): Consider const and volatile as part of + type when checking for match and when installing new type into OLDDECL. + + * expr.c (do_store_flag): Make sure target fits operand predicate. + Also, omit the AND insn when true-value is 1 + and the mode we get is wider than the one we want. + + * genrecog.c (main): Make insn-recog.c include real.h. + +Mon Aug 7 16:58:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * genemit.c (main): Define `operands' as `emit_operands', + not `recog_operands'. + + * reload1.c (emit_reload_insns): Don't copy back a dead output reg. + +Sun Aug 6 13:56:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sdbout.c (plain_type_1, sdbout_one_type): Use the main variant. + (sdbout_type_fields): No need to check TREE_ASM_WRITTEN here, + since sdbout_one_type does that. + + * expr.c (do_store_flag): Ensure the CLOBBER doesn't clobber an input. + + * fold-const.c (fold_convert): Attempt to avoid overflow + when converting real to integer. Use unsigned conversion for + low part; always convert as positive and then change sign; + subtract high part before converting low part. + Also, check for real values out of range for chosen int type; + warn and do not convert. + + * tm-hp9k320.h (CPP_SPEC) [not HPUX_ASM]: Don't define mc68000 here. + (CPP_PREDEFINES): Remove mc68k, add m68k and mc68000. + [HPUX_ASM]: Define CPP_SPEC here as in the other case, + but add __HPUX_ASM__ to each alternative. + + * tm-m68k.h (FUNCTION_EPILOGUE): Call new hook FUNCTION_EXTRA_EPILOGUE. + * tm-altos3068.h (FUNCTION_EXTRA_EPILOGUE): Define it. + + * Makefile: Use $< wherever appropriate. + Also put definitions of customization vars before the comments + saying how to override them. + +Sat Aug 5 14:15:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i386.md (sne): Typo in opcode name. + + * tree.h (struct tree_identifier): Delete redundant/unused error_locus. + +Fri Aug 4 00:04:10 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (const_hash, compare_constant_1, record_constant_1): + Compare types only for record constructors, not for array constructors. + + * dbxout.c (dbxout_parms): When outputing parm from home in local slot, + with address from the RTL, don't do big-endian correction on it. + + * c-typeck.c (build_unary_op): Do default conversion for unary +. + + * cccp.c (rescan): Accept comments between macro and its args. + + * c-decl.c (lang_decode_option): -traditional implies writable strings. + + * cccp.c (trigraph_pcp): Make warning msg more accurate. + + * c-typeck.c (c_expand_asm_operands): Delete the default promotion + which was inserted mysteriously since 1.35. + + * global-alloc.c (global_conflicts): Allocate regs_set only once. + Make it twice as big since clobbers are stored twice. + + * sparc.md (block move patterns): Record and use alignment operand. + * out-sparc.c (output_block_move): Get alignment from there. + (output_size_for_block_move): Greatly simplified. + + * tm-i386v.h (PCC_BITFIELD_TYPE_MATTERS): Define it. + + * stor-layout.c (layout_record): Anonymous bitfields don't affect + overall structure alignment, in PCC_BITFIELD_TYPE_MATTERS case. + + * loop.c (strength_reduce): Prevent hard reg from becoming biv or giv. + + * combine.c (subst): Simplify (eq (neg ...) (const_int 0)). + +Thu Aug 3 13:08:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (fold_rtx): For (op var const) special cases, also check + for constant as first argument. + + * c-decl.c (pushtag): For global_binding_level, make permanent nodes. + + * expr.c (do_store_flag): Put the CLOBBER before the comparison. + + * expr.c (emit_push_insn): Conditionalize recent changes + on no FIRST_PARM_CALLER_OFFSET, so they don't happen on sparc. + + * out-sparc.c (gen_scc_insn): + Don't be confused by CLOBBER emitted by do_store_flag. + Skip past such insns looking for last_insn. + Don't alter last_insn; instead, patch it to a NOTE and emit new insn. + + * varasm.c (const_hash, compare_constant_1, record_constant_1): + For a CONSTRUCTOR, hash/compare/record type as well as elts. + + * cse.c (cse_insn): July 18 change was wrong. + Now, invalidate at the beginning any regs explicitly clobbered + so they will not be substituted for if they appear as inputs. + * sparc.md (movstrsi): Copy addresses to temp regs, then use them. + + * loop.c (record_giv): When comparing life spans for setting + ->forces, use luids consistently, not uids. + + * sparc.md (ashlsi3, ashrsi3, lshrsi3): Truncate constants mod 32. + +Wed Aug 2 17:50:30 1989 Richard Stallman (rms at sugar-bombs) + + * mips.md (patterns to move a subreg): Deleted. + +Sun Jul 30 19:23:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (process_command): Skip `-b' like `-B', in 2nd scan. + + * xm-sunos4.h: Deleted. + * tm-sparc.h, tm-sun3.h: Define LINK_SPEC here instead. + * tm-sun4os3.h: Undef it here. + * tm-sun3os3.h, tm-sun3os3nf.h: New files to undef LINK_SPEC. + * config.gcc: Use those new files where needed. + + * config.gcc: Delete sun3-fpa and sun3-os4-fpa. + * tm-sun3-fpa.h: Deleted. + + * cccp.c (do_include): Mention even non-ex files for -M. + + * out-mips.c (addr_compensate): Handle HImode. + * mips.md (Set HI from subreg of SI rule): + Allow operand in memory. + + * mips.md (cmpqi, cmphi): Patterns deleted. + (cmpsi, cmpsf, cmpdf): Change predicates to register_operand. + + * cexp.y (rule for ?:): Result is unsigned if either operand is. + + * expr.c (emit_push_insn): If PARTIAL > 0, load the partial regs + at the end, in case the rest of the push does a function call. + + * reload1.c (alter_frame_pointer_addresses): + After altering a PLUS, re-fetch CODE before scanning subexps. + + * stmt.c (assign_parms): Don't copy the arg pointer value + if it is also the frame pointer. If we do copy it, + inhibit REG_EQUIV notes for parms copied into pseudo regs + + * integrate.c (copy_for_inline, copy_rtx_and_substitute): + Set up filename and lineno fields of copy of ASM_OPERANDS. + +Sat Jul 29 18:58:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (expand_inline_function): Handle struct-value-addr + passed in memory just like that passed in reg: + in either case, translate the pseudo-reg made in + expand_function_start. + (function_cannot_inline_p): Permit inlining in that case. + But reject it if using pcc-style return convention. + + * stor-layout.c (layout_type): Consider STRICT_ALIGNMENT + for ARRAY_TYPE just as for RECORD_TYPE. + +Wed Jul 26 12:54:59 1989 Richard M. Stallman (rms at mipos3) + + * cse.c (fold_rtx): If WIDTH is zero for binary operator, + look at the modes of the original operands. + + * cse.c (cse_insn): Set prev_insn_explicit_cc0, for (set (cc0) INT). + (predecide_loop_entry): Likewise. + (fold_rtx): Look at it, for (if_then_else (cc0) ...). + + * expr.c (expand_builtin): Pass back return value from + __builtin_saveregs. + + * stmt.c (assign_parms): Allow arg pointer reg not to be fixed. + If it is not, copy it to a pseudo reg and use that later on. + +Tue Jul 25 15:42:04 1989 Richard M. Stallman (rms at mipos3) + + * expr.c (expand_builtin): New builtin __builtin_classify_type. + * tree.h, c-decl.c: Additional support. + + * flow.c (mark_used_regs): Treat arg pointer like stack pointer. + + * expr.c (emit_library_call): + Pass (tree)0 as TYPE arg to FUNCTION_ARG, etc. + +Mon Jul 24 11:18:10 1989 Richard M. Stallman (rms at mipos3) + + * loop.c (regs_match_p): Fix braino. + + * integrate.c (copy_for_inline, copy_rtx_and_substitute): + Make ASM_OPERANDS constraint vector be shared like operand vector. + + * xm-iris.h: New file. + + * Makefile (stage4): New target. + + * gnulib2.c (badd, bsub, bmul, bdiv): If want long value from + arithmetic, widen the operands first. + (__div_internal aka bdiv): Rename to __bdiv. + + * sparc.md (seq combination patterns): Fully initialize cc_status. + + * expr.c (emit_push_insn): Like July 19 change, for BLKmode. + + * stmt.c (expand_function_end): Stack-restore for alloca + is now done after the return_label. + + * loop.c (scan_loop): Set MAYBE_NEVER for conditional jump to loopbeg. + + * integrate.c (copy_rtx_and_substitute): Allow mapping of hard regs. + (expand_inline_function): Always create parm_map. + Handle structure value that way if nec. even if no parms. + Otherwise, find the pseudo used in the function to hold the + structure address, and map it to a new pseudo. + + * expr.c (expand_call): + Use mark_addressable to make FNDECL addressable. + * c-typeck.c (mark_addressable): No longer static. + + * cse.c (cse_insn): Modify last change: don't canon_reg + for hard regs inside clobbers. + + * expr.c (expand_assignment): ALIGN arg to store_field comes from + the structure, not from the value stored. + +Fri Jul 21 16:23:45 1989 Richard M. Stallman (rms at mipos3) + + * stmt.c (warn_if_unused_value): Don't warn for a cast + around a MODIFY_EXPR. + + * tm-hp9k320.h (PCC_STATIC_STRUCT_RETURN): Undefine it. + (CPP_PREDEFINES): Add some. + + * combine.c (simplify_and_const_int): + Simplify (and (ashiftrt (zero_extend FOO) N) M). + + * optabs.c (expand_binop): When widening, + for some operations we need not actually extend. + +Thu Jul 20 16:16:35 1989 Richard M. Stallman (rms at mipos3) + + * Makefile (insn-emit.o): Depend on insn-codes.h. + + * stmt.c (check_for_full_enumeration_handling): + Handle all cases for TYPE_NAME of enum type. + +Wed Jul 19 17:00:39 1989 Richard M. Stallman (rms at mipos3) + + * fold-const.c (fold_convert): Don't fail to force_fit_type. + + * expr.c (emit_push_insn): When pushing only part of scalar on stack, + adjust stack offset not to count the words not pushed. + + * stmt.c (expand_function_end): Always put return structure address + in return register. + + * c-typeck.c (process_init_constructor): Assume 0 for nameless field. + + * recog.c (general_operand, memory_operand): + Check validity of mem address using the mode of the MEM. + + * fixincludes: When calling egrep, use redirect, not -s. + +Tue Jul 18 11:18:55 1989 Richard M. Stallman (rms at mipos3) + + * Makefile (bootstrap*): Pass value of libdir down. + + * cse.c (cse_insn): Do canon_reg on any CLOBBERs and USEs. + + * cse.c (cse_insn): Don't use no_labels_between_p to check + for jump to following label; find following label and compare. + + * combine.c (try_combine): Don't substitute into subreg(x)=y + if modes of x and y are not tieable. + + * out-i386.c (call_top_dead_p): Don't fail to check + the rtx code of the insns themselves. + + * i386.md (tstsf, tstdf): Don't discard TOS if not dead. + + * stupid.c: Don't use regs with PRESERVE_DEATH_INFO_REGNO_P + for pseudos which live across jumps or labels. + (stupid_life_analysis): Update last_jump_suid, last_label_suid. + (stupid_mark_refs): Use those to set reg_crosses_blocks. + (stupid_find_reg): Check that data, passed from stupid_life_analysis. + + * toplev.c (main): Avoid using caddr_t. + + * mips.md (inverted bgeu peephole): Typo in opcode. + +Mon Jul 17 12:29:45 1989 Richard M. Stallman (rms at mipos3) + + * i386.md (mulb patterns): Turned off due to assembler bug. + + * rtl.c (read_name): Use 0, not NULL, for character. + + * alliant.md (movqi): Typos in mov opcodes. + + * tm-sparc.h, tm-spur.h (CONST_DOUBLE_OK_FOR_LETTER_P): + Use CONST_DOUBLE_LOW, etc. + + * stmt.c (expand_function_end): Check value of EXIT_IGNORE_STACK, + not just whether defined. + + * i386.md (seq, etc.): New patterns. + * expr.c (do_store_flags): If result is wrong mode, + ensure rest of bits are cleared. + Before storing low part of TARGET, emit a CLOBBER for it. + + * i386.md (load address): Use an immediate add if possible. + + * i386.md (ashlsi3): Don't generate leal; shift is faster. + + * Now struct_value_rtx is 0 to treat it as a parm. + * expr.c (expand_call): Implement that. + * integrate.c (expand_inline_function): Don't freak out. + * tm-apollo68.h (STRUCT_VALUE): Make it 0. + + * On 386, called function must pop the structure value address. + * tm-i386.h (STRUCT_VALUE): Don't change this. + Address is now pushed but not counted as a parm. + * out-i386.c (function_epilogue): Use ret $4 to pop that address. + * output.h: Declare the current_function_... variables. + * final.c: Include output.h. + + * varasm.c (make_decl_rtl): Insert missing `else', validating reg decl. + +Fri Jul 14 14:12:17 1989 Richard M. Stallman (rms at mipos3) + + * out-sparc.c, out-spur.c (output_move_double): + Fixed typo, addreg0 => addreg1. + + * c-decl.c (lang_decode_option): Handle -fshort-enums. + (finish_enum): In that case, give enum minimum number of bytes. + * toplev.c (main): Default flag_short_enums. + * toplev.c, flags.h (flag_short_enums, flag_signed_char): + Define those flags here, not in c-decl.c and c-tree.h. + + * i386.md (mulqi3, umulqi3): New patterns. + + * c-convert.c (convert_to_integer): Tighter restrictions on + distributing truncation through max, min, and multiplication. + If operands were extended from unsigned, make the operation + unsigned. + + * cccp.c (main): Fix bug where #include <...>, when -I- was used, + failed to search standard dirs and/or searched some dirs + intended only for #include "...". + + * tm-mips.h (FUNCTION_PROLOGUE,FUNCTION_EPILOGUE): + Increment push_loc after store or load, not before. + +Thu Jul 13 11:24:30 1989 Richard M. Stallman (rms at mipos3) + + * emit-rtl.c (add_insn_after): Don't update last_insn + if insn is in a sequence. Instead, update end of sequence. + + * stmt.c (fixup_var_refs): Update end of stacked sequence. + + * stmt.c (expand_function_start): Set result rtl before assign_parms. + + * optabs.c (emit_unop_insn): Set PREV_INSN after preliminaries. + + * stmt.c (warn_if_unused_value): Do CONVERT_EXPR like NOP_EXPR. + + * stmt.c (expand_function_start): Make sure parm_birth_insn + is a NOTE. + + * Makefile (clean): Delete tmp-insn-*. + +Wed Jul 12 14:24:12 1989 Richard M. Stallman (rms at mipos3) + + * i386.md (mulqi3): Restrict operand 2 to `q' reg. + + * reload1.c (choose_reload_regs): Check HARD_REGNO_MODE_OK + for regs to be inherited. + Also check HARD_REGNO_MODE_OK at end for modes of both + reload_in and reload_out as well as reload_mode. + + * Makefile (maketest): Update for config subdir. + +Tue Jul 11 16:29:57 1989 Richard M. Stallman (rms at mipos3) + + * integrate.c (copy_decl_tree): Copy TREE_USED of each LET_STMT. + + * make-cc1.com: Changes by Angel Li. + Define variables CC, CFLAGS, LDFLAGS, LIBS. + Use LIBR library, not LIB. Specify a /INC in CFLAGS. + Use MCR to run the gen* files. Add some comments. + * make-cccp.com: Similar. + * config-gcc.com: New file. + + * stmt.c (assign_parms): Compute parm alignment from passed type. + + * c-typeck.c (actualparameterlist): Instead of truncating + and then promoting for PROMOTE_PROTOTYPES, go straight to int. + + * c-parse.y (setspecs): Save old current_declspecs on a stack. + (decl, component_decl): Restore from that stack. + +Wed Jul 5 15:01:00 1989 Richard Stallman (tiemann at yahi) + + * tm-aix386.h, xm-aix386.h: New files. + + * loop.c (check_dbra_loop): Handle either test or compare + for insn two before loop end; detect and reject anything else. + + * expr.c (expand_call, expand_builtin): If alloca is done, + set current_function_calls_alloca. + * stmt.c (expand_function_end): If so, generate code to save and + restore the stack pointer, if not EXIT_IGNORE_STACK. + + * ns32k.md (movsi): Fixes for moving from fp or sp. + + * tm-mips.h (ASM_OUTPUT_ASCII): Start new .ascii every 256 chars. + +Tue Jul 4 11:01:00 1989 Richard Stallman (tiemann at yahi) + + * reload1.c (choose_reload_targets): Don't depend on + reload_spill_index when cancelling invalid inheritance. + Also, abort if trying to preserve death info + on a spill reg used in operand addressing. + + * fold-const.c (fold): Don't fold "foo"[n] here. + * expr.c (expand_expr): Do it here. + Handle wide strings correctly. + + * i386.md (movsf,movdf): Disallow mem-mem moves. + Enable mem-to-reg moves. + + * c-decl.c (finish_{struct,enum}): Warn if inside parm decls. + (in_parm_level_p, declare_parm_level): Record when inside. + * c-parse.y (parmlist, parmlist_or_identifiers): Call + declare_parm_level. + + * c-decl.c (parmlist_tags_warning): Revise warning message text. + + * tm-hp9k320.h (ASM_SPEC): Pass -V switch to assembler. + + * tm-sun386.h (ASM_START_FILE): Truncate filename to 14 chars. + + * c-typeck.c (decl_constant_value): Use only literal values. + +Sat Jul 1 17:29:54 1989 Richard Stallman (tiemann at yahi) + + * integrate.c (copy_rtx_and_substitute): Don't make nested SUBREGs. + + * stmt.c (expand_function_start): Set new global + current_function_returns_pointer. + + * stmt.c (get_frame_size): Return the size, not the offset. + * integrate.c (expand_inline_function): When setting FP_DELTA, + compensate for this change. + * tm-alliant.h,tm-mips.h,tm-sparc.h,tm-tahoe.h + (FUNCTION_PROLOGUE,FUNCTION_EPILOGUE): Compensate. + + * out-mips.c (function_arg): Return 0 for BLKmode. + + * tm-mips.h (FUNCTION_INCOMING_ARG): Delete; no register windows. + * out-mips.c (function_inarg): Delete; no longer used. + + * mips.md (addsi3): Use register_operand for operands 0,1. + (load address): New pattern, following movsi. + (fix_trunc*): Use trunc insn, not cvt. + (cmpfs + bgt peephole): Operands were backwards in template. + + * gcc.c (main): Record in explicit_link_files which input files go + straight to linker. If linker is not run, complain about them. + (execute): Increment execution_count, to show we were called. + + * gcc.c (validate_all_switches): Check ASM_SPEC, CC1_SPEC, etc., + so we find all switches that could be valid. + + * varasm.c (output_constructor): Position fields according to + DECL_OFFSET; don't try to compute alignment here. + + * tm-sparc.h (PCC_BITFIELD_TYPE_MATTERS): Define this. + + * reload1.c (emit_reload_insns): Fix stupid error in last change. + + * c-decl.c (duplicate_decls): If redeclaring builtin, give error is + type mismatched; otherwise warn only if -W. + + * jump.c (jump_back_p): Verify that PREV is not null. + +Mon Jun 26 13:50:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (choose_reload_regs): If number of reloads needing + spill regs exceeds n_spills, don't inherit any reloads. + + * sdbout.c (sdbout_record_type_name): Dumb error in last change. + + * reload1.c (emit_reload_insns): Extend last change: don't use + equiv reg if reg is in use at same stage of insn, either. + +Sun Jun 25 00:00:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (emit_reload_insns): Don't use an equivalent register + to reload from, if that register was used for reloading + earlier in this insn. + + * sdbout.c (sdbout_record_type_name): Handle a TYPE_DECL as the + type name. Get rid of TYPE_TAG_NAME as separate macro. + + * optabs.c (emit_cmp_insn): Args to memcmp are addresses, not blocks. + + * reload1.c (choose_reload_regs): Typo, clearing reload_override_in. + + * tm-i386.h: Add register classes SIREG and DIREG. + (enum reg_class, REG_CLASS_NAMES): Define class names. + (REGNO_REG_CLASS, REG_CLASS_CONTENTS): Define their contents. + (REG_CLASS_FROM_LETTER): Define letters `S' and `D'. + +Sat Jun 24 00:17:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (keep_next_level): New function. + (struct binding): New slot `keep' says make a LET_STMT for this level. + (pushlevel, poplevel): Implement that. + * c-parse.y (stmt exprs): Call keep_next_level. + + * sdbout.c (plain_type_1): Handle REFERENCE_TYPE, METHOD_TYPE. + Correct for size less than 0. + (plain_type): Correct for size less than 0. + + * global-alloc.c (mark_reg_set): For CLOBBERs, call mark_reg_clobber. + + * reload1.c (order_regs_for_reload): Among regs explicitly used, + prefer those used less often. + + * reload1.c (choose_reload_regs): If we find alternate place + to reload from, verify it after all reloads assigned. + New variable reload_override_in used for this. + + * combine.c (record_dead_and_set_regs): Look inside SIGN_EXTEND and + STRICT_LOW_PART for place being set. + (subst): When using reg_last_set to find what a register contains, + verify the entire register was set. + + * toplev.c (rest_of_decl_compilation): Report invalid register name. + +Fri Jun 23 13:19:41 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-hp9k3bsd.h: New file. + * config.gcc: New target hp9k320-bsd. + + * gcc.c (record_temp_file): Don't add a name twice to one queue. + + * stmt.c (expand_expr_stmt): Call warn_if_unused_value. + (warn_if_unused_value): Code extracted from expand_expr_stmt. + Recurse to handle COMPOUND_EXPR. Don't warn about COND_EXPR. + + * tm-encore.h (DBX_REGISTER_NUMBER): Override tm-ns32k.h; + return operand unchanged. + + * reload1.c (emit_reload_insns): Don't use recog_memoized + on an asm. + + * jump.c (delete_insn): Update last_insn. + * emit-rtl.c (set_last_insn): New function. + + * reload1.c (reload): Put a note at end of insn chain. + + * gcc.c: Put cpp output of .S file into a .s file. + +Thu Jun 22 22:14:35 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (expand_binop, expand_unop): Emit queue before library call. + It is done within emit_library_call, and cse screws up if there is a + queued insn in the middle of a cse-able sequence. + +Wed Jun 21 11:57:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-mips.h (CPP_PREDEFINES): Define -Dunix. + + * reload.c (combine_reloads): Combined reload needed for entire insn. + + * c-parse.y (yylex): Braino checking for out-of-range escape seq. + + * stor-layout.c (layout_union): Handle PCC_BITFIELD_TYPE_MATTERS. + (layout_struct): Don't let a bitfield cross the storage unit + of its type, if PCC_BITFIELD_TYPE_MATTERS. + +Tue Jun 20 00:03:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (get_or_assign_label): Let CONSTANT_ALIGNMENT specify + alignment of the constant. + CONSTANT_ALIGNMENT is a new optional macro. + + * varasm.c (force_const_mem, get_or_assign_label): + Make buffer bigger. + + * toplev.c (print_target_switch_defaults): New fn called for -version. + + * toplev.c (compile_file): Detect error closing output file. + + * stor-layout.c (fixup_unsigned_type): Don't shift by 32. + + * stmt.c (emit_case_nodes): Pass UNSIGNEDP along to emit_cmp_insn. + + * stmt.c (expand_end_case): If index is narrow and cannot be + directly compared, widen it just once. + + * c-parse.y (yylex): Support multi-character constants. + Thorough rewrite of char constant parsing. + + * c-decl.c (pushdecl): Replace local extern function decl with + previous global decl if latter is inline, or builtin, or has + more arg type info. + + * hard-params.c (xmalloc): Define it, for alloca.c. + + * tm-hp9k320.h (STANDARD_STARTFILE_PREFIX): Override -D in Makefile. + + * expmed.c (store_fixed_bit_field): Avoid shift by 32. + + * stmt.c (expand_function_start): Emit a NOTE_INSN_FUNCTION_BEG. + * final.c (final_scan_insn): For SDB output, do the + sdbout_begin_function at that note. + + * reload1.c (choose_reload_regs): If a reload reg inherits + from a previous reload, verify safety after all reloads are assigned. + + * c-decl.c (build_enumerator): Remove no-op casts. + + * reload.c (find_reloads): If an earlyclobber operand matches + an input operand it is constrained to match, that's not a problem. + If an earlyclobber operand loses due to earlyclobber, its matching + input operand also loses. + + * reload1.c (choose_reload_regs): Don't use result of find_equiv_reg + if that reg is used for reloading in an earlier part of the insn. + + * cse.c (fold_rtx): If WIDTH is 0, don't try sign-extending ARG0, ARG1. + + * Makefile (hard-params*): Use $(OLDCC). + + * c-typeck.c (c_alignof): No warning for -pedantic. + + * c-parse.y (readescape): Don't have both error and warning + on one hex escape. + + * c-parse.y (yylex): Treat vertical tab as white space. + (skip_white_space): Likewise. + + * c-parse.y (datadef): If pedantic, warn for stray semicolon. + + * expr.c (expand_increment): Pass accurate unsignedp arg + to expand_binary_op. + +Mon Jun 19 13:36:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config.gcc (news, news-gas): Use xm-m68k.h. + + * final.c (output_asm_label, output_addr_const): Make buf bigger. + + * cexp.y (main): Handle EOF on input. + (lookup, warning): Provide as a dummy. + (is_idchar, is_idstart): Declare as unsigned char. + + * cexp.y (parse_escape): Use TARGET_NEWLINE, etc., as values. + Support hex escapes. Warn if octal or hex escape doesn't fit in char. + + * cexp.y (yylex): Sign-extend char constants if appropriate. + + * genemit.c: Make insn-emit.c include insn-flags.h. + + * gcc.c: Move record_temp_file past page which declares vflag. + + * integrate.c (expand_inline_function): If copying an insn with + a REG_EQUIV note, make a similar note. + + * Allow reload regs to be reused for parts of an insn. + * reload.c (find_reloads): Classify each reload for which part + of the insn it is needed in. + (find_reloads_address, etc.): Pass down the overall operand + that this is part of, to record it on address reloads. + (push_reload): Record that for each reload. + * reload1.c (reload): Compute maximum needs of any part of the insn. + (choose_reload_regs): Part of old choose_reload_targets. + Hairier criteria for inheriting reloads and for which ones are + available for the next insn to inherit. + (emit_reload_insns): The rest of old choose_reload_targets. + Emit reload insns in proper order according to where they are needed. + * Record `reload_reg_in_use' separately for each part of the insn. + (mark_reload_reg_in_use): New function. + (reload_reg_free_p, reload_reg_free_before_p): New functions. + (reload_reg_reaches_end_p): New function. + + * expr.c (expand_expr): Emit queue in X+=(Y?Z:A) optimization. + + * rtlanal.c (rtx_equal_p): Check vectors have same length. + +Sun Jun 18 12:16:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (expand_expr_stmt): Maybe warn if top-level operator + makes an unused result. + + * gcc.c (delete_temp_files, delete_failure_queue): + If -v, report failures in unlink. + + * Makefile (includes): New target to run fixincludes. + (install): Swap arms of if-statement. + +Sat Jun 17 12:41:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_union): Arg to error_with_decl was missing. + + * ns32k.md (movsf): Use CONST_DOUBLE_LOW to extract from CONST_DOUBLE. + + * loop.c (consec_sets_giv): Change type of force, force2. + + * combine.c (dump*): Declare arg as FILE*. + + * Makefile (clean): Delete hard-params. + + * flow.c (life_analysis): Use a special obstack for the temporary + regsets. + + * m68k.md (clr pattern): On 68000, use moveq to clear data reg. + + * gvarargs.h: File varargs.h renamed. + The old name conflicted with , now that -I. is used. + * tree.c, expr.c, emit-rtl.c: Change #include commands. + * Makefile (install): Install gvarargs.h under name varargs.h. + * gcc.c: Include gvarargs.h, not system's varargs.h. + + * Makefile: Use -I$(srcdir) before -I$(srcdir)/config. + * config/tm.h: Deleted; didn't work if config was a symlink. + + * cse.c (cse_insn): Record location of inner_dest + so it can be replaced properly if a new MEM rtx is made. + +Fri Jun 16 14:17:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * make-cc1.com: Compile and link rtlanal.c. + + * c-typeck.c (build_array_ref): Call fold on the array ref. + * fold-const.c (fold): Simplify array ref of string constant. + + * stmt.c (expand_asm_operands): Fix error message. + + * Makefile (gnulib2): Remove old members before compiling new. + Fix stupid errors. + * gnulib2.c (__cmpdi2, __ucmpdi2): Typos in names of interface unions. + + * genconfig.c (main): Don't write MAX_CLOBBERS_PER_INSN; obsolete. + Add 3 to MAX_RECOG_OPERANDS. + + * cse.c (fold_cc0): Extra arg specifies machine mode. + Callers changed. + (cse_insn): Record original mode of each src for this purpose. + +Thu Jun 15 12:35:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (_cmpdi2, _ucmpdi2): Moved here from gnulib.c. + Use long long for argument type. + + * rtlanal.c (may_trap_p): Moved here from loop.c. + Return 1 for division by explicit zero. + + * reload1.c (eliminate_frame_pointer, alter_frame_pointer_addresses): + Rerecognize insns which are changed by this. + + * i386.md (call_value): Don't return prematurely. + + * alliant.md (movqi): Handle moving Aregs to mem and vice versa. + (bftst -> btst): Restrict to bitpos less than 8 + so operand may be non-offsettable. + (nop): New pattern. + (return): Was disabled; now deleted. + * tm-alliant.h (PRINT_OPERAND_PUNCT_VALID_P): Define it. + * out-alliant.c (output_btst): Same change as in out-m68k.c + + * alliant.md, out-alliant.c: Offsetable -> offsettable. + + * c-parse.y (rule for stmt_exprs): Make the LET_STMT volatile. + + * c-decl.c (duplicate_decls): Don't save inline function data + from previous definition if a new *definition* is seen. + + * integrate.c (access_parm_map): Handle subregs and constants. + + * stmt.c (expand_return): Don't crash if DECL_RTL (DECL_RESULT()) is 0. + + * tm-tahoe.h (LONGJMP_RESTORE_FROM_STACK): Define it. + + * tm-mips.h (CONSTANT_P): Deleted; duplicates rtl.h. + +Fri Jun 9 01:39:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (float.h): Avoid using $(MAKE). + + * Don't cram two things into STMT_BODY of a LET_STMT. + * tree.h (struct bind_stmt): New field, subblocks. + (STMT_SUBBLOCKS): New macro to access it. + * print-tree.c (walk): Print new field. + * tree.c (build_let_stmt): Store the old BODY arg into subblocks field. + * c-parse.y (stmt expr rule): Put rtl expr alone into body field. + * dbxout.c (dbxout_block): Recurse on subblocks, not body. + * sdbout.c, symout.c: Likewise. + * integrate.c (copy_decl_tree): Likewise. + * stmt.c (setjmp_protect, uninitialized_vars_warning): Likewise. + * expr.c (expand_expr): For LET_STMT, simply use its body. + + * machmode.def: Add sixth arg to each entry. + * tree.h, rtl.h, rtl.c: Add arg to DEF_MACHMODE. + * rtl.h (GET_WIDER_MODE): New macro; table in rtl.c. + * expr.c (expand_expr): Use that for widening multiply. + + * stmt.c (fixup_var_refs_1): When converting MEM to QImode for + bit field, adjust the address if possible to make bitpos + less than 8. + * m68k.md (bftst -> btst): Restrict to bitpos less than 8 + so operand may be non-offsettable. + + * cccp.c (do_line): Accept and pass on 3rd arg for enter or leave file. + + * out-m68k.c (output_btst): Handle COUNT bigger than size of unit. + + * cccp.c (CHECK_DEPTH): Macro to detect instack overflow. + (finclude, macroexpand, expand_to_temp_buffer): Use that. + + * cccp.c (rescan): Don't check for disabled macro if traditional. + (macroexpand): Don't disable macro if traditional. + + * sdbout.c (sdbout_one_type): Take out last change; assembler barfs. + + * c-parse.y (maybe_attribute): Eliminate #-syntaxes. + Make ATTRIBUTE the name for __attribute. + + * c-parse.gperf: Add __attribute{,__} and __signed{,__}. + * c-parse.y: Install results of that change. + + * Fix bug in sizeof ({...}). + * c-decl.c (poplevel): Set TREE_USED. Return the LET_STMT. + * c-parse.y (stmt-expr rule): Put the RTL_EXPR in the LET_STMT, + clear its TREE_USED, and use it as the result. + * expr.c (expand_expr): Allow LET_STMT as an expr. + Set its TREE_USED and expand the TREE_VALUE of its body. + * dbxout.c (dbxout_block): Ignore LET_STMT if TREE_USED not set. + * sdbout.c, symout.c: Likewise. + +Thu Jun 8 00:06:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (yylex): Extend ERANGE-inhibitor for 0.0 + to 0.0e0 as well. + + * flow.c (life_analysis): Prevent allocation of regs live at setjmp + on certain machines. Controlled by LONGJMP_RESTORE_FROM_STACK. + Sets reg_live_length to -1. + * local-alloc.c (block_alloc): Be prepared for that. + * tm-vax.h (LONGJMP_RESTORE_FROM_STACK): Define it. + + * gnulib2.c (all interfaces): Declare args and values as long long, + and split them using unions. + + * loop.c (check_dbra_loop): Don't reverse loop if there are two + refs to varying addresses. Consider foo[i] = foo[i-1]. + (count_nonfixed_refs): Subroutine to count them. + + * cexp.y: Distinguish signed and unsigned. + An integer value is now represented by a struct. + All rules for arithmetic changed. + (yylex): Adapt to change in yylval data type. + + * limits.h (LONG_MIN): Make sure it's a signed long. + + * sdbout.c (sdbout_one_type): Output types of fields first, + if they are structs. Don't go through pointers. + (sdbout_field_types): Subroutine for that + +Wed Jun 7 13:00:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Switch to /usr/include before doing vuid_event.h. + Use $2 as output directory for sed. + + * tm-i386.h (FUNCTION_PROFILER): Put counter address in %edx. + * tm-i386v.h (LIB_SPEC): Use -L/usr/lib/libp if profiling. + + * expr.c (expand_increment): Typo testing for BImode component. + + * convex changes from csmith: + * tm-convex.h: use EXTRA_SECTIONS to do .bss. + out-convex.c: set_section, align_section are now unused. + * convex.md: add pattern to pick an A-reg destination for sums + whose source involves a dedicated A reg (frame or arg pointer) + * convex.md: immediate and, or, xor instructions store a 32-bit + result. Fix instructions that assumed it was 64. + + * mips.md (probe): New pattern to create stack space. + + * Makefile (float.h): Ignore errors from hard-params. + Specify ./ to run it. + +Tue Jun 6 15:45:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * out-tahoe.c: Rename `offsetable' to `offsettable'. + + * tahoe.md (nop): New pattern. + + * i386.md (umul...): Constrain operand 1 as `0', not `a'. + `a' sometimes wanted two a-regs for operands 0 and 1. + + * cccp.c: Forward-declare some structs. + + * c-decl.c: Rearrange fcn fwd decls and struct decls. + + * expr.c: Move some fcn fwd decls after structs their args use. + * genpeep.c, genextract.c: Likewise. + + * loop.c: Forward-declare some structs. + + * stmt.c: Move decls of structs before those of static functions. + + * loop.c (strength_reduce): Delete extra arg to check_eliminate_biv. + + * integrate.c (expand_inline_function): Supply missing arg + to convert_to_mode. + + * gcc.c (handle_braces): Supply missing arg to do_spec_1. + + * explow.c (lookup_static_chain): Accept a context arg. + + * expmed.c (store_split_bit_field): Pass ALIGN arg + to extract_fixed_bit_field. + + * expr.c (expand_assignment): Convert TYPE_ALIGN to bytes. + (store_constructor, expand_expr): Likewise. + + * tm-m68k.h: NO_ADDSUB_Q conditionals turn off all addq, subq insns. + (Fully supported only with MOTOROLA and HPUX_ASM flags.) + + * jump.c (do_cross_jump): Don't die if LABEL is 0. + + * tm-mips.h (PRINT_OPERAND_PUNCT_VALID_P): New macro. + * tm-iris.h: New file. Unsplit lines accidentally split. + +Mon Jun 5 15:39:30 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (output_inline_function): Call init_function_start, + not expand_function_start. + * emit-rtl.c (restore_reg_data): No need to init reg_rtx_no. + + * stmt.c (init_function_start): Set current_function_returns_struct. + + * rtlanal.c (reg_set_between_p): New fn analogous to reg_used_between_p + * loop.c (strength_reduce): Reject biv initial value which is altered + subsequently before actual loop start. + + * rtlanal.c: New file split out from rtl.c. + Has things not used in the gen files. + + * loop.c (strength_reduce): Reject biv initial value in a hard reg + clobbered by an intervening function call. + + * tree.c (get_identifier): New flag needed to enable id-clash warnings. + (start_identifier_warnings): Set that flag. + * c-decl.c (init_decl_processing): Call that, after making built-ins. + +Sat Jun 3 14:41:34 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * final.c (final_scan_insn): No basic block profiling at jump tables. + + * stmt.c (expand_decl): Probe the stack to make pages exist. + * expr.c (expand_builtin): Likewise, for alloca. + + * move-if-change: Specify /bin/sh. + + * tm-ns32k.h (INDIRECTABLE_2_ADDRESS_P): Don't accept PLUS + with constant operands but not inside CONST. + + * integrate.c (output_inline_function, save_for_inline): + Save stack_slot_list, and restore it for actual output. + * emit-rtl.c (gen_inline_header_rtx): New arg for this. + + * emit-rtl.c (restore_reg_data): Initialize reg_rtx_no. + (restore_reg_data_1): Handle reg_rtx_no jumping past + reg_pointer_flag_length. + + * reload1.c (alter_reg): Do nothing if regno_reg_rtx has 0. + + * integrate.c (copy_rtx_and_substitute): Typos for stack parm + addresses in PLUS case. + + * genoutput.c (gen_insn, gen_peephole): Make output_n fns static. + (output_prologue): Use new macro DEFAULT_MACHINE_INFO if defined. + + * tree.h (enum machine_mode): Define MAX_MACHINE_MODE as in rtl.h. + +Fri Jun 2 15:40:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (do_include): A file included via a system header file + counts as a system header file for -M. + + * gnulib2.c: Support boolean ops and shifts. + + * loop.c (emit_iv_inc): Use emit_iv_init_code. + + * rtl.h (CONST0_RTX): Don't try to cast abort. + + * tm-news.h (PRINT_OPERAND_ADDRESS): Fix typo `reg_name'. + Delete two garbage lines. + + * loop.c (eliminate_biv): Use emit_iv_init_code to compute comparison + value. If value is constant, recognize the insn, and if that fails, + put the value in a register. + +Thu Jun 1 16:56:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * print-tree.c (dump): Don't die if rtx components are null. + + * expmed.c (expand_mult_add): New fn to do A * X + B. + (make_tree): New subroutine. + * loop.c (emit_iv_init_code): Use that. Much simpler now. + +Tue May 30 17:20:40 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fold-const.c (fold): Use TREE_SET_CODE to store in tree codes. + + * tree.h (struct tree_common): Make `code' an unsigned int. + (TREE_CODE, TREE_SET_CODE): Put in casts. + + * optabs.c (emit_cmp_insn): Supply all the args in recursive calls. + + * toplev.c (report_error_function): Fix typo; METHOD_TYPE missing. + + * fixincludes: Add code to make internal non-directory links. + +Mon May 29 21:36:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (find_exec_file): Try both with and without machine_suffix. + (find_file): Use machine_suffix here too. + +Sat May 27 00:02:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (decompose): OFFSET wasn't initialized. + + * cse.c (cse_main): Assign monotonic cuids. + (make_regs_eqv, CHEAPER): Use cuids, not uids. + (cse_end_of_basic_block): Return a cuid, not a uid. + + * expr.c (expand_builtin): For BUILTIN_SAVEREGS, range of regs + moved included one extra previous insn. + + * emit-rtl.c (emit_line_note): Don't check -g here. + (emit_note): For line number when no -g, increment cur_insn_uid anyway. + * stmt.c (expand_start_case): Always output a NOTE_INSN_DELETED. + + * loop.c (loop_optimize): Don't count line-number NOTEs for luids. + Prevents -g from affecting optimization decisions. + +Fri May 26 17:31:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * local-alloc.c (block_alloc): Don't count notes in insn_number. + Prevents -g from affecting order of allocation. + +Thu May 25 14:12:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * local-alloc.c (block_alloc): Clear full length of regs_live_at. + + * ns32k.md (cmpsi): Make this the first cmp pattern. + + * jump.c (do_cross_jump): Skip NOTEs while checking for existing label. + + * cse.c (cse_insn): When no-oping a jump, decrement use count of label. + (cse_basic_block): If label use count is 0, go past it. + + * integrate.c (access_parm_map): New fn, broken out of + copy_rtx_and_substitute, handles case of mem ref to stack arg. + (copy_rtx_and_substitute): Call it. + Also use it for address of a stack arg. + + * gen*.c (fatal): Declare 1st arg as string. + +Wed May 24 00:13:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (init_optabs): Handle movdi and movdf insns. + + * final.c (end_final): Realign locn ctr after outputting string. + + * tm-sparc.h (LINK_SPEC): Link bb_link.o before standard lib. + + * tm-sun386i.h (LINK_SPEC): Accept and ignore -sun386. + + * gcc.c (find_exec_file): Use machine_suffix. + (process_command): Set that for -b option. + + * integrate.c (function_cannot_inline_p): No size limit + for functions declared inline. + + * loop.c (skip_consec_insns): New fn, skip several insns or libcalls. + (force_movables): New fn, part of scan_loop broken out. + (ignore_some_movables): New fn, ignore a movable whose insn + is within another movable's libcall. + (scan_loop): Call those three. + Don't handle m->consec for zero-extend movables, since always 0. + +Tue May 23 12:58:24 1989 Joe Weening (weening at gang-of-four.stanford.edu) + + * config/alliant.md: + Removed operand classes 'x', 'y', 'G', 'H'. + Added "%." to many opcodes to simplify comparison with m68k.md. + Changed TARGET_68881 to TARGET_CE. + Changed floating-point insns to better describe the Alliant CE. + Most args to floating-point insns are now nonimmediate_operand. + Removed special insns for pushing doublewords onto stack. + Added non-CE versions of movsf and movdf to avoid using FP + registers in this case. + (float*i*f2): Don't allow immediate ops. + (sne): Fix typo, fsne => fsneq. + (call, call_value): Changed to always pop args from stack + upon return; this gives better code than before and conforms + to Alliant calling standard. + Incorporated some recent changes to m68k.md. + + * config/out-alliant.c: + (regno_reg_class): Removed FPA reg classes. + (output_move_const_double): Function not needed, removed. + + * config/tm-alliant.h: + Removed FPA registers and reg classes. + Target flags: changed TARGET_68881 to TARGET_CE, removed + TARGET_RTD, TARGET_REGPARM, TARGET_FPA. + Removed TARGET_CE test in several places since we need to + use FP regs even for non-CE programs. + (TARGET_VERSION, CPP_SPEC): Define for Alliant. + (CONDITIONAL_REGISTER_USAGE): Removed, not needed. + (FRAME_POINTER_REQUIRED): Defined. + (RETURN_POPS_ARGS): Defined. + (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): + Use fp0 to return floating-point values. + (FUNCTION_ARG): Remove TARGET_REGPARM code. + (FUNCTION_ARG_PARTIAL_NREGS): Always 0. + (FUNCTION_PROFILER): Define for Alliant. + (FUNCTION_EPILOGUE): Remove use of rtd instruction. + Renamed CC_IN_68881 to CC_IN_FP. + (NOTICE_UPDATE_CC): Incorporate changes that were made + in tm-m68k.h. + + * config/xm-alliant.h (LINK_SPEC): Pass -X to linker. + +Tue May 23 12:58:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sdbout.c: Don't include c-tree.h. + + * tree.c (build_index_type): Use sizetype for min and max values. + Convert maxval rather than clobbering it. + + * tm-hp9k320.h: Finish unterminated comment. + + * sdbout.c (sdbout_parms): Use gen_fake_label for anonymous parm. + +Sun May 21 12:58:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (aggregate_value_p): New fn says whether expression is a type + that functions cannot return as a scalar. + (assign_parms, expand_function_start): Use that. + * expr.c (expand_call): Likewise. + + * gcc.c (delete_failure_queue): New subroutine. + (delete_temp_files): No longer delete the failure queue. + (main): Delete failure queue after each failing compilation. + +Sat May 20 13:16:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (force_const_mem): New optional macro SELECT_RTX_SECTION. + + * mips.md: Change %u0 to %:. + (movsi): Add constraint alternative accepting address arg. + + * fold-const.c (mul_double): Special case for 2nd arg 2, 4, 8. + (combine): Special case shortcuts for plus, minus, mult, div. + + * stmt.c (expand_function_start): Simplify hairy statement for 3B1. + * expr.c (expand_call): Likewise. + + * math-68881.h: New file. + + * m68k.md (movqi): Handle moving aregs to mem and vice versa. + + * dbxout.c (dbxout_type): Don't test use_gdb_dbx_extensions + in cases that occur in C. + + * stmt.c (expand_function_{start,end}): Make DECL_RESULT's rtl 0 + when function returns no value. + + * tree.c (build_decl): Initialize DECL_PRINT_NAME, DECL_ASSEMBLER_NAME. + + * c-decl.c (store_parm_decls): Call init_function_start. + +Thu May 18 00:41:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (expand_null_return_1): New arg USE_GOTO says jump to + return_label even if could otherwise use a return insn. + Make a return_label if we need one and don't have one already. + If have parm cleanups, always jump to cleanup_label. + (expand_null_return): Pass 1 for USE_GOTO if cleanups pending. + (expand_return): Set LAST_INSN if have local cleanups or parm cleanups. + Use that if jumping to tail-recursion label. + Optimization for returning a comparison is safe for local cleanups + but don't do it if there are parm cleanups. + Calling expand_null_return_1, pass 1 for USE_GOTO if local cleanups. + (this_contour_has_cleanups_p): New function. + + * stmt.c (init_function_start): New function, beginning of + expand_function_start broken out. + Use DECL_PRINT_NAME to get function's name. + (expand_function_start): Now two args, function and PARMS_HAVE_CLEANUPS + Compute RETURN_LABEL sooner; make one if parm cleanups. + If parms have cleanups, put scalar return value in pseudo-reg. + Don't mark that pseudo with REG_FUNCTION_VALUE_P. + (expand_function_end): Simplify decisions about output of return_label + and return insn. + If DECL_RESULT is pseudo-reg, copy it to real return reg. + + * stmt.c (expand_function_end): Handle ordinary struct values + like pcc, but only if unoptimized. + (expand_function_start): Make a return_label for ordinary struct value. + + * stor-layout.c (layout_type): Handle METHOD_TYPE like FUNCTION_TYPE. + (layout_decl): Allow TYPE_DECL. + + * stor-layout.c (layout_basetypes): Code for basetypes broken + out of layout_record. Sets the type size tentatively. + (layout_record): Start with that tentative size. + Also, don't do anything with CONST_DECL members. + + * stor-layout.c (layout_union): Simpler error report for static memb. + + * reload1.c (eliminate_frame_pointer): Reduce PUSH_ROUNDING + conditional to apply only to push instructions. + + * expr.c (expand_call): Fix stupid errors handling MAX_PARM_BOUNDARY. + * stmt.c (assign_parms): Likewise. + + * toplev.c (announce_function, report_error_function): + (error_with_decl, warning_with_decl): Use DECL_PRINT_NAME. + + * toplev.c (compile_file): Subtract integration_time from parse_time. + + * toplev.c (compile_file): Don't output read-only static variables + at end of compilation if address was not used. + + * toplev.c (rest_of_compilation): Handle flag_syntax_only. + + * toplev.c (main): Handle -g0 and -G0 options. + For -g and -G, set use_gdb_dbx_extensions. + + * toplev.c (main): Set `progname'. + (pfatal_with_name, fatal_io_error, {error,warning}_with_file_and_line): + (sorry): Print value of `progname', not "cc1". + + * tree.def: Delete FRIEND_DECL. Add PUSH_EXPR and POP_EXPR. + + * tree.c (simple_cst_equal): Handle INDIRECT_REF. + + * tree.c (lvalue_p): Handle METHOD_TYPE. Handle NEW_EXPR. + + * tree.c (copy_list): New function. + + * tree.h (struct tree_decl): New fields print_name and assembler_name. + (DECL_PRINT_NAME, DECL_ASSEMBLER_NAME): New accessors. + + * c-decl.c (LONG_DOUBLE_TYPE_SIZE): New compilation parameter. + +Wed May 17 22:07:17 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) + + * dbranch.c (emit_delay_sequence): Reset insn code to -1 when + turning insn into a sequence so that it won't think that it matches + something in the md file. + + * dbranch.c (insn_eligible_p): Call refers_to_regno_p with a + non-zero range. + + * dbranch.c (pnote): Modified to make sure instruction clobbered + register is a set, rather than, say, a clobber. + +Wed May 17 14:01:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sdbout.c (sdbout_parms): Handle parm with no name. + + * loop.c (combine_movables): Test for overlap of zero-extend regs + was screwed up. + + * c-typeck.c (c_sizeof{,_nowarn}): Convert from bytes to chars, + since c defines sizeof (char) as 1. + (pointer_int_sum, pointer_diff): Use c_sizeof{,_nowarn}. + +Tue May 16 16:27:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (choose_reload_targets): Don't reuse regs + mentioned in reload_reg_rtx. + + * tm-tahoe.h, tahoe.md, out-tahoe.c, xm-tahoe.h: New files. + +Mon May 15 16:25:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Exit with explicit status 0 at end. + cd to /usr/include before cd to subtree root in case of relative link. + Create dir $LIB earlier. + When checking for a link, treat .. like an absolute target. + + * symout.c (symout_block_symbols): Give every local decl a typespec. + * cexp.y (parse_number): + * flow.c (life_analysis, dump_flow_info): + + * loop.c (consec_sets_invariant_p): Logic error accepted consec sets + of which only one was invariant. + + * expr.c (expand_expr): Use no subtargets inside loops. + * stmt.c (inside_loop): New function. + +Sun May 14 00:11:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h: Declare long long types. + + * c-parse.y (combine_strings): Make string contents saveable. + + * tree.c (savealloc): New function. + + * m68k.md (movdi): % missing in fmove%.d. + + * c-parse.y (yylex): Detect overflow past 64-bits. + Detect specially numbers not fitting in signed long long. + +Sat May 13 13:16:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (alter_frame_pointer_addresses): Preserve volatility. + + * varasm.c (output_constructor): Die if BITS_PER_UNIT is too big + for this function to work. + + * genpeep.c (match_rtx): For match_operator, match the operands, too. + + * varasm.c (output_constant): Use ASM_OUTPUT_DOUBLE_INT for DImode. + + * stor-layout.c (make_signed_type, make_unsigned_type): + (fixup_unsigned_type): Use HOST_BITS_PER_INT. + + * stor-layout.c (layout_type): Use TFmode if appro. + + * optabs.c (emit_cmp_insn): Use mode sizes to check cmpstrqi, cmpstrhi. + + * c-typeck.c (get_floating_type): Compare MODE against modes of types. + (signed_type, unsigned_type, signed_or_unsigned_type, type_for_size): + Handle long long types. + (digest_init): Don't assume width of `char' is BITS_PER_UNIT. + + * c-parse.y (yylex): For truncating chars, use width of `char' type. + Allow `ll' in int constants and make long long. + Also make long long if constant won't fit in an int. + + * c-decl.c (SHORT_TYPE_SIZE): Round up when dividing. + +Fri May 12 22:36:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * real.h: Allow multiple inclusion. + + * tm-sun386i.h (DBX_REGISTER_NUMBER): Bizarre renumbering. + +Thu May 11 00:36:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Fix non-ansi declaration of sprintf in X11/Xmu.h + + * c-parse.y (stmt from expr): Do default conversion if useful + for sake of ({...}). + + * sparc.md (andcc recognizer): Operand missing in subreg. + +Wed May 10 17:20:38 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * rtl.c (read_name): Error if name is missing. + (dump_and_abort): Don't print char args if -1. + + * i386.md (umulqihi3): Operand numbers were missing. + + * reload1.c (choose_reload_targets): Allow spill reg in find_equiv_reg + if it's free and correct class. + + * cse.c (canon_hash): Handle empty strings. + + * cccp.c (macroexpand): Newline newline treated like real white space + when stringifying. + + * Rename *offsetable* to *offsettable*. + +Tue May 9 22:54:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (finish_type): Layout any variants of the type. + +Tue May 9 12:30:28 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) + + * final.c (final_scan_insn, final): Added an argument to + final_scan_insn to disallow peephole processing (to turn it off + during delayed branch scheduling). + + * final.c (final_scan_insn): Made insn not matching any MD rtl a + criteria for delayed branch case. Moved delayed branch case to just + before real insn recognition to reduce the number of insns on which + recog_memoized is called. + +Mon May 8 15:02:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes (LIB): Allow overriding. + + * cccp.c: Don't search /usr/include/CC by default. + +Mon May 8 13:09:21 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) + + * print-tree.c (dump): Fixed typo; IDENTIFIER ==> IDENTIFIER_NODE. + +Sun May 7 12:44:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * print-tree.c (dump): TYPE_NAME may be IDENTIFIER or TYPE_DECL. + +Sat May 6 00:13:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.def: Define EXACT_DIV_EXPR, for when remainder known as 0. + * fold-const.c (combine, fold, div_and_round_double): Handle new code. + * expr.c (expand_expr): Likewise. + * c-typeck.c (pointer_diff): Use EXACT_DIV_EXPR. + + * integrate.c (expand_inline_function): Use size of passed type + for allocating stack slot with that type. + + * c-parse.y (maybe_attribute, attribute*): New syntax for Apollos. + These tokens currently not generated. + +Fri May 5 18:43:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * toplev.c [USG]: Undefine FLOAT for sake of sys/param.h on hpux. + + * optabs.c (expand_binop): If backtracking, don't delete insns made + for -fforce-mem. + +Thu May 4 01:57:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (find_reloads): Don't compare an earlyclobber operand + with itself. + + * reload.c (immune_p): Constants and stack slots don't overlap. + + * Put no-ops in front of loops and labels, + to prevent confusion in the debugger. + * c-parse.y (loops and labels): Call emit_nop. + * stmt.c (emit_nop): New function--sometimes emit a no-op. + * *.md (nop): New insn. + + * expr.c (expand_call): Typo in arg to FIRST_PARM_CALLER_OFFSET. + +Wed May 3 01:34:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (scan_loop): Scanning around end of loop + should not set maybe_never. + + * Rename SELECT_VARIABLE_SECTION to SELECT_SECTION. + * varasm.c (get_or_assign_label): Use SELECT_SECTION if defined. + * varasm.c: Use EXTRA_SECTION_FUNCTIONS if defined (new macro). + + * mips.md: Change %u to %u0 to avoid error check. + + * tm-mips.h (TARGET_VERSNUM): Inc. to 1 08. + (TARGET_VERSION): Change strings. + (AL_DEBUG): Don't define it. + (HARD_REGNO_MODE_OK): Add some casts to int. + (STACK_ARGS_ADJUST): Name was misspelled. + (PRINT_OPERAND_ADDRESS): Just abort for MEM, POST_INC, etc. + (EXTRA_SECTIONS, SELECT_VARIABLE_SECTION, SELECTORS_EXTRA_SECTIONS, + SELECT_VARIABLE_CONST_SECTION): New macros. + (ASM_FILE_END): Change function name. + * out-mips.c (function_arg_advance): Delete debugging printfs. + (function_inarg, function_arg): Likewise. + (compare_collect, compare_restore): Add some. + + * reload1.c (reload): Fix handling of caller_save_needed. + + * stmt.c (expand_function_start): Clear caller_save_needed. + + * stmt.c (emit_case_nodes): Some compiler has trouble with calling + a function pointer. + * gnulib.c: likewise. + +Tue May 2 15:32:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (combine_movables): For zero extend, + do each from-mode separately. + +Mon May 1 00:18:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-apollo68.h: New file. + + * c-parse.y (is_reserved_word, hash): Add keywords `__asm__', etc. + * c-parse.gperf: Corresponding changes. + + * c-parse.y (check_newline): Set main_input_filename before + considering optional arguments. + + * final.c (final_scan_function): Return next insn to process. + Usually that's the following insn; occasionally, previous compare. + + * c-decl.c (DOUBLE_TYPE_SIZE): Wrong value. + + * reload.c (decompose): Failed to return value. + + * Support local specified-register variables. + * varasm.c (decode_reg_name): New function, cvt asmspec to regnum. + (make_decl_rtl): Call that. + * toplev.c (rest_of_decl_compilation): Handle local specified-register + declarations. + + * i386.md (tstqi, trunc*qi): Constrain to `q' regs. + + * loop.c (scan_loop, move_movables): ->global for zero-extend register + now means register is used outside range from where it is set + to the following label. Non-global zero-extend regs + may be entirely cleared. + + * loop.c (combine_movables): Loop that combines matching movables + broken out from scan_loop. + Now also combine non-global zero-extend registers with each other + if their lifespans don't overlap. + + * c-typeck.c (build_unary_op, ADDR_EXPR of a COMPONENT_REF): + Always convert to desired result type. + +Sun Apr 30 12:58:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (init_decl_processing): New macros parameterize int types. + CHAR_TYPE_SIZE, SHORT_TYPE_SIZE, LONG_TYPE_SIZE, LONG_LONG_TYPE_SIZE, + FLOAT_TYPE_SIZE, DOUBLE_TYPE_SIZE. + + * fixincludes: Use sed instead of ex. No problem with split lines. + + * print-tree.c (dump): Print type's name, if any. + + * c-parse.y: Use __inline, not plain inline. + + * toplev.c: New option -fdelayed-branch. + (compile_file): Open and close dbranch dump file. + Collect and print dbranch time. + (rest_of_compilation): Optionally do dbranch scheduling, + only if HAVE_DELAYED_BRANCH. + (main): Handle -dd. + + * rtl.c (copy_rtx): Handle null pointers as code `e'. + + * final.c (dbr_sequence_length): New function. + (final_scan_insn): Most of `final' broken out. + Add support for SEQUENCE insns. + last_ignored_compare and new_block now top-level static. + + * c-parse.y (MAX_WORD_LENGTH): Long enough for __volatile. + +Sat Apr 29 13:03:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (asm statements): Output line numbers. + + * loop.c (emit_iv_init_code, emit_iv_inc, eliminate_biv): Copy + additive term rtx's to prevent sharing between insns. + + * c-parse.y (check_newline): Increment input_file_stack_tick. + * toplev.c (report_error_function): Describe input stack only if + changed. + + * c-decl.c (finish_struct): Reject zero width for named field. + + * tm-sun3.h (CC1_SPEC): Prevent error on `-sun3'. + * tm-sparc.h (CC1_SPEC): Prevent error on `-sun4'. + + * Makefile (cleanconfig): cleanlinks renamed; also delete gnulib. + (gnulib): Delete stamp-gnulib2 since gnulib2 should be redone after. + +Fri Apr 28 00:38:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config.gcc (genix): Correct xm file name. + + * tm-genix.h: Undefine ASM_SPEC inherited from tm-encore.h. + + * Makefile: Make float.h using hard-params. + (clean): Delete float.h. + + * hard-params.c: New program. + + * varasm.c (assemble_variable): Use SELECT_VARIABLE_SECTION if defined. + (in_section): Use EXTRA_SECTIONS if defined. + + * toplev.c (compile_file): Call ASM_FILE_END if defined. + + * gcc.c (SWITCH_TAKES_ARG, WORD_SWITCH_TAKES_ARG): Let config override. + + * loop.c (emit_iv_init_code): Force A to a reg if it isn't. + +Thu Apr 27 12:51:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-mips.h (ASM_START_FILES): Don't call print_options. + Don't call the funny abort-functions. + * out-mips.c: Delete funny debugging functions and aborts. + (print_options): #if 0. + (compare_restore): Test for COMPARE, not MINUS. + (mips_section_get, mips_output_external, mips_asm_final): New fns. + + * input.h: New file with *input_filename, lineno and input_file_stack. + Included in toplev.c and c-parse.y. + * c-decl.c (finish_function): LINENO is now arg. + * c-parse.y: Calls changed. + + * c-parse.y (check_newline): Handle `1' or `2' from cpp + by pushing or popping input_file_stack. + * toplev.c (compile_file): Push main input file on input_file_stack. + (report_error_function): If in include file, print the chain + of include-locations. + + * cccp.c (output_line_command): New arg says whether entering or + leaving a file. Output `1' or `2' on #-line if so. Callers changed. + + * gnulib2.c: Little-endian fixes from csmith@convex.com. + + * fixincludes: Wrong quoting in `echo' command. + + * tm-mips.h (REG_P): Duplicate defn deleted. + (PRINT_OPERAND): `\' was missing. + +Wed Apr 26 02:44:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (handle_directive): Preprocess even #pragma, but copy + to output file afterward. + (do_pragma): Use standard calling convention. + (install_builtins, special_symbol): Define __INCLUDE_LEVEL__. + + * cccp.c (do_include): Don't forget to close file. + + * final.c (output_asm_insn): Use PRINT_OPERAND_PUNCT_VALID_P + to validate punctuation after percent. + * tm-m68k.h, tm-alliant.h, tm-ns32k.h, tm-vax.h, tm-i386.h: + Define PRINT_OPERAND_PUNCT_VALID_P. + + * Version 1.35 released. + + * c-decl.c (grokdeclarator): Use INT_CST_LT only on int constants. + +Tue Apr 25 15:47:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload.c (find_reloads_address_1): Always return a value. + + * flow.c (mark_set_1): Look inside zero_extract, sign_extract. + + * expr.c (emit_library_call) [STACK_ARGS_ADJUST]: + Fix typo for `struct args_size'. + +Mon Apr 24 00:12:18 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * flow.c (mark_set_1): Look inside strict_low_part. + + * c-typeck.c (decl_constant_value): Don't use var's init if volatile. + + * print-tree.c (dump): Don't call walk on rtx's. + + * integrate.c (expand_inline_function): Convert expanded arg from + passed mode to nominal mode. + +Sun Apr 23 13:14:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: fix _IO macros if split across two lines. + Fix typo: EOF was indented. + + * gnulib2.c: New file with DImode library routines. + * Makefile (gnulib2): Put them into gnulib. + Must be explicitly requested. + +Fri Apr 21 13:45:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (main): Don't turn on trigraphs for -Wtrigraphs or -Wall; + use -trigraphs for that. + + * cccp.c (main): Use -trigraphs to enable trigraphs. + * gcc.c: Pass -trigraphs to cpp; don't pass -T. + + * Makefile: Variable srcdir relates location of sources + to current directory. Default is `.'. + + * integrate.c (expand_inline_function): When copying expanded arg, + use mode it's passed in, not arg's nominal mode. + + * dbxout.c (dbxout_block): Print generated name with assemble_name. + +Thu Apr 20 12:36:09 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stdarg.h: check __sparc__ instead of sparc. + +Tue Apr 18 18:58:03 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-next.h (STARTFILE_SPEC): Define it. + +Mon Apr 17 19:56:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * dbxout.c (dbxout_block): Use ASM_GENERATE_INTERNAL_LABEL to format + the labels LBB... and LBE... + +Sun Apr 16 23:57:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * mips.md: Change MINUS to COMPARE where appropriate. + +Sat Apr 15 16:11:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (finish_struct, redeclaration_error_message): + Rename variables named OLD and NEW. + + * sparc.md (cse'd mult pattern): Handle memory operands. + Optimize small integer operands. + + * stmt.c (expand_decl): On sparc, ensure dynamic arrays of doubles + are properly aligned, despite unaligned STACK_POINTER_OFFSET. + +Fri Apr 14 10:59:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_call): Bugs treating struct value address as param: + do so only if it's supposed to be pushed; + decode value of FUNCTION_ARG properly. + + * tm-altos3068.h (CPP_SPEC): Some braces were dropped. + + * gcc.c (pexecute): Print message when exec fails. + (perror_exec): New fn. + (perror_with_name,pfatal_with_name): Change message syntax. + + * tm-hp9k320.h (ASM_IDENTIFY_GCC): Define as no-op. + +Wed Apr 12 00:20:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (cse_insn): Can record constant value being stored in + a bit field, if we can tell that truncation won't change it. + + * m68k.md (bfset, bfclr, bfchg insns): Do CC_STATUS_INIT + since the cc's are set from the old contents. + + * gcc.c (compilers): Running `as', put -o option before input file. + + * gcc.c: Delete output file only if that file's compilation fails. + * gcc.c (record_temp_file): Changed args: always_delete, fail_delete. + (store_arg): Likewise. Callers changed. + (clear_failure_queue): Called after each compilation. + +Tue Apr 11 01:18:53 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (subst): (SET (ZERO_EXTRACT) (OR (ZERO_EXTRACT) const)) + optimization was sometimes invalid. + + * tm-m68k.h (NOTICE_UPDATE_CC): A doubleword move that requires 2 insns + does not set the cc's usefully. + + * Makefile (cleanlinks): Just do `clean', not `realclean'. + (realclean): Delete config links also. + + * expr.c (expand_call): Handle case where return value is in memory + but TARGET is a register. + + * c-typeck.c (build_binary_op_nodefault): New arg ERROR_CODE + is passed to binary_op_error instead of CODE. + All callers changed. + (binary_op_error): CODE = NOP_EXPR is new special case. + (truthvalue_conversion): Call build_binary_op_nodefault directly + and specify NOP_EXPR for the error code. + + * c-decl.c (xref_tag): If pedantic, warn on fwd ref to enum. + +Mon Apr 10 19:44:48 1989 Chris Smith (csmith at mozart) + + * tm-convex.h (PCC_BITFIELD_TYPE_MATTERS): It doesn't, + but set it anyway. It makes for better code on this + word machine. + + * convex.md (one_compl*): add not:QI and not:HI, which + do get used after all. + + * tm-convex.h (A_REG_P, S_REG_P): define new macros + convex.md: use them + + * convex.md (addsi3): tidy up constraints. + + * tm-convex.h (REG_OK_FOR_INDEX_P): stack pointer is not ok. + + * convex.md: add a pattern to push REG+CONST so we can + prefer an A reg. + + * tm-convex.h (tstqi): should sign extend, not zero extend. + + * expr.c (convert_move): Extending narrow to DI via SI, + operand of extendsidi2 was wrong. + + * emit-rtl.c (gen_lowpart): Handle CONST_DOUBLE. + +Mon Apr 10 05:19:39 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * recog.c (nonmemory_operand): Test constant operands + as general_operand does. + + * tm-m68k.h (PRINT_OPERAND): Limit effect of code `d' + to constant addresses. + + * loop.c (can_eliminate_biv_p, eliminate_biv): Don't rely on givs with + nonconstant coefficients, since the coeffs could be zero. + + * loop.c (can_eliminate_biv_p): Check each giv for ! ignore + before assuming it can be used. + (check_eliminate_biv): New fn, a piece of strength_reduce broken out. + + * cccp.c (error_from_errno): New fn, like error and perror_with_name. + (do_include): Call that if open fails. + (finclude): Print I/O error msg before closing desc. + + * c-decl.c (shadow_tag): If more than one tag or structure, + or anything other than a tag, warning. + + * c-parse.y (components): Just warn if memb decl has no member, + and only if pedantic. + + * loop.c (strength_reduce): Print uids, not luids, for dump. + (record_giv): giv_count field counts only DEST_REG givs. + (check_dbra_loop): src_two_before_end was set wrong. + + * loop.c (record_giv): New arg LOOP_END; all callers changed. + Don't mark giv replaceable if used past LOOP_END. + (find_mem_givs): New arg LOOP_END; all callers changed. + + * out-i386.c (FP_CALL): Make this a `return' stmt. + +Fri Apr 7 11:56:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_expr, case ..._DECL): Preserve mode thru + calling change_address. + + * expr.c (emit_library_call): Typo: ARGNUM => COUNT. + + * expr.c (preexpand_calls, expand_call): Take note of RETURN_IN_MEMORY. + * stmt.c (assign_parms): Likewise. + * integrate.c (function_cannot_inline_p): Likewise. + + * STACK_ARGS_ADJUST: Arg is now a `struct arg_data' and it should + be updated in place. + * tm-mips.h: Define it. + * expr.c (expand_call): Adapt to this. Assume padding comes after args + so turn off the feature of changing the args' offsets. + (emit_library_call): Adapt to this. + + * tm-mips.h (PRINT_OPERAND): Use CONST_DOUBLE_{LOW,HIGH}. + Truncate SFmode constants to single precision. + + * c-typeck.c (mark_addressable): Fix test for local vs global reg var. + + * config.gcc: Change `:-' to `-' in var refs. + Shell on convex doesn't handle `:-'. + +Thu Apr 6 00:09:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (expand_inline_function): Compare actual's mode + against formal's DECL_ARG_TYPE's mode, not TREE_TYPE's mode. + + * c-decl.c (implicitly_declare): Make the decl permanent if + in global binding level. (Can happen for certain invalid input.) + + * c-typeck.c (build_modify_expr): Block path that made a MODIFY_EXPR + containing an ERROR_MARK. + + * config/tm.h: New file. + + * loop.c (only_reg_use_p): Fix bugs in recursion, add some fast + special cases. Comment on return value was backwards. + (strength_reduce): Negate the value of only_reg_use_p. + + * genoutput.c (output_prologue): Output `#include hard-reg-set.h'. + * Makefile: insn-output.o depends on that. + + * toplev.c (main): Typo recognizing -Wswitch. + + * config.gcc (mips): New alternative. + * tm-mips.h, out-mips.c, mips.md, va-mips.h: New files. + * varargs.h: Include va-mips.h if on mips. + +Wed Apr 5 16:58:04 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (duplicate_decls): Rename OLD, NEW to OLDDECL, NEWDECL. + + * stmt.c (expand_function_start): Ref subr instead of + current_function_decl; should make no difference. + + * stmt.c (assign_parms): Do extra padding for some parms, + controlled by MAX_PARM_BOUNDARY. + * expr.c (expand_call): Same thing for caller side. + Note this is implemented only for machines that lack push insns. + Also, in both cases, it doesn't handle variable-size args. + +Tue Apr 4 12:22:06 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (find_file): Try STANDARD_EXEC_PREFIX for startfiles too. + + * varasm.c (make_decl_rtl): Delete never-executed clause. + + * spur.md (movqi, loadhi, extend*, zero_extendhisi): + Make subregs with C code, not RTL patterns, so we can + avoid generating subreg of subreg. + + * optabs.c (emit_cmp_insn): Not all clauses always succeed, + so stop using `else' structure. + + * stmt.c (expand_return): Avoid moving void to void, in cleanups case. + +Mon Apr 3 18:04:33 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * m68k.md (cmphi): Don't allow a-reg vs a-reg, since that sign-extends. + If there is one a-reg, make sure it is not last. + +Sun Apr 2 13:02:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (agg_mode): Use highest mode that has desired size. + Allow all integer modes, but reject sizes > MAX_FIXED_MODE_SIZE. + (That defaults to the size of DImode.) + + * machmode.def: Add PSI, PDI and XF, CXF modes. + +Sat Apr 1 00:50:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * ns32k.md (ashd, lshd): Delete patterns that logand the count with 31. + The shift count is not truncated on this machine. + + * combine.c (subst): Simplify nested or's, nested xor's. + (try_distrib): XOR doesn't distribute through anything. + + * rtl.c (rtx_equal_p): Don't die on null pointers. + + * loop.c (eliminate_biv): Use COMPARE, not MINUS, in generated compare. + + * loop.c (invariant_p): Mem refs in constant pool are invariant. + + * c-decl.c (redeclaration_error_message): If -traditional, allow + redeclarations of typedef provided they agree. + + * c-decl.c (start_decl): Do expand_decl on the decl that pushdecl + returns. If there was a prev. decl with a different type, + we have changed its type and cleared its old rtl, so it need new rtl. + +Sat Apr 1 00:50:11 1989 Matthew Self (rms at sugar-bombs.ai.mit.edu) + + * expr.c (convert_move): Modified to use mode classes + instead of refering to specific machine modes. + + * expr.c (do_jump): Converted to use CONST0_RTX macro. + do_jmp no longer refers to any machine modes directly except + for VOIDmode! + + * expr.c (compare, compare1): Modified to use CONST0_RTX + macro. No longer refers to any machine modes directly + except VOIDmode and BLKmode! + + * machmode.def: Documented assumptions made about the order + of machine modes during mode widening. + + * optabs.c (expand_binop, expand_twoval_binop, expand_unop, + emit_cmp_insn): Added mode widening which is independent of + specific machine modes. It assumes that we may widen to any + higher numbered mode of the same mode class. + NOTE: the checks for VOIDmode ops which were present in + QI and HI to SI widening are now present in all widening. + I assume this is correct. Also, widening is now possible + from QI to HI. This may or may not be a good thing.... + + * rtl.h (CONST0_RTX): Added definition of new macro + CONST0_RTX (mode). + + * rtl.h (GET_NOTE_INSN_NAME, GET_REG_NOTE_NAME): New macros. + * rtl.c (note_insn_name, reg_note_name): New tables. + * rtl.def (NOTE): Change last field from `i' to `n'. + * rtl.c (print_rtx): Print mode of INSN_LIST or EXPR_LIST as reg-note. + Print operand code `n' as name of kind of note. + (read_rtx): treat `n' like `i'. + + * loop.c (struct induction): Add `mode' field. + (strength_reduce, record_giv): Set the `mode' field in V. + (can_eliminate_biv_p, eliminate_biv): Use that field. + + * loop.c (struct iv_class): `init_insn' records what inits the biv. + Replaces `init_val_set' flag. + (strength_reduce): Update and test `init_insn' instead. + Use of a biv between its init and the start of the loop + does not preclude its elimination from the loop. + Setting a giv is ok for eliminating a biv, even if giv is "ignore", + since that just means giv will be combined with another. + Handle some DEST_ADDR givs for that purpose. + Test for giv-setting before check can_eliminate_biv_p. + New error check for replaceable giv whose value needed after loop. + (only_reg_use_p): New fn. + + * expr.c (expand_expr): PLUS, MINUS with EXPAND_SUM: + Associate even harder. + + * loop.c (strength_reduce): Treat all constant biv init vals like ints. + + * loop.c (strength_reduce): Clear all_reduced when v->ignore is set; + the code to check this later didn't always do the job. + + * loop.c (verify_loop): Set loop_continue. + (scan_loop): mention its value. + * rtl.h: Define NOTE_INSN_LOOP_CONT. + * stmt.c (expand_loop_continue_here): Output one. + +Fri Mar 31 10:08:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (pointer_int_sum, pointer_diff): Treat const void * like + void *. + + * rtl.c (rtx_addr_varies_p): Don't die on null exp. + * cse.c (refers_to_mem_p, refers_to_p): Likewise. + + * gcc.c (validate_switches, validate_all_switches): New fns. + Mark a switch as valid if any compiler spec or the linker spec + matches it, even for languages not being used. + +Thu Mar 30 00:22:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * loop.c (loop_optimize, move_movables): when moving a `clr' insn used + in zero-extension, sometimes change it to an `and' so that the + significant low bits are not clobbered. + + * cccp.c: Implement __BASE_FILE__ and #once. + (savestring): New fn. + (struct file_name_list): new name for struct directory_stack. + (enum node_type): Add T_ONCE, T_BASE_FILE. + (directive_table): Add #pragma once. + (initialize_builtins): Add __BASE_FILE__. + (special_symbol): Handle __BASE_FILE__, together with __FILE__. + (do_include): Ignore the file if it's on the #pragma once list. + (do_once): New fn; add current file to #pragma once list. + + * cccp.c (do_include): Don't add non-ex files to list of deps. + + * config.gcc: Use {...:-...}, not {...=...}. + + * c-parse.y: Add precedence for IF/ELSE, and for parens; + avoids some conflicts. + + * tm-newsgas.h: Include tm-news.h and define USE_GAS. + + * tm-news.h: New name for tm-news800.h. + If not USE_GAS, define SONY_ASM. + Don't define USE_GAS by default. + (CPP_PREDEFINES): Various alternatives depending on processor type. + (ASM_FORMAT_PRIVATE_NAME): Override this. + (ASM_IDENTIFY_GCC): Override; output nothing. + (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Round fsize up to % 4. + Max for halfword link insn is 32k, not 64k. + (FUNCTION_EPILOGUE): Don't output move.l if no regs to restore. + (PRINT_OPERAND_ADDRESS): Change handling of tableref pc-rel addresses. + * m68k.md (movhi): Add SONY_ASM conditional. + + * cse.c (cse_insn): If replacing a dest address, preserve MEM_IN_STRUCT + + * gcc.c (error, fatal): alternate varargs defns if HAVE_VPRINTF. + +Wed Mar 29 09:54:13 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (process_command): Check WORD_SWITCH_TAKES_ARG, so that + -Tdata can be handled right. + + * stmt.c (check_for_full_enumeration_handling): new fn, for warn_switch + (expand_end_case): Call it, if orig index was enum. + * toplev.c (main): Handle -Wswitch. + * c-parse.y (SWITCH stmt): Pass orig switch expr to expand_end_case. + + * tm-*.h, out-*.c: Uniformly use reg_names, not reg_name, and don't + define any duplicates. + * final.c: Delete reg_name. + + * c-parse.y (is_reserved_word): Add keywords __asm and __inline; + also __const and __volatile. + (yylex): Keywords that start with `__' are recognized regardless of + -traditional or -ansi. + + * c-parse.y (check_newline): Always recognize #ident. + Macro IDENT_DIRECTIVE is no more. + If ASM_OUTPUT_IDENT is undefined, don't output anything for #ident. + * tm-3b1.h: Don't define IDENT_DIRECTIVE or ASM_OUTPUT_IDENT. + * tm-encore.h, tm-i386gas.h, tm-i368v.h, tm-sun386i.h, tm-vaxv.h: + Don't define IDENT_DIRECTIVE; define ASM_OUTPUT_IDENT to output in + default way. + + * expr.h (RETURN_IN_MEMORY): New macro, default defn here. + * expr.c (expand_call): Use it to control where to return value. + * stmt.c (expand_function_start): Likewise. + + * out-sparc.c (find_addr_reg): Abort if none found. + Eliminate confusion; do only one change between tests for PLUSness. + (output_move_double): Arg to find_addr_reg is address, not mem ref. + * out-m68k.c, out-spur.c, out-i386.c, out-alliant.c: Likewise. + + * jump.c (find_cross_jump): Don't let either E1 or E2 be included + in the range of matching insns preceding the other (E2 or E1). + + * c-parse.y (check_newline): No error for `#pragma\n'. + + * Makefile (gcc.o): Control STANDARD_STARTFILE_PREFIX here. + + * stmt.c (walk_fixup_memory_subreg): handle null. + + * tm-sparc.h (FUNCTION_BLOCK_PROFILER): Change LPBnn to LPYnn, + to avoid conflict with final.c. + +Tue Mar 28 15:23:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (do_include): If fail, print system error message. + (perror_with_name): Use more standard error format. Inc. `errors'. + + * dbxout.c (dbxout_function): Output any temporary types + that were made by dbxout itself. + + * stmt.c: always use an epilogue if pcc-struct-return. + (expand_function_start): Compute return_label after testing that. + (expand_function_end): Output a return insn after pcc-struct-return + processing, if there is a return insn. + (expand_null_return): Don't output a return insn, in that case. + Simplify the conditions--depends entirely on HAVE_return. + + * tm-m68k.h (FUNCTION_BLOCK_PROFILER): Use jsr, not call. + + * reload.c (find_reloads): Certain mem addresses will be offsetable + after reloading; in particular, those where reg_equiv_address applies. + + * loop.c (check_dbra_loop): Change MINUS to COMPARE. + + * c-typeck.c (convert_for_assignment): Return THE standard error_mark. + +Thu Mar 23 09:39:02 1989 Richard M. Stallman (rms at watson) + + * c-parse.y (components): Error if empty. + + * dbxout.c (dbxout_symbol): Output const variables as N_STSYM. + + * varasm.c (force_const_mem): Use ASM_OUTPUT_DOUBLE_INT if defnd. + + * c-decl.c (grokdeclarator): Warn about `long long long'. + + * reload1.c (reload): When changing REG to MEM, clear REG_USERVAR_P. + * final.c (alter_subreg): Preserve volatile bit of MEM. + + * m68k.md (cmpsi, cmphi): Permit cmpm. + + * gcc.c (find_file): Use standard_startfile_prefix_2. + Now search /usr/local/lib/, /lib/ and /usr/lib/. + + * tm-m68k.h (PRINT_OPERAND): Support code `d'. + * m68k.md (cmpsi, cmphi, cmpqi): Use it for all mem addresses. + + * final.c (output_asm_insn): Don't allow %LETTER without an + operand number. + * tm-m68k.h, m68k.md, tm-hp9k320.h, tm-news*.h: Use %@ instead of %s. + * tm-alliant.h, alliant.md: Likewise. + * i386.md, out-i386.h: Put `0' after each %L, %W, %B, %S, %Q, %R. + + * stmt.c (expand_end_stmt_expr): Pop pending stack args. + + * varasm.c (assemble_variable): For 0-size common variable, + allocate at least 1 byte. + + * tm-encore.h (ASM_OUTPUT_DOUBLE, PRINT_OPERAND): Use 0f, not 0l, + for doubles. + +Mon Mar 13 10:24:56 1989 Richard M. Stallman (rms at ccvi) + + * out-i386.h (function_prologue, function_epilogue): + Use call_used_regs, not a copy, so -f options work. + Save regs in the opposite order. + Save regs even starting from 0 if they happen to be call-saved. + + * Bug fixes from Rob McMahon. + + * loop.c (strength_reduce): When inserting insn to set + nonreplaceable giv, put it after all the consecutive insns + that compute it. + + * reload.c (find_reloads): When forcing const to mem, + use the insn's operand mode, not the const's mode. + + * reload1.c (choose_reload_targets): Use wider of inmode and outmode + when determining have_groups. + + * reload1.c (choose_reload_targets): typo checked wrong insn with + constraint_accepts_reg_p. + + * reload1.c (choose_reload_targets): Enable #if-0'd code for + forgetting old reloads in case of output reload from a non-spill-reg. + +Sun Mar 12 00:04:49 1989 Richard M. Stallman (rms at ccvi) + + * c-parse.y (yyerror): Add forward-decl here. + * c-tree.h: Delete decl here. + + * New macro USE_C_ALLOCA. + * cse.c (cse_main): Do alloca (0) to clear out C alloca. + * flow.c (life_analysis): + * local-alloc.c (local_alloc): + * reload1.c (reload_as_needed): likewise. + + * loop.c (emit_iv_init_code, eliminate_biv): + Always put constant in a PLUS last. + + * gcc.c (make_switch): Unused function deleted. + + *gcc.c (switches): Each switch has a `used' field. + (process_command): Init it to 0 when making `switches'. + (do_spec_1, handle_braces, give_switch): Set to 1 when switch is used. + (main): If it remains 0 at the end, print error message. + + * expr.c (convert_move, convert_to_mode): Don't truncate a MEM in + place if it is volatile. + + * loop.c (strength_reduce): When reducing a giv, if the biv is + incremented between the giv's creation and its use, increment + the reduced giv var *after* its use. + + * c-decl.c (duplicate_decls): Warn about proto vs nonproto + only if no other errors apply. + + * jump.c (invert_exp): Don't crash if arg is null. + + * alliant.md (float*i*f2): Don't allow immediate ops. + (sne): Fix typo, fsne => fsneq. + + * expr.c (store_one_arg, expand_call): When size doesn't matter, + pass const0_rtx, not (rtx) 0. + + * expr.c (do_jump): Args to invert_exp were missing. + + * gcc.c (store_arg): Now 2 separate args for delete-on-success + and delete-on-failure. All calls changed. + (do_spec_1): DELETE_THIS_FILE is meaningful for output files. + + * config/xm-alliant.h (LINK_SPEC): Pass -X to linker. + +Sat Mar 11 10:30:41 1989 Richard M. Stallman (rms at ccvi) + + * tm-*.h, xm-*.h, *.md: Moved to subdir `config'. + * output-*.c: Moved to `config/out-*.c'. + * Makefile (.c.o): Define rule to use -Iconfig when compiling. + (various): Delete the commands from some compilation rules. + Put -Iconfig in other compilation commands. + Also some reordering of variable defs and comments for cleanliness. + (realclean): Change a shell comment to a Make comment. + + * fold-const.c (fold): Simplify and extend TRUTH_... operators + knowing that args must be ints and values will be 0 or 1. + + * gcc.hlp: New file (for VMS). + + * reload1.c (reload): Don't let two 2-groups overlap. + + * reload.c (push_reloads): When a plain reg matches a reload + for an increment, don't change the reload_in to a plain reg. + Leave the increment there. + + * integrate.c (expand_inline_function): Don't try to inline + unless the parm machine modes really match what's expected. + + * stmt.c (emit_case_nodes): default_label is an rtx, not tree. + + * tm-next.h (DOLLARS_IN_IDENTIFIERS): Define it as 1. + + * output-sparc.c (output_move_double): Don't trust random structs + to be double-word aligned. + + * gcc.c: Pass -Wcomments to cpp. + + * rtl.def (ASM_OPERANDS): New operands, source file and line. + * rtl.h (ASM_OPERANDS_*): New macros for components of ASM_OPERANDS. + * stmt.c (expand_asm_operands): Use new fields, not REG_ASM_* notes. + * toplev.c (error_for_asm): likewise. + * rtl.h (enum reg_note): Delete REG_ASM_FILE, REG_ASM_LINE. + + * combine.c (try_combine): Check explicitly for volatility in I2, I1. + +Fri Mar 10 19:30:10 1989 Richard M. Stallman (rms at ccvi) + + * c-parse.y (GOTO stmt): Set TREE_USED for the label. + * c-decl.c (poplevel): Warn about unused label. + + * c-decl.c (warn_pointer_arith, warn_strict_prototypes): New vars. + (lang_decode_options): Options to set them. + * c-typeck.c (pointer_int_sum, c_sizeof): Maybe warn if bad target. + * c-decl.c (grokparms): Maybe warn if nonprototype fn decl. + + * flags.h, toplev.c (warn_shadow): New flag. + * toplev.c (main): Decode it. + * c-decl.c (pushdecl): Maybe warn about any shadowing. + Existing parm-shadowing warning now disabled if shadowing decl + is also a parm. + + * flags.h, toplev.c (warn_id_clash, id_clash_len): New flags. + * toplev.c (main): Decode -Wid-clash-LEN. + * tree.c (get_identifier): Implement warning if two idents match. + + * toplev.c (compile_file): Warn about statics defined and unused. + + * rtl.h (CONST0_RTX): New macro. + + * recog.c (offsetable_address_p): New 1st arg says whether to demand + a strictly valid address. + (offsetable_memref_p): Pass nonzero. + * stmt.c (optimize_bit_field): Pass zero. + + * cccp.c (main): Allow -Wcomment like -Wcomments. + * c-decl.c (lang_decode_options): Likewise. + +Sun Mar 5 15:02:59 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) + + * m68k.md [tstdf, cmp[sd]f, truncdfsf2, floatsi[sd]f2, add[sd]f3, + sub[sd]f3, mul[sd]f3, div[sd]f3, neg[sd]f2, abs[sd]f2]: Made sure + that the test function's in the match_operands of the define_expand + and define_insn's matched, and made that test function + "register_operand" when both define_insn's really needed registers + in that spot. + +Sat Mar 4 00:25:37 1989 Richard M. Stallman (rms at c2v) + + * expr.c (emit_push_insn): Don't ever bypass the big-endian + padding at the end. + + * cccp.c (deps_output): Break line if would otherwise exceed 75 chars. + Make a name for that value 75. + + * combine.c (subst): Handle general case of (subreg (sign_extend X)). + + * tm-sun386i.h (CPP_PREDEFINES): Define `sun'. + + * fixincludes: change `find' calls to find dirs thru symlinks. + + * flow.c (mark_set_1): (set (subreg (reg N))...) + does make reg N significant for this basic block. + +Fri Mar 3 13:55:25 1989 Richard M. Stallman (rms at c2v) + + * c-decl.c (parmlist_tags_warning): Print an explanation + for the first such warning. + + * i386.md (extendsfdf): Let op 1 match op0 if that is an fp reg. + + * expr.c (expand_call): Fix stupid errors copying pcc struct value. + + * varasm.c (output_constructor): Discard NOP_EXPRs from build_c_cast. + +Thu Feb 23 05:55:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.34 released. + + * c-typeck.c (build_c_cast): If EXPR is an error mark, return that. + + * fold-const.c (div_and_round_double): Abort if divisor is 0. + (combine): Likewise, for real constants. + (real_zerop): New subroutine. + (fold): Don't try to fold division if divisor is 0. + Don't try to fold reals if can't do arithmetic on them. + Don't try to compare reals for TRUTH_..._EXPR if can't do arith. + Use real_zerop to test reals for zeroness. + For TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR, can simplify based on + first operand alone. + + * c-typeck.c (store_init_value): Fix error msg text. + + * tm-sparc.h (FUNCTION_PROFILER): Use `mcount'. + * tm-sun4os3.h (FUNCTION_PROFILER): Override it; use `.mcount'. + +Wed Feb 22 04:33:22 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-hp9k320.h (CPP_SPEC, CPP_PREDEFINES): Make handling of + -Dmc68000 depend on TARGET_DEFAULT. + + * tm-sparc.h (FUNCTION_PROFILER): Missing newline in fprintf. + + * integrate.c (expand_inline_function): Don't map struct-value-address + in memory if fn does not use it. + + * c-parse.y (check_newline): At skipline, detect eof. + + * stmt.c (uninitialized_vars_warning): Change text of warning. + +Tue Feb 21 03:58:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-sparc.c (output_mul_insn): Handle case of both args + in reg 8, or both in reg 9. + + * tm-sparc.h (ASM_SPEC): Define, to handle -pipe. + + * tm-sparc.h (FUNCTION_PROFILER): Add omitted fprintf args. + (BLOCK_PROFILER): Likewise. Use tempvar. + + * m68k.md (QImode btst): Allow nonoffsetable mem refs. + +Mon Feb 20 00:32:42 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * flow.c (mark_used_regs): Don't record about global reg vars. + + * config.gcc (convex-*): tm file names are tm-convex1.h, tm-convex2.h. + + * tm-vax.h, tm-ns32k.h, tm-alliant.h: Define PCC_STATIC_STRUCT_RETURN. + + * gcc.c (compilers): Pass `-a' to cc1. + * tm-sun3.h, tm-sparc.h (LIB_SPEC): Define, to handle `-a'. + + * expr.c (emit_push_insn): Copy stack addresses to be passed to bcopy; + old method of preadjustment is broken by changes in emit_library_call. + + * c-decl.c (finish_decl): New temp `temporary'; don't get confused + about whether allocation was temporary. + +Sun Feb 19 17:03:35 1989 Chris Smith (csmith at mozart) + + * tm-convex.h: define PCC_STATIC_STRUCT_RETURN + + * convex.md: + remove pshea patterns, movsi does it better. + add ashift:DI abs:DF abs:SF + (tstdi): use a clobbered register instead of a bogus DImode zero. + (trunchiqi2): delete noninstruction cvth.b + (udivsi3, udivhi3, udivqi3): deleted, expand_divmod does it now. + (call, call_value): delete stupid call/ret -> jump optimization. + (call, call_value): flush call_ap_check, use reg_mentioned_p instead. + + * convex.md: (movxx): swap constraint alternatives so that the + leftmost alternative is (set =g r). This makes (set mem const) + get combinable input reloads of const instead of uncombinable + output reloads to mem. They still do not combine, but wtf, + I'll inch up on it. + + * output-convex.c: (const_double_{high,low}_int): new routines + to pick apart const_doubles for assembler. + +Sun Feb 19 01:40:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sparc.md (shift memory right 24 bits): Another `a1' typo. + + * config.gcc (convex-*): Delete troublesome whitespace. + + * c-decl.c (grokparms): Delete redundant `parm != 0' tests. + + * stmt.c (fixup_memory_subreg): Slight simplification. + + * tm-sparc.h (FUNCTION_PROFILER): Fill delay slot. + (FUNCTION_BLOCK_PROFILER): Use sethi. + (BLOCK_PROFILER): Use %g2, not %g0. Use sethi. + +Sat Feb 18 02:11:25 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_expr): Ignore const array's initial value + if it's an error_mark. + * c-decl.c (finish_decl): Set DECL_INITIAL to an error_mark + if the decl is a permanent node. + + * cccp.c (rescan): If traditional, if macro ends inside string, + keep scanning for the end of the string. + (handle_directive): A line of just `#' becomes blank. + (collect_expansion): \ in strings traditionally doesn't hide macro arg. + + * m68k.md, alliant.md (addsi3): New alternative a=r+a, in addition + to old a=a+r, needed since reload-insns are not commuted. + +Fri Feb 17 03:15:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-m68k.h (PCC_STATIC_STRUCT_RETURN): Define it. + * toplev.c, flags.h: New var flag_pcc_struct_return. + * stmt.c (expand_function_start): Obey new flag and new variable. + * expr.c (expand_call): Obey new flag and new variable. + * varasm.c (assemble_static_space): New function. + + * stmt.c (expand_return): If we need cleanups, compute retval first + into pseudo reg, then do the cleanups, then copy it to return reg. + +Thu Feb 16 02:59:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * regclass.c (init_reg_sets_1): Win if STATIC_CHAIN_REGNUM undefined. + + * expr.c (expand_call): Handle conflict between two precomputed + args that are both function calls returning structures. + + * loop.c (move_movables): Bkwds test of m->partial, for a matching reg. + + * expr.c (emit_library_call, expand_call): Handle STACK_ARGS_ADJUST. + +Wed Feb 15 01:59:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * toplev.c (flag_caller_saves): New var, for -fcaller-saves. + DEFAULT_CALLER_SAVES controls initial value. + * global-alloc.c (find_reg): Do caller saves only if flag set. + * local-alloc.c (find_free_reg): Do caller saves only if flag set. + * tm-alliant.h, tm-convex.h: Define DEFAULT_CALLER_SAVES. + +Wed Feb 15 01:59:15 1989 Chris Smith (rms at sugar-bombs.ai.mit.edu) + + * caller-save.c: New file. + * regs.h (CALLER_SAVE_PROFITABLE): New macro. + (reg_n_calls_crossed): new int-vector replaces reg_crosses_calls. + * flow.c (allocate_for_life_analysis, propagate_block, dump_flow_info): + Use reg_n_calls_crossed. + * stupid.c (stupid_mark_refs, stupid_life_analysis): Likewise. + * global-alloc.c (find_reg): Sometimes allocate call-clobbered regs + for call-crossing pseudos. + New arg ACCEPT_CALL_CLOBBERED; callers changed. + * local-alloc.c (find_free_reg): Similar changes. + (qty_n_calls_crossed): New int-vector replaces qty_crosses_calls. + (alloc_qty, local_alloc, combine_regs, find_free_reg): change that var. + * regclass.c (call_fixed_regs, call_fixed_reg_set): new vars. + (init_reg_sets_1): Initialize them. + * reload1.c (reload): Call caller-saves processing if needed. + +Wed Feb 15 01:59:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_expr): INTEGER_CST for DImode: don't handle + endianness here. So CONST_DOUBLE_LOW is always the low word. + * varasm.c (force_const_mem): Handle it here. + + * expr.c (convert_move): widening followed by extendsidi2 had braino. + + * integrate.c: Don't include ctype.h; not needed and kills Sun cpp. + + * m68k.md (cmpsf, cmpdf and their recognizers): + Replace MINUS with COMPARE. + Also, use VOIDmode for COMPAREs, not SF or DF. + + * optabs.c (sign_expand_binop): Handle ops such as division where + an unsigned char could be widened and handled with signed int insns. + * expmed.c (expand_divmod): Use that. + + * c-typeck.c (digest_init): Allow for type variants in validating + initialization from a string constant. + + * c-typeck.c (decl_constant_value): Disable opt. if pedantic or + outside functions, so that validity of program is never affected. + + * fold-const.c (fold): Signedness-test for ABS_EXPR was backwards. + +Tue Feb 14 01:30:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (main): Don't omit normal output, if we want deps on + a separate stream. + + * c-decl.c (grokdeclarator): Don't record any arg types for functions + if -traditional. + + * print-tree.c (prtypeinfo): Mention permanent attribute. + + * tm-next.h: New file. + + * c-typeck.c (decl_constant_value): The DECL_INITIAL may be ERROR_MARK. + + * c-decl.c (duplicate_decls): For fns, new static decl overrides + old non-static one. + + * emit-rtl.c (gen_lowpar, gen_highpart): Use change_address, so we + preserve volatility, etc. + + * stmt.c (expand_expr_stmt): Use emit_filename, emit_lineno + as file and line for any warning. + * emit-rtl.c (emit_line_note): Set those vars. + + * c-decl.c (store_parm_decls): If -Wimplicit, warn of arg with no decl. + + * recog.c (offsetable_address_p): Use strict_memory_address_p, + since called from reload.c. + +Mon Feb 13 03:11:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sparc.md (compare-to-reg patterns): Some still had MINUS. + + * toplev.c (main): Warn if `-a' on system that can't handle it. + + * stmt.c (expand_asm_operands): Delete unused local `val'. + (pushcase_range): Likewise for `value'. + (fixup_var_refs): Likewise for `insn'. + * emit-rtl.c (start_sequence): Likewise for `save'. + * loop.c (scan_loop): Likewise for `before_start'. + * expr.c (expand_expr): Delete label `binop1'. + + * reload1.c (constraint_accepts_reg_p): Handle SUBREGs of REGs. + +Sun Feb 12 05:37:46 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib.c (__bb_init_func): New function + + * tm-m68k.h (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): Defined. + +Sat Feb 11 00:05:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-sparc.h (FUNCTION_PROFILER): Make it really work. + (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): New macros. + + * final.c (final): Use BLOCK_PROFILER at start of each basic block. + (final_start_function): Use FUNCTION_BLOCK_PROFILER if -a. + (end_final): New fn to output the block-profiling tables. + * toplev.c (profile_block_flag): Set if -a. + (compile_file): Call end_final. + + * combine.c (try_combine): Avoid combining in most cases if I3 + has an inc or dec and I1 or I2 uses the same register. + + * tree.c (size_in_bytes, int_size_in_bytes): Use type's main variant. + + * c-typeck.c (actualparameterlist): Error if parm type is incomplete. + + * expr.c (expand_call): Ignore args that have incomplete type. + +Fri Feb 10 02:26:02 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (case stmts): strip dummy NOP_EXPRs. + + * reload1.c (reload_as_needed): Clear reg_{has,is}_output_reload here, + (choose_reload_targets): not here. + +Thu Feb 9 01:35:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-sparc.c (output_mul_by_constant): Forget cc status. + + * stmt.c (assign_parms): Don't put volatile parms in regs. + + * vax.md (jlbs/jlbc recognizers): Move them before jbc/jbs recognizers. + + * cse.c (fold_rtx): Handle (EQ (COMPARE ...) (CONST_INT 0)). + + * c-typeck.c (default_conversion, digest_init): For static const + nonvolatile scalar variable, use its initial value if known. + + * expr.c (expand_expr: case COMPONENT_REF): If containing structure + comes out volatile, leave the component MEM volatile too. + + * hard-reg-set.h: Fix multi-word case macros to swallow semicolon. + + * c-typeck.c (default_conversion): In array=>ptr, volatility + of target type comes from TREE_THIS_VOLATILE, not TREE_VOLATILE. + + * reload1.c (forget_old_reload_1, choose_reload_targets): + New array reg_is_output_reload is converse of reg_has_output_reload. + forget_old_reload_1 needs both. + +Wed Feb 8 01:26:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reload1.c (forget_old_reloads_1): New fn, guts of forget_old_reloads. + Do process a spill reg if it isn't used for reloading in this insn. + (forget_old_reloads): Deleted, replaced with note_stores. + (reload_as_needed): Undo Feb 1 change. + Call forget_old_reloads_1 on pseudos autoincremented and not reloaded. + + * c-typeck.c (convert_for_assignment): Handle variant types. + + * c-decl.c (lang_decode_option): -Wall implies -Wunused. + +Tue Feb 7 01:32:28 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (try_combine): Don't try adding outputs to an asm_operands. + + * cse.c (CHEAPER): Don't ever let a hard reg get ahead of a pseudo. + + * stmt.c (fixup_gotos): Don't crash on undef label if THISBLOCK is 0. + + * c-decl.c (parmlist_tags_warning): New fn. + * c-parse.y (parmlist, parmlist_or_identifiers): Call it, + to warn about any tags defined inside the parmlist. + * c-decl.c (grokparms): Don't warn about ptr to incomplete type. + The new warning is better. + +Mon Feb 6 01:11:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (store_constructor): Incorrect ALIGN arg in store_field calls. + + * c-parse.y (%union): Delete unused alternative. + + * c-decl.c (grokparms): Use main variant to test for ptr to incomplete. + + * c-decl.c (finish_enum): Delete superfluous init for `pair'. + + * cse.c (fold_rtx): Optimize X+0, X-0 in floating point. + Fix typo in PLUS case; omitted value to compare GET_MODE_CLASS against. + (equiv_constant): Allow CONST_DOUBLE. + + * cse.c: Optimize past if-statements that are known to fail. + (cse_insn): If condjump becomes uncond to end of this block, + set cse_skip_to_next_block. + (cse_basic_block): If that happens, ignore rest of block, and maybe + treat next block as part of this one (if tables have room). + Resume insn that starts next basic block to be scanned. + (cse_main): Make room for at least 500 qtys. + (cse_end_of_basic_block): Subroutine broken out of cse_main. + + * c-parse.y (hash, is_reserved_word): Rewrite: new hash technique. + + * c-decl.c (duplicate_decls): Be smart about proto vs nonproto mismatch + involving a function definition. + +Sun Feb 5 17:31:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * alliant.md (movdi): Typo in `fmoved'. + (ftruncsf2): Handle moving into fp reg. + + * jump.c (jump_optimize): Typo in testing PRESERVE_DEATH_INFO_REGNO_P. + + * reload1.c (choose_reload_targets): Move all death notes to the + output reload insn. + + * m68k.md (fix_truncsfsi2,fix_truncdfsi2): Use accurate rtl pattern. + + * loop.c (delete_insn_forces): Use presence of REG_RETVAL to check + for value-of-library-call insn. + +Sat Feb 4 18:17:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (expand_inline_function): Make addresses of stack + slots valid somehow. + + * tm-3b1.h (DIVSI3_LIBCALL, etc.): Define these macros; avoid gnulib. + + * expmed.c (store_bit_field): Avoid (subreg (mem)) when converting + VALUE1 to SImode. + + * jump.c (jump_optimize): Do delete USE and CLOBBER insns. + This is needed for proper jump optimization. + + * rtl.def (COMPARE): New code. + * *.md (compare and related patterns): Use COMPARE, not MINUS:VOID. + * loop.c (eliminate_biv, can_eliminate_biv_p): Likewise. + * cse.c (fold_rtx, fold_cc0, cse_insn): + * output-m88k.c (output_{f,}compare, output_store): + * output-sparc.c (strict_single_insn_op_p, single_insn_src_p, safe_insn_src_p): + * combine.c (subst): + * jump.c (jump_back_p): + +Fri Feb 3 18:34:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-i386.c (notice_update_cc): If arith insn sets the cc's, + discard all remnants of previous cc value and flags. + + * sparc.md (ashiftrt mem by 24): Fix typo `a1'. + +Thu Feb 2 14:55:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-sparc.c (output_mul_insn): Clear the CC status. + +Wed Feb 1 20:01:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Version 1.33 released. + + * reload1.c (reload_as_needed): On entering new basic block, + if it didn't need reload regs, forget all inherited contents of those. + + * tm-alliant.h (NOTICE_UPDATE_CC): Floating moves don't set the cc's. + Also delete the clauses and tests for FPA regs. + +Tue Jan 31 21:51:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config.gcc: Handle convex-c1, convex-c2. + * tm-convex1.h, tm-convex2.h: New files that include tm-convex.h. + * tm-convex.h: Define switches -mnoc1, -mnoc2. + + * config.gcc: rename `nofp' to `nfp', to match the file names. + +Mon Jan 30 22:12:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-sparc.c (output_delay_insn): Extract the operands, + call alter_subreg, constrain_operands and NOTICE_UPDATE_CC. + So callers other than output_eager_then_insn don't lose. + (output_eager_then_insn): No need to do that stuff. + + * symout.c (symout_block_symbols): Handle (MEM (REG)) for + variable-sized arrays. + + * tm-encore.h (ASM_SPEC): Always pass -j; avoid jump-range lossage. + +Sun Jan 29 17:06:26 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * alliant.md: Fix refs to CONST_DOUBLEs to use CONST_DOUBLE_{HIGH,LOW}. + + * combine.c (subst): (minus (zero_extend ...) (const_int ...)) opt. + now limited to within the context of (set (cc0) ...). + +Sat Jan 28 14:26:08 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (fold_cc0): Missing `&' extracting CONST_DOUBLEs. + (fold_rtx): Don't put CONST_DOUBLEs together into a (CONST (PLUS...)). + + * output-convex.c (gen_cmp): Recognize CONST_DOUBLE as a constant. + + * tree.c (build_real_from_int_cst): Typo in REAL_ARITHMETIC case. + + * Makefile (bootstrap2): Don't use bootstrap3 as subroutine. + + * varasm.c (force_const_mem): Put the CONST_DOUBLE on the chain + if its MEM is stored in it; so it can be cleared at end of function. + + * stmt.c (emit_case_nodes): Put a compare before each cond-jump. + Two cond-jumps after one cond is invalid and makes cse produce garbage. + +Fri Jan 27 01:05:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-sun2.h (CPP_SPEC): Define __HAVE_68881__ only if -m68881. + + * c-decl.c (start_decl): Don't expand_decl if DECL already has rtl. + (grokparms): If just declaring fcn, incomplete parm type is just + a warning, and don't discard the specified type. + + * expmed.c (expand_divmod): Be smarter about not clobbering args + with intermediate results; one mem can clobber another, and a reg + can clobber a mem. + + * tm-i386.h (FUNCTION_PROFILER): Use LPREFIX. May actually work now. + * tm-i386gas.h: Include tm-bsd386.h, not tm-att386.h. + This means changing asm syntax. + #undef DBX_NO_XREFS and DBX_CONTIN_LENGTH. + + * sparc.md (eager branch peepholes): Don't forget 2nd arg to + safe_insn_src_p. + Don't print warnings. + * output-sparc.c: (strict_single_insn_op_p): Return 0 for floating + REG or MEM, since copying that may take 2 insns. + (operands_satisfy_eager_branch_peephole): require delay insn to + be strict_single_insn_op_p as well as safe_insn_src_p. + (operand_clobbered_before_used_after): Don't print warnings. + + * varasm.c (decode_rtx_const): Clear entire structure incl. gaps. + Avoids spurious hash mismatches. + (force_const_mem): If CONST_DOUBLE, store its CONST_DOUBLE_MEM field. + Also look in that field rather than hashing, to save time. + + * c-typeck.c (build_c_cast): If value is literal, mark NOP_EXPR as so. + (store_init_value): Change error msg. + + * c-decl.c (duplicate_decls): Classify prototype vs nonprototype + mismatches better. + + * tm-3b1.h: Fix comment. + +Wed Jan 25 12:46:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (cleanlinks): Use -f. + +Tue Jan 24 17:54:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (canon_hash): Fix paren error in last change. + + * varasm.c (immed_real_const_1): Missing arg to bcmp. + +Mon Jan 23 02:43:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_type): BLKmode elts force array to be BLKmode. + + * genpeep.c, genoutput.c, genemit.c: Put `#include "real.h"' in output. + + * stmt.c (expand_expr_stmt): No "no effect" warning for error-mark. + + * varargs.h: Rename implicit arg name to __builtin_va_alist + which triggers code in assign_parms. Does this really matter? + + * sparc.md (sne): New define_expand. + (seq recognizers): Handle sne as well. + * output-sparc.c ({strict_,}single_insn_src_p): + Some NEG and MINUS insns are actually 2 asm insns. + (safe_insn_src_p): No floating arith is safe; they can trap. + (eq_or_neq): New fn, for seq/sne recognizers. + + * c-decl.c (grokdeclarator, size of array type): + Strip from SIZE any NOP_EXPRs that don't change anything. + + * reload.c, recog.c: Include real.h so constraint macros can examine + CONST_DOUBLEs. + +Sun Jan 22 04:12:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (init_decl_processing): Define __builtin_saveregs. + * tree.h: likewise. + * expr.c (expand_builtin): Handle it. + + * tm-sparc.h: Define TARGET_EAGER and -meager. + * sparc.md (eager branch peepholes): Reenable, but test TARGET_EAGER. + Change fb insns to use %F. Delete `,a' from some of them. + * jump.c (jump_optimize): Don't delete USE and CLOBBER insns. + + * xm-vms.h (const): Define it as empty. + + * make-cccp.com: Move the rename of cexp_tab.c. + Compile cccp.c with no macro definitions. + + * cccp.c (main): VMS conditional for setting max_include_len. + +Sat Jan 21 12:53:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varargs.h (va_start): On sparc, call __builtin_saveregs. + Delete the old conditional that used va-sparc.h. + Rename macros and locals to start with two underscores. + * va-sparc.h: File deleted. + + * c-decl.c (store_parm_decls): Initialize OTHERS. + + * stmt.c (assign_parms): Obey layout_decl. + +Fri Jan 20 02:19:32 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cse.c (fold_rtx): For SYMBOL_REF and LABEL_REF, mask address + to 16 bits. + + * tree.h (NUM_TREE_CODES): NUM_TREE_CODE renamed. + +Thu Jan 19 13:53:24 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (mark_addressable): For global reg var, report error. + Now returns an int; value of 0 means caller should fail. + All calls (in this file) changed. + + * stor-layout.c (layout_decl): Don't let an more than 1 word + of any aggregate go in any 1 register. (Needed for machines whose + integer regs are 64 bits). + + * tm-convex.h, xm-convex.h, convex.md, output-convex.c: new files. + + * expr.c (convert_move): Use extendqidi2, etc. for converting + small ints to double ints. Use zero_extendsidi2 rather than + clearing the high half. + +Wed Jan 18 01:20:52 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (make_decl_rtl): If global `register' decl is invalid, + make ordinary non-register rtl. + + * output-sparc.c (operand_clobbered_before_used_after): new fn. + (reg_clobbered_p, safe_insn_src_p): New fns. + (single_insn_src_p): Treat constants all as ok, even though not + always literally so. Also accept some SIGN_EXTENDs and ZERO_EXTENDs. + (strict_single_insn_src_p): New fn, like above but is strict + about constants and constant memory addresses. + (relop): New fn. + (output_move_double): Don't make a MEM, and don't use %m. + (output_delayed_branch): New name for output_delay_insn. + Now handle non-small constant operands. + Avoid duplicate loads of g1 for constant addresses. + Use recog_operand directly for output of the delay insn. + (output_delay_insn): Now a completely new fn. + (output_eager_then_insn, next_real_insn_no_labels): New fns. + (operands_satisfy_eager_branch_peephole): New fn. + + * sparc.md: New peepholes for testing a recently used operand. + New peepholes for delayed branches, incl. conditional ones. + ** Some of them commented out because they seem not to work. + (andcc recognizer): Fix typo, missing %. + (bgt): Change bgt to bg in output. + (reversed jumps): Replace with one pattern using match_operand. + It uses %F to output the condition. + (movsi): For round-valued immed const, use just a sethi. + For other immed, use explicit sethi and or. + (movhi, movqi): use `move' for reg source or small int source. + For other immed, use explicit sethi and or. + (movsi, etc.): Handle all constant addresses like SYMBOL_REFs. + (movsf): Delete never-used duplicate code for constant addresses. + (addsi3, subsi3, cse'd multiply): Use sethi and or, rather than set. + (andsi3, iorsi3, xorsi3): Likewise. + (jump): Make an annulled branch. + + * tm-sparc.h (PROMOTE_PROTOTYPES): Define this. + (GO_IF_LEGITIMATE_ADDRESS): Now accept all constant addresses; + also cleaned up. + (NOTICE_UPDATE_CC): Don't change the G1 status when storing in memory. + Assume all PARALLEL insns are peepholes. + (PRINT_OPERAND): New codes C and N for outputting conditions, + either forward or reversed. Also F for reversed floating. + + * jump.c (delete_for_peephole): New function to delete range of insns. + * genpeep.c (gen_peephole): Output code to use this. + + * Makefile (install): Fix typo, had $${name} for $${file}. + +Tue Jan 17 00:00:12 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * i386.md (ashlsi3): Use addl or leal for special cases. + + * c-decl.c (grokdeclarator): Make a non-global VAR_DECL public + if it is external. + + * masm386.c: Clean up formatting. + + * cse.c (fold_rtx): Typo simplifying x|0 or x^0 + when the 0 comes second. + + * expmed.c (store_fixed_bit_field): For halfwords, verify that + the field fits in an *aligned* halfword. + (extract_fixed_bit_field): likewise. + + * expmed.c (store_split_bit_field): New arg align, passed in from + store_fixed_bit_field and passed back to it. + (extract_split_bit_field): likewise. + + * expr.c: Reinsert changes from Jan 2, mysteriously deleted Jan 3. + Also changes from Dec 23, Dec 28 and Dec 29. + + * tm-i386.h: Likewise for changes from Dec 30. + + * c-typeck.c (build_component_ref): If field's type is error-mark, + return an error-mark. + +Mon Jan 16 14:16:54 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * genpeep.c (main): Output code to exit early if insn is followed + by a barrier. + (gen_peephole): Reject barriers just like labels. + + * stmt.c (do_jump_if_equal): New arg UNSIGNEDP, for emit_cmp_insn. + Caller changed. Now static. + + * final.c (final): Set INSN_DELETED_P in insns when output. + + * final.c (final): Re-set BODY if peephole does anything. + + * c-decl.c (grokparms): Ignore anything but PARM_DECLs in the list. + (store_parm_decls): If we had a prototype, separate out anything other + than a PARM_DECL declared in it, and pushdecl those at the end, + after DECL_ARGUMENTS is set. + + * stmt.c (expand_end_case): Do stack adjusts after computing index. + + * expr.c (store_one_arg): Handle padding for case of BLKmode + for which space was preallocated. + + * integrate.c (copy_rtx_and_substitute): When copying asm insn, + preserve sharing of the input-operand vectors. + (expand_inline_function): Clear {orig,copy}_asm_operands_vector + to make that mechanism work. + (save_for_inline, copy_for_inline): Likewise. + + * stmt.c (expand_asm_operands): Reject `+' in constraints. + Every output constraint requires `='; inputs reject it. + + * stmt.c (expand_function_end): Arg to fixup_gotos was missing. + +Sun Jan 15 00:28:23 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c, gcc.c (main): Handle SIGPIPE. + (pipe_closed): New fn; report suitable fatal error. + + * loop.c (loop_optimize): Initialize moved_once. + + * gcc.c (do_spec): Don't call `execute' if value != 0. + Delete redundant second call to do_spec_1. + + * toplev.c (compile_file): Make declared-but-not-defined warnings + only if -Wunused. + + * stmt.c (emit_case_nodes): Fix typo setting gen_ble_pat. + + * tm-sparc.h ({U,}MODSI3_LIBCALL): Name was wrong. + + * gcc.c (env_exec_prefix refs): Don't try to open via it if it's null. + + * output-sparc.c (output_store, output_load_{fixed,floating}): + Fixed confusions between the mem ref and its address. + + * cse.c (canon_hash): global_regs has entries only for hard regs. + * flow.c (insn_dead_p, mark_set_p, mark_used_regs): Likewise. + + * cse.c (fold_rtx): More simplifications for MULT, IOR, AND, XOR + DIV and shifts with one arg 0 or 1. + +Sat Jan 14 11:41:11 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (build_array_ref): If pedantic, check for regdecl arrays. + + * fixincludes: Make all subdirs in advance, so no need for `dirname'. + + * genpeep.c (gen_peephole): Delete code to increment LABEL_NUSES; + instead, clear JUMP_LABEL for any jumps being deleted. + No need to test INSN1 for being a label, since not called then. + [If any of the matched insns is a JUMP_INSN, set want_jump, + and in that case make the matched peephole a JUMP_INSN itself.] + That's in an #if 0 now; it's good in jump, but not in final. + + * jump.c (jump_optimize): Don't do peepholes here. + * final.c (final): Do them here. + + * jump.c (jump_optimize): In optimizing `if (foo) bar; else break;', + don't try to invert anything but a standard-looking conditional jump. + + * jump.c (jump_optimize): Do peepholes on ALL BUT the first pass. + + * gcc.c (env_exec_prefix): New var used like user_exec_prefix + but set from envvar GCC_EXEC_PREFIX. + +Fri Jan 13 13:21:59 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * genpeep.c (gen_peephole): Test INSN1 for a label at the very start, + then test following insns at the end of the loop. + + * sparc.md (call recognizers): do CC_STATUS_INIT, for %g1. + +Thu Jan 12 02:13:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (make_decl_rtl): Recognize more error cases for reg vars: + BLKmode, or initializer given. + Distinguisn missing asm from invalid name. + + * expr.c (expand_call): Never return 0; return const0_rtx instead. + This makes expand_expr more uniform. + + * c-decl.c (grokparms): For ptr to incomplete type, just warn; + don't change the parm's type. + + * stmt.c (expand_return): Set RETVAL_RHS so as to recognize + tail-recursive fcn returning void. + Unconditionally test value of expand_expr for being a REG. + + * reload.c (find_reloads): Don't process insns that have + no constraint alternatives. No more need for have_constraints. + + * recog.c (constrain_operands): New local var nalternatives. + Don't bother checking the insn if nalternatives is 0. + +Wed Jan 11 01:27:48 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Implement global register decls. + + * varasm.c (make_decl_rtl): Handle global register vars. + (make_function_rtl): Set function_defined: after 1st function dfn. + (assemble_variable): Ignore global register vars. + + * c-decl.c (grokdeclarator): Don't reject global register decls. + (builtin_function): Use make_decl_rtl, not make_function_rtl, + to avoid setting function_defined. + + * regclass.c (init_reg_class{,_1}): Init and process global_regs. + They are fixed, and call-clobbered. + + * flow.c (insn_dead_p): Storing one of global_regs is never dead. + (mark_used_regs, mark_set_1): A global reg is never dead. + + * cse.c (canon_hash): Consider global regs volatile. + + + * expr.c (do_jump): Know how to invert jumps which are sequences. + + * dbxout.c, symout.c, final.c: On USG, use our own stab.h. + + * tm-i386gas.h: New file for GAS on sysV (with DBX debugging info). + + * m68k.md (bfchg and bfins patterns): Make # alternatives uniform. + * alliant.md: Likewise; also in movdf patterns. + + * genoutput.c (output_epilogue): Spurious `break' disabled + error check for mismatched # of alternatives. + (output_epilogue, scan_operands): Errors in input are not fatal. + + * flow.c (regno_uninitialized): Avoid crash if no basic blocks. + + * sparc.md (move insns): Delete special patterns that handled + symbolic constant addresses. The main move patterns now do this. + * output-sparc.c (output_store, output_load_{fixed,floating}): + Subroutines to do the work for this; has the code from those + special patterns. Also fixed bugs in testing against cc_status.mdep. + + * output-sparc.c (output_delay_insn): Clear the CC status. + This is necessary for %g1 in the case of a call insn. + + * tm-i386.h (REG_CLASS_CONTENTS): INDEX_REGS is now all but ESP. + (REGNO_REG_CLASS): Corresponding change. + (REG_CLASS_FROM_LETTER): Eliminate `x' letter since not used. + + * optabs.c (emit_cmp_insn): New arg ALIGN, used for BLKmode. + All callers changed. + Pass alignment (as rtx) as 4th arg to cmpstr gen functions. + Use cmpstrhi if available. + * expr.c (compare): Only this call passes a nonzero ALIGN. + + * expr.c (emit_push_insn, emit_block_move): Pass alignment (as rtx) + as 4th arg to movstr gen functions. + +Tue Jan 10 23:43:05 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_type): Use BLKmode, if a struct isn't + aligned well enough for a scalar mode. + + * expr.c (expand_expr): For static CONSTRUCTOR, ensure memory + address is made valid. + + * genpeep.c (match_rtx): For MATCH_OPERATOR, set max_opno, n_operands. + +Mon Jan 9 17:07:56 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (output_constant): Split strings every 2000 chars. + + * stmt.c (expand_end_case): Test bkwds, handling constant switch arg. + +Fri Jan 6 09:11:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * output-sparc.c (output_delay_insn): Add parens to first if test. + (output_move_double): Turn addr for `sethi' into MEM for %m. + + * c-typeck.c (convert_for_assignment): move test for ERROR_MARK. + + * c-parse.y (unary_expr): Allow cast_expr as arg of unary op. + + * stmt.c (expand_decl): Don't abort if FUNCTION_DECL lacks rtl; + assemble_variable is called after this. + + * c-parse.y (primary -> identifier): Separate case for undeclared + identifier outside of functions; avoids confusing error msgs. + +Thu Jan 5 01:24:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (install): Ignore errors in all `if' commands. + Create $(libdir) if nec. + + * Makefile (insn-*.[ch]): Put in empty commands. May help Ultrix Make. + + * stmt.c (emit_case_nodes): New arg UNSIGNEDP says do unsigned jumps. + Arg INDEX is an rtx, not a tree. + (expand_end_case): Pass that arg. + (node_has_{low,high}_bound): check for overflow, avoid confusion. + +Wed Jan 4 02:24:21 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sparc.md (movdi, movdf): Use `&' constraint when loading reg from; + otherwise can lose on (set (reg X) (mem (plus (reg X) (reg X+1)))). + + * expr.c (emit_push_insn): For memory scalar partially going in regs, + copy each word to reg before pushing. Avoids memory-to-memory move. + Make the displaced address valid. + Also delete unfinished STACK_OFFSET variable. + + * c-parse.y (check_newline): Read just one #-directive and return. + This prevents lossage when toplev.c calls it to get the main input file + name, and it gets a following #ident as well. + + * c-decl.c (lang_decode_option): Set warn_cast_qual for -Wcast-qual. + * c-typeck.c (build_c_cast): Issue some warnings if set. + + * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Missing `;'. + +Tue Jan 3 18:07:31 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (emit_library_call): Do force_operand on each operand + if it isn't a REG, MEM or constant. + Do this, or mode conversions, earlier, before loading any hard regs. + + * m68k.md (addsi3) [SGS]: Put a zero displacement in the `lea'. + + * c-typeck.c (default_conversion): Don't lose `const' or `volatile' + when converting array type to pointer. + +Mon Jan 2 01:18:01 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (store_bit_field, store_fixed_bit_field): New arg, + alignment in bytes the structure is known to have. + (store_fixed_bit_field): Handle working in halfwords, + in case the pointer isn't known to have fullword alignment. + * expmed.c (extract_bit_field, extract_fixed_bit_field): likewise. + (extract_bit_field): fix unsignedp arg to extract_fixed_bit_field. + * expr.c (store_field): New arg, passed to {store,extract}_bit_field + (expand_assignment, store_constructor): Pass that arg. + (expand_expr): Pass new arg to extract_bit_field. + + * m68k.md (casesi_2 recognizer): Offset always 6 for 3b1. + + * c-typeck.c (convert_for_assignment): Strip from rhs no-op NOP_EXPRs + put on by build_c_cast (to make the result not an lvalue). + (build_modify_expr, build_compound_expr): likewise. + (build_conditional_expr): likewise. + (actualparameterlist, build_function_call): likewise. + (default_conversion, truthvalue_conversion): likewise. + + * loop.c (move_movables): If reg has moved out of one loop, + divide `savings' by 2. + +Sun Jan 1 03:00:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (truthvalue_conversion): Distribute the conversion + into the arms of a COND_EXPR. + + * cse.c (fold_rtx): Don't fold a MINUS with VOIDmode + into a symbolic constant--it's incorrect. + + * cse.c (cse_insn): If SRC is a subreg with known value, simplify it. + + * integrate.c (copy_rtx_and_substitute): Allow a ref to a part of + MEM parm whose actual parm is a reg, provided it refs + the low part of the MEM. + (function_cannot_inline_p): Don't inline functions which have + aggregate parameters and take their addresses. This could produce + refs to non-low-parts, which copy_rtx_and_substitute can't handle. + + * c-typeck.c (build_modify_expr): If lhs is COND_EXPR, + make a COMPOUND_EXPR to ensure the rhs is computed before the branch. + + * Implement -pipe. + * gcc.c (do_spec_1): `|' is now a special delimiter + which goes in the argbuf. + When a newline is preceded by a `|', delete it if no -pipe. + Otherwise, don't execute yet, and keep scanning. + (do_spec): At end, if we have stuff with no newline, execute it. + (handle_braces): Implement %{|foo:...}. + (execute): If argbuf contains some `|'s, run several processes + and pipe them together. + (pexecute): new subroutine to make one of the processes. + (find_exec_file): new fn to search for program to execute. + (record_temp_file): new arg FAIL_ONLY. + (store_arg): 2nd arg == 3 means delete file on failure. + This is used for output files. + (delete_temp_files): delete certain files only if fail. + + * cccp.c (include_defaults): /usr/include before /usr/local/include. + + * recog.c (asm_noperands): 1-off in loop checking CLOBBERS + when no output operands and PARALLEL. + + * expmed.c (negate_rtx): Sign-extend the high bits rather than clear. + + * cse.c (fold_rtx): fold negation of real values. + (fold_cc0): fold comparisons on real values. + + * Makefile (install): Use $(INSTALL) for gcc.1 and files in USER_H. + + * Handle floating-point problems for cross-compilation. + + * real.h (CONST_DOUBLE_LOW, etc.): new macros to access CONST_DOUBLE. + * varasm.c (immed_double_const, decode_rtx_const): Use these. + ({force,clear}_const_double_mem): Likewise. + * output-*.c (output_move_double): Use these. + * output-m68k.c (standard_{68881,sun_fpa}_constant_p): Likewise. + * tm-*.h (PRINT_OPERAND): Use these. + * output-i386.c (print_operand): Use these. + * final.c (output_addr_const): Likewise. + * emit-rtl.c (gen_rtx): Delete special code for CONST_DOUBLE. + + * real.h (union real_extract): Portable type for storing real as ints. + * varasm.c (immed_double_const, decode_rtx_const): Use these. + + * varasm.c (immed_real_const_1, decode_rtx_const): + Don't assume REAL_VALUE_TYPE is 2 ints long. + * emit-rtl.c (init_emit_once): Likewise. + + * real.h (REAL_VALUE_TYPE): Define as `double' if not defined. + (REAL_IS_NOT_DOUBLE): Define this if default REAL_VALUE_TYPE not used. + (REAL_VALUES_EQUAL, REAL_VALUES_LESS): Define, if not already defined. + (REAL_VALUE_LDEXP, REAL_VALUE_ATOF): Likewise. + * tree.h (struct tree_real_cst): Use REAL_VALUE_TYPE for the value. + + * rtl.c (init_rtl): Increase length of CONST_DOUBLE if REAL_VALUE_TYPE + needs more space. Change the rtx_format element to match. + * varasm.c (immed_real_const_1): 1st arg now has REAL_VALUE_TYPE. + (force_const_mem): Assume a CONST_DOUBLE contains REAL_VALUE_TYPE. + * emit-rtl.c (init_emit_once): Likewise. + And use REAL_VALUE_ATOF to get a floating zero. + * optabs.c (expand_float): Use REAL_VALUE_TYPE, REAL_VALUE_LDEXP. + * c-parse.y (yylex): Likewise, and use REAL_VALUE_ATOF. + * fold-const.c (split_tree): Don't accept REAL_CSTs. + (combine, fold_convert, fold): Use REAL_ARITHMETIC if defined; + else don't fold reals if they are not doubles. + * tree.c (build_real_from_int_cst): Likewise. + * print-tree.c (dump) [REAL_IS_NOT_DOUBLE]: output float value + in hex, since we don't know how to do it right. + +Sat Dec 31 14:15:13 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (init_optabs): Handle new macros {U,}MULSI3_LIBCALL, + DIVSI3_LIBCALL, MODSI3_LIBCALL. + * tm-sparc.h: Define {,U}{MUL,DIV,MOD}SI3 to call Sun's library direct. + + * tm-sun3-nfp.h, tm-sun3-fpa.h: New files. + +Fri Dec 30 00:14:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (main): Certain envvars specify a file to write deps info to. + + * toplev.c (compile_file): Warn about undefined fns declared static. + + * m68k.md (casesi_2 recognizer) [SGS] RTX_INTEGRATED_P test backwards. + * tm-3b1.h (ASM_OUTPUT_CASE_LABEL): Likewise. Also missing `\'. + + * reload1.c (count_occurrences): New function. + (choose_reload_targets): Don't delete a reload if the same reg + is used elsewhere in the current insn. + (delete_output_reload): code split out from choose_reload_targets. + + * c-typeck.c (build_c_cast): Always put on some operator, + so the cast is never an lvalue for strict ANSI. + + * c-typeck.c (initializer_constant_valid_p): Don't depend on + distinction between NOP_EXPR and CONVERT_EXPR. + + * c-convert.c: Fns reordered; new comments. + + * fold-const.c (fold): If simplifying a NOP_EXPR within a BIT_AND_EXPR, + return a NOP_EXPR. + New var TYPE holds type of expr. + + * c-parse.y (expr_no_commas): Split off cast_expr and unary_expr, + to reject `sizeof (int) foo'. + + * toplev.c (main): Treat plain `-' as input filename. + + * final.c (final): If an insn's output routine returns 0, + it means to output the deleted compare insn immediately preceding. + + * m68k.md (branch insns): Use 0 as 3rd arg for OUTPUT_JUMP + rather than explicitly clearing the overflow flag. + + * tm-i386.h (OUTPUT_JUMP): Really use NO_OV; don't abort. + * i386.md (branch insns): Put real data (sometimes 0) in 3rd arg + of OUTPUT_JUMP. 0 means preceding test may not be deleted. + (lea pattern): Clear the cc's. + * output-i386.c (notice_update_cc): various arith insns set the cc's. + +Thu Dec 29 13:22:01 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stmt.c (expand_decl_init): Do nothing for static decls. + + * reload.c (find_reloads_address{,_1}): Return 1 iff entire arg + was reloaded as a whole, else 0. + (find_reload): If find_reloads_address returns 1, don't let that MEM + satisfy a `>' or `<' constraint. + + * m68k.md (cmpmb): Delete special pattern, make cmpqi handle it. + The special pattern couldn't handle reloading the incremented register. + + * integrate.c (copy_rtx_and_substitute): Test BYTES_BIG_ENDIAN, + not BITS... + + * combine.c (subst): Consider big-endian correction + when simplifying (subreg (mem ...) ...). + + * reload.c (find_reloads): Don't crash if matching operands in `asm' + are both read or both write. + + * expr.c (emit_push_insn): Address for movstr must be XINNER, not X. + + * toplev.c (main): Typo parsing `-fno...'. + +Wed Dec 28 13:07:21 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * toplev.c (rest_of_compilation): `volatile' fns need jump_optimize + for warnings, as if -Wreturn-type. + * c-typeck.c (c_expand_return): Warn about `return' in a `volatile' fn. + * c-decl.c (finish_function): Warn if `volatile' fn can drop thru end. + + * cse.c (canon_reg): Handle nulls as subexpressions. + (fold_rtx, canon_hash, mention_regs, exp_equiv_p): Likewise. + * loop.c (invariant_p, replace_regs, replace_call_address, may_trap_p, + {basic,general}_induction_var): Likewise. + + * expr.c (expand_call): Handle `const' functions: + Local IS_CONST is 1 if function is const. + Attach REG_RETVAL and REG_LIBCALL notes around the call. + Copy fn address to register outside of those notes. + Likewise precompute all parms outside them. + + * expr.c (expand_call): If fn is volatile, emit barrier after the call. + + * c-decl.c (grokdeclarator): Allow function declared const or volatile. + +Sat Dec 24 18:40:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * integrate.c (function_cannot_inline_p): If STRUCT_VALUE_INCOMING + or STRUCT_VALUE is defined, can't inline functions returning BLKmode. + +Fri Dec 23 13:26:26 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (store_constructor): Compute array's size + with int_size_in_bytes. + + * varasm.c (assemble_variable): If shared data, go to data section + before outputting an uninitialized symbol. + + * tm-sequent.h (ASM_OUTPUT_ALIGN_CODE): Missing backslash. + (SHARED_SECTION_ASM_OP): Macro defined. + * tm-seq386.h (SHARED_SECTION_ASM_OP): Macro defined. + + * c-typeck.c (c_expand_asm_operands): Warn if output op is `const'. + + * Fix problem where a stmt expr in an initialization + refers to the variable it is initializing. + * stmt.c (expand_decl_init): New fn split out from `expand_decl'. + * c-decl.c (finish_decl): Call that. + Don't call expand_decl if already done. + (start_decl): Call expand_decl if type is complete already. + + * Makefile (install): Typo in ranlib command. + +Thu Dec 22 15:57:12 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h (tree_identifier): New field. + (IDENTIFIER_ERROR_LOCUS): Accessor for it. + * c-parse.y (primary => IDENTIFIER): + Undeclared variable gets one err msg per function it appears in. + + * ns32k.md (andsi3): Delete extra brace. + + * alliant.md, xm-alliant.h, tm-alliant.h, output-alliant.c: New files. + + * combine.c (SUBST, SUBST_INT): Store new field `is_int'. + (copy_substitutions): Don't copy an int as an rtx. + + * Makefile (INSTALL): Install gcc.1 properly. + + * tm-ns32k.h (FUNCTION_PROLOGUE, ASM_OUTPUT_ALIGN_CODE): + Add missing backslashes. + +See file ChangeLog.0. diff --git a/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 + + * expmed.c (expand_divmod, case TRUNC_DIV_EXPR): Move some code + to avoid shifting by a too large count. + +Fri Mar 29 15:45:51 1996 Doug Evans + + * configure (i[3456]86-*-sunos5*): Delete, config.sub converts + sunos5 to solaris2. + (sparc-*-sunos5*): Likewise. + (sparc64-*-{solaris2*,sunos5*}): Delete. Stick with sparc-*-solaris2*. + + * sparc.h (FUNCTION_PROFILER): Save/restore %g2 around mcount call. + +Fri Mar 29 14:20:31 1996 Stan Cox + + * i386.c (notice_update_cc): Clear cc_status if ref modified MEM. + +Fri Mar 29 09:37:52 1996 Jeffrey A. Law + + * calls.c (expand_call): Remove current_call_is_indirect nonsense. + Add additional argument to INIT_CUMULATIVE_ARGS. + (emit_library_call): Likewise. + (emit_library_call_value): Likewise. + * expr.c (expand_builtin): Likewise. + * function.c (assign_parms): Likewise. + * 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 + + * alpha.c (summarize_insn): Fix three "off-by-one" bugs in loop bounds. + +Thu Mar 28 16:50:10 1996 Doug Evans + + * ginclude/inl-sparc.h: Deleted. + +Thu Mar 28 12:07:31 1996 Jeffrey A. Law + + * 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 + + * expmed.c (negate_rtx): Fix typo in previous change. + +Tue Mar 26 13:50:43 1996 Jim Wilson + + * calls.c (expand_call): In convert_to_mode call, use word_mode + not SImode. + +Tue Mar 26 13:44:34 1996 Doug Evans + + * configure: Delete unnecessary special handling of --with-cpu. + +Tue Mar 26 10:41:57 1996 Jeffrey A. Law + + * expr.c (emit_push_insn): When doing a partial push, emit + a CLOBBER so that flow doesn't think the entire register + is live. + +Tue Mar 26 10:00:52 1996 Richard Kenner + + * alpha.c (summarize_insn, default case): Properly use format_ptr. + +Tue Mar 26 09:51:09 1996 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.h (output_move_simode_const): New extern declaration. + * m68k.c (output_move_simode_const): New function. + (singlemove_string): Call it. + * m68k.md (fullword move): Likewise. + +Tue Mar 26 05:43:06 1996 Torbjorn Granlund + + * vax.md (insv matcher): Call CC_STATUS_INIT. + * vax.h (NOTICE_UPDATE_CC): Handle ZERO_EXTRACT destination. + +Mon Mar 25 19:18:08 1996 Jason Merrill + + * function.c (expand_function_start): Don't set up context_display + unless current_function_needs_context. + +Mon Mar 25 18:48:18 1996 Philippe De Muyter + + * fold-const.c (fold, case BIT_IOR_EXPR): Recognize rotates + with variable count. + +Mon Mar 25 18:05:28 1996 Jim Wilson + + * Makefile.in (libgcc1-test): Undo Feb 12 change. + +Mon Mar 25 08:09:59 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * objc/thread-single.c (objc_mutex_unlock): Properly declare thread_id. + +Mon Mar 25 08:02:50 1996 Philippe De Muyter + + * configure (m68k-motorola-sysv*): Fixed indentation. + +Sun Mar 24 08:16:42 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expmed.c (negate_rtx): Don't try to negate a constant ourself; + instead call simplify_unary_operation. + +Sun Mar 24 07:29:06 1996 Richard Henderson + + * gcc.c (process_command): Instead of hardcoding non-empty + switches_need_spaces to turn on "o" and "L", make the string + contain the switches that need the spaces. + * m68k/ccur-GAS.h (SWITCHES_NEED_SPACES): Change definition + correspondingly. + +Sat Mar 23 18:34:44 1996 Harry Dolan + + * i860/paragon.h (LIB_SPEC): Always output -lmach. + +Sat Mar 23 18:25:39 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * c-typeck.c (set_init_index): Check for use outside an array + initializer. + + * defaults.h (ASM_OUTPUT_ADDR_DIFF_ELT): Delete. + * pdp11.h (ASM_OUTPUT_ADDR_DIFF_ELT): Don't define. + +Sat Mar 23 15:55:35 1996 Doug Evans + + * combine.c (make_extraction): In BITS_BIG_ENDIAN correction of POS, + need to treat MEM and REG differently. + + * sparc.h (SPARC_SIMM{10,11,13}_P): Define. + (SMALL_INT): Use SPARC_SIMM13_P. + (CONST_OK_FOR_LETTER_P): Support new letters L,M. + * sparc.c (arith11_operand): Use SPARC_SIMM11_P. + (arith10_operand): Use SPARC_SIMM10_P. + * sparc.md (*mov{qi,hi,si,di}_cc_sp64): Fix constraints. + (*mov{qi,hi,si,di}_cc_reg_sp64): Likewise. + +Sat Mar 23 07:47:19 1996 Andreas Schwab + + * m68k/linux.h (TRAMPOLINE_TEMPLATE): Correct first instruction. + * m68k/m68kv4.h (TRAMPOLINE_TEMPLATE): Likewise. + +Sat Mar 23 07:06:55 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * bc-emit.c (bc_emit_instruction): Add missing va_end call. + + * c-typeck.c (build_array_ref): Give error if subscripting a function. + +Fri Mar 22 09:11:45 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * local-alloc.c (optimize_reg_copy_1): Only update reg_live_length + if it is non-negative. + +Thu Mar 21 14:42:26 1996 Doug Evans + + * sparc/splet.h (STARTFILE_SPEC,LINK_SPEC): Define. + +Wed Mar 20 17:23:18 1996 Jim Wilson + + * cse.c (note_mem_written): Delete obsolete code for handling + (mem (scratch)). + + * mips.c (mips_expand_prologue): In initialization of fnargs, delete + special treatment of METHOD_TYPE. + +Wed Mar 20 17:07:45 1996 Doug Evans + + * sparc/sol2.h (ASM_CPU_SPEC): Recognize -mcpu=v8plus, not v9. + Fix typo in ultrasparc entry. + * sparc/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 + + * i386.h (HARD_REGNO_MODE_OK): Relax QImode constraint to + avoid a reload problem. + +Wed Mar 20 13:12:22 1996 Jeffrey A. Law + + * pa.c (hppa_legitimize_address): Don't lose for x[n-const] + when n-const will not be shifted. Don't pessimize code for + x[n-const] when const is small. + +Wed Mar 20 11:42:32 1996 Markus Theissinger + + * m68k/sun3.h (LIB_SPEC): Don't link /usr/lib/bb_link.o with `gcc -a'. + (__bb_init_func): Deleted. + (BLOCK_PROFILER_CODE): Don't set macro to nothing. + + * m68k/xm-sun3.h: New file. + * configure (m68k-sun-sunos*): Use it. + + * xm-linux.h (HAVE_POPEN): New define. + +Wed Mar 20 11:28:37 1996 Andreas Schwab + + * m68k/linux.h (ASM_SPEC): Deleted. + (STRUCT_VALUE_REGNUM): Redefine as register a0. + (STATIC_CHAIN_REGNUM): Redefine as register a1. + (TRAMPOLINE_TEMPLATE): Redefine to use the right register. + +Wed Mar 20 08:04:34 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * libgcc2.c (__dummy): New function. + * Makefile.in (LIB2FUNCS): Add __dummy. + * expr.c (expand_builtin, case BUILT_IN_SETJMP): Call "setjmp" + pattern, if any. + Call dummy function pointed to by static chain pointer. + (expand_builtin, case BUILT_IN_LONJMP): Ignore second expression. + Set address of __dummy into static chain pointer. + Copy the label to return to into a pseudo earlier. + + * stupid.c (last_setjmp_suid, regs_crosses_setjmp): New variables. + (stupid_life_analysis, stupid_mark_refs): Use them to track which + regs are live over a setjmp; don't allocate such regs. + +Tue Mar 19 22:02:07 1996 Jason Merrill + + * cplus-dem.c (demangle_template): Fix for non-mangled pointer + arguments. + +Tue Mar 19 13:54:06 1996 Jeffrey A. Law + + * pa.c (compute_frame_size): Update comments to reflect reality. + (hppa_expand_prologue): Don't save registers which aren't + used, even if it creates holes. Partially undoes changes from + early March. + (hppa_expand_epilogue): Likewise. + +Tue Mar 19 08:25:17 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * stmt.c (struct case_node): New member balance. + (add_case_node): New function. + (pushcase, pushcase_range): Use it. + (case_tree2list): New function. + (expand_end_case): Use it. + +Tue Mar 19 07:44:22 1996 Stephen L Moshier (moshier@world.std.com) + + * regstack.c (move_for_stack_reg): Avoid stack overflow while + storing XFmode from fp reg to memory. + +Tue Mar 19 07:38:03 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * m68k.h (MASK_*): New macros. + (OVERRIDE_OPTIONS): Use them. + (TARGET_SWITCHES): Likewise. + Treat -m68332 like -m68000. + +Mon Mar 18 20:04:13 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * expmed.c (emit_store_flag): If expanding (GE X 0) will need two + insns, don't use subtarget for the result of the first insn. + Move a likely constant to the start of a condition. + +Mon Mar 18 19:48:14 1996 Philippe De Muyter + + * m68k.h (CONST_OK_FOR_LETTER_VALUE): New constraint 'M'. + * m68k.c (output_function_epilogue): Restore registers using sp+ + instead of fp(n) in leaf functions. + (USE_MOVQ, use_movq): Function replaced by macro. + * m68k.md (pushexthisi_const, movsi_const0): New names. + (andsi3, iorsi3): Allow only 'M', not 'K' constants, if dest is 'd'. + +Mon Mar 18 19:33:20 1996 Fila Kolodny + + * i370/t-mvs: New file. + * configure (i370-*-mvs*): Use it. + * i370/mvs.h (FUNCTION_PROLOGUE): LE/370 takes 120 bytes for DSA. + Have only one copy of timestamp and PPA2 per object module. + Only have unnamed CSECT to match IBM C. + +Mon Mar 18 19:26:21 1996 Paul Russell (Rusty.Russell@adelaide.maptek.com.au) + + * combine.c (simplify_if_then_else): Allow for case that + condition might no longer be a condition. + +Mon Mar 18 19:14:42 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c (build_conditional_expr): If OP1 is null, set + both OP1 and ORIG_OP1 to IFEXP. + + * c-iterate.c (iterator_loop_epilogue): Don't clear DECL_RTL + for a static decl. + +Mon Mar 18 08:02:25 1996 Stephen L Moshier + + * alpha.c (summarize_insn, case SUBREG, CONST_*): New cases. + +Sun Mar 17 16:55:00 1996 Doug Evans + + * combine.c (find_split_point): Handle NULL return from + make_extraction. + (make_field_assignment): Likewise. + +Sat Mar 16 18:56:47 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (substitute_in_expr, case COMPONENT_REF): Ignore + if inner PLACEHOLDER_EXPR has not yet been initialized. + + * i386.c (standard_80386_constant_p): -0.0 is not 0.0. + * i386.md (insv): Restore missing end of comment. + + * combine.c (make_extraction): Correct typo in force_to_mode + call in previous change. + Return 0 if pos+len out of range of want desired mode. + +Sat Mar 16 16:20:43 1996 David Mosberger-Tang + + * alpha.md (trap): New attribute. + Modify patterns for all floating-point trap generating instructions. + * alpha.h (CPP_SPEC): Added -mieee and -mieee-with-inexact. + (alpha_trap_precision, alpha_fp_rounding_mode, alpha_fp_trap_mode): + New enum types. + (target_flags, alpha_tp, alpha_fprm, alpha_fptm): New external vars. + (alpha_fprm_string, alpha_fptm_string, alpha_tp_string): Likewise. + (TARGET_IEEE{,_WITH_INEXACT,_CONFORMANT}): New macros. + (MASK_IEEE{,_WITH_INEXACT,_CONFORMANT}): Likewise. + (MASK_FP, MASK_FPREGS, + (TARGET_SWITCHES): Added "ieee-conformant", "ieee", and + "ieee-with-inexact"; use MASK symbols. + (TARGET_OPTIONS): New macro. + (OVERRIDE_OPTIONS, FINAL_PRESCAN_{INSN,LABEL}): New macros. + (PRINT_OPERAND_PUNCT_VALID_P): Allow operand codes for FP insns. + (CC1_SPEC): New macro. + * alpha.c (alpha_tp, alpha_fprm, alpha_fptm): New variables. + (alpha_tp_string, alpha_fprm_string, alpha_fptm_string + (trap_pending): Likewise. + (override_options, summarize_insn, final_prescan_insn): New functions. + (print_operand): Handle cases '&', '\'', ')', and '+'. + (output_prolog): Emit ".eflag 48" if TARGET_IEEE_CONFORMANT. + (output_epilog): Call final_prescan_insn before emitting epilog. + + * final.c (final_scan_insn, case CODE_LABEL): Invoke + FINAL_PRESCAN_INSN if FINAL_SCAN_LABEL is defined. + + * alpha/{linux.h,x-linux,xm-linux.h}: New files. + * configure (alpha-*-linux*): New case. + * alpha.c (output_prolog): Set alpha_function_needs_gp if profiling + and TARGET_PROFILING_NEEDS_GP defined. + +Thu Mar 14 22:28:20 1996 David Edelsohn + + * rs6000.h (LEGITIMATE_OFFSET_ADDRESS_P): Fix last change. + * aix41.h (LINK_SPEC): add -bnoentry if shared and no explicit entry. + +Thu Mar 14 12:47:33 1996 Jim Wilson + + * mips.h (ASM_OUTPUT_DOUBLE_INT): Use 'X' if CONST_INT and + HOST_BITS_PER_WIDE_INT == 64. + + * mips.c (mips_expand_prologue): Change TYPE_NEEDS_CONSTRUCTING to + TREE_ADDRESSABLE; + +Thu Mar 14 11:21:37 1996 Michael Meissner + + * rs6000.h (LEGITIMATE_OFFSET_ADDRESS_P): For 32-bit mode, + allow TImode variables with int offsets, so that structures + greater than 8 bytes and less than or equal to 16 bytes can be + instantiated correctly. + + * rs6000.c (rs6000_valid_type_attribute_p): Add exception + attribute for Windows NT. + + * win-nt.h (ASM_OUTPUT_FUNCTION_PREFIX): Delete, merge into + ASM_DECLARE_FUNCTION_NAME. + (ASM_DECLARE_FUNCTION_NAME): Add support for exception attribute + setting fields 3 & 4 of the structured exception handling table. + +Thu Mar 14 01:53:19 1996 Jeffrey A. Law + + * pa.h (ASM_DECLARE_FUNCTION_NAME): Change TYPE_NEEDS_CONSTRUCTING + to TREE_ADDRESSABLE. From Jim Wilson. + +Wed Mar 13 13:40:32 1996 Jim Wilson + + * c-tree.h (warn_sign_compare): Add extern to declaration. + +Wed Mar 13 13:37:00 1996 Doug Evans + + * configure: Use cross-make and build-make if building + cross compiler with cross compiler. + +Wed Mar 13 12:00:34 1996 Michael Meissner + + * i386/cygwin32.h (ASM_OUTPUT_ALIGN): Correct defination. + + * rs6000/{win-nt,cygwin32}.h (STARTFILE_SPEC): Add crti.o before + all objects. + (ENDFILE_SPEC): Add crtn.o after all objects. + + * configure (powerpcle-*-cygwin32): Use t-winnt, not t-cygin32 + * rs6000/t-cygwin32: Delete, no longer used. + + * rs6000/t-winnt ({,INSTALL_}LIBGCC): Build and install crti.o and + crtn.o. + + * rs6000/win-nt.h (EXTRA_SECTION_FUNCTIONS): Add ctors_section and + dtors_section. + (INVOKE__main): Define, so that __main is called. + (ASM_OUTPUT_{CONSTRUCTOR,DESTRUCTOR}): Define to put pointers to + the constructor/destructor in the appropriate section. + + * nt-c{i,n}.asm: New files to be linked before/after all of the users' + objects. + +Wed Mar 13 00:42:17 1996 Per Bothner + + * dbxout.c (dbxout_type): Better "variant" handling to ignore + const/volatile but not typedef names. Improves Feb 12 change. + +Tue Mar 12 17:25:14 1996 David Mosberger-Tang + + * glimits.h (__LONG_MAX__): On Alpha, use 64 bit value. + +Tue Mar 12 15:07:49 1996 Torbjorn Granlund + + * m68k.c (valid_dbcc_comparison_p): Don't test cc_prev_status here. + (flags_in_68881): New function. + * m68k.md (dbra peepholes): Use flags_in_68881. + +Tue Mar 12 13:54:15 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sparc.md (nonlocal_goto): Emit barrier after jump. + (setjmp{,_64,_32}): New patterns. + +Tue Mar 12 12:43:27 1996 Jim Wilson + + * i960/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 + + * recog.c (constrain_operands, case 'V'): Don't call + offsettable_memref_p before reload has completed. + +Mon Mar 11 16:06:13 1996 Doug Evans + + * h8300/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 + + * rs6000.h (CONST_DOUBLE_OK_FOR_LETTER_P): Add 'H' for movdi + patterns in 32 bit that generate 3 instructions. + (num_insns_constant): Add declaration. + + * rs6000.c (num_insns_constant{,_wide}) Functions to determine the + number of insns it takes to generate an integer constant. + (easy_fp_constant): Allow DImode in easy constants. Use + num_insns_constant_wide. + (input_operand): Allow any CONST_{INT,DOUBLE}'s for {SI,DI}mode. + + * rs6000.md (movdi): Generate a normal movdi using a CONST_DOUBLE + for 32 bit mode rather than using SUBREG's. For 64 bit mode, + break large integer constants into smaller pieces. Add various + define_splits to handle loading the various DImode constants. + +Mon Mar 11 06:54:19 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (make_extraction): Use proper mode for INNER in all cases. + (simplify_comparison, case ZERO_EXTRACT): For bits big endian and + no extzv, use BITS_PER_WORD. + * fx80.md, gmicro.md, i386.md, m68k.md, tahoe.md, vax.md: + Use proper modes and predicates for {sign,zero}_extract. + +Sun Mar 10 06:23:52 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * emit-rtl.c (free_insn): New variable. + (init_emit, restore_emit_status): Clear it. + (gen_sequence): Store insn in free_insn when sequence length is 1. + (make_insn_raw): Use free_insn if available and still in the + rtl generation phase. + +Fri Mar 8 15:37:31 1996 Mike Stump + + * expr.c (expand_expr, case TARGET_EXPR): Delay putting the cleanup + on the cleanup chain until after the subexpression has been expanded. + +Fri Mar 8 16:14:51 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * i386.c (ix86_binary_operator_ok): one memory operand is OK. + This is independent of commutativity. + +Fri Mar 8 14:07:43 1996 Jim Wilson + + * expr.c (store_constructor_field): Call store_field if bitpos is + nonzero and target is not a MEM. + + * jump.c (jump_optimize): When handle a USE insn before an + unconditional jump, disable the optimization if the USE is the + only insn in the loop. + + * sh.c (reg_unused_after): Return 0 if see a JUMP_INSN. + +Fri Mar 8 12:08:36 1996 Doug Evans + + * sparc/lynx.h (CPP_SPEC): Use %(cpp_cpu). + + * sparc/sparc.md (move_pic_label_si,move_label_di): Rewrite length + attr calcs to be more conservative. + +Thu Mar 7 19:14:21 1996 Doug Evans + + * sparc/t-splet: New file. + * sparc/splet.h: New file. + * configure (sparclet-*-aout*): Use them. + + * sparc/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 + + * sh.h (PASS_IN_REG_P): Change < to <=. + * va-sh.h (va_start): Change __SH3E___ to __SH3E__. + (va_arg): Add little-endian SH3E support. Fix big-endian version + to work for arguments smaller than the word size. + +Thu Mar 7 10:37:37 1996 Jeffrey A. Law + + * lib2funcs.asm: Remove entry/exit routines. Move them into... + * ee.asm: New file. Entry/exit code. + * ee_fp.asm: New file. Entry/exit code with frame pointer. + * t-pa: Corresponding changes. + * t-pro: Corresponding changes. + + * pa.c: Fix misc small typos/thinkos in recent changes. + +Wed Mar 6 17:36:03 1996 Jason Merrill + + * cplus-dem.c (demangle_template): Fix for address-of-extern arguments. + +Wed Mar 6 15:12:55 1996 Jeffrey A. Law + + * t-pro (dp-bit rule): Fix typo. + + * lib2funcs.asm (__outline_prologue): Remove frame pointer + support. + (__outline_prologue_fp): Out of line prologue with frame pointer. + (__outline_epilogue, outline_epilogue_fp): Similarly. + * pa.c (compute_frame_size): Allocate enough space to avoid holes + in the callee register saves. Remove some special handling of %r3. + (hppa_expand_prologue): Don't do an out of line prologue/epilogue + if it would take more insns than an inline prologue/epilogue. + Don't leave holes in the callee register save set. + (hppa_expand_prologue): Corresponding changes. Pass stack size + to out of line epilogue code. + * pa.h (FRAME_POINTER_REQUIRED): Revert last change. + * pa.md (outline_prologue_call): Handle outline prologues which + don't need frame pointers. + (outline_epilogue_call): Similarly. + * t-pro: Reenable multilib code. Build a set of libraries that + optimize for space. + +Wed Mar 6 14:28:14 1996 Jim Wilson + + * Makefile.in (USER_H): Add ginclude/va-sh.h. + * ginclude/stdarg.h, ginclude/varargs.h: Use va-sh.h. + * ginclude/va-sh.h: New file. + + * sh.h (PASS_IN_REG_P): Fix typo in last change. + +Wed Mar 6 11:42:06 1996 David Edelsohn + + * rs6000.h (enum processor_type): Remove PROCESSOR_PPC602. + (RTX_COSTS): Remove PROCESSOR_PPC602. PPC603 MULT cost depends + on constant and domain. + * rs6000.c (processor_target_table): 602 uses PROCESSOR_PPC603. + (get_issue_rate): Remove CPU_PPC602. + * rs6000.md (function units): Remove PPC602. Add store and + fpstore type attribute values. Update patterns. + +Tue Mar 5 18:43:43 1996 Richard Henderson + + * m68k/coff.h (ASM_OUTPUT_SECTION_NAME): New define. + + * m68k/{aux-crt1.c,aux-crt[2n].asm}: New files. + * m68k/{aux-exit.c,aux-low.gld,aux-mcount.c}: More new files. + * m68k/{aux.h,auxgnu.h,auxstd.h}: Even more new files. + * m68k/{t-aux,xm-aux.h}: The rest of the new files. + * m68k/sgs.h (ASM_OUTPUT_CASE_END): Add missing semicolon. + (switch_table_difference_label_flag): Make extern. + * fixincludes (sys/param.h): Fix c89 __asm statements. + * configure (m68k-apple-aux*): New target. + +Tue Mar 5 17:38:19 1996 Doug Evans + + * sparc.md (*mov{qi,hi,si}_insn): Simplify length attribute. + (*movsi_insn): Use fpload/fpstore attributes for fp loads/stores. + %r1 -> %1 for fpstore alternative. + (*movsf_insn,*movsf_no_f_insn): %r1 -> %1. + +Tue Mar 5 17:19:17 1996 Jason Merrill + + * expr.c (expand_expr, case *_DECL): If we make a non-local + reference from a function with DECL_NO_STATIC_CHAIN set, abort. + (expand_expr, case ADDR_EXPR): We don't need a trampoline for a + function with DECL_NO_STATIC_CHAIN set. + * function.c (lookup_static_chain): If we're checking on a function + that doesn't need a static chain, return 0. + (init_function_start): We don't need context if DECL_NO_STATIC_CHAIN + is set. + * tree.c (staticp): Check DECL_NO_STATIC_CHAIN on nested functions. + +Tue Mar 5 15:04:29 1996 Jim Wilson + + * sh.md (push_e, pop_e): Add TARGET_SH3E to condition. + * sh.h (JUMP_TABLES_IN_TEXT_SECTION): Define. + * sh.c (find_barrier): Set si_limit to 1018 instead of 1020, and + hi_limit to 510 instead of 512. + +Tue Mar 5 13:39:44 1996 Doug Evans + + * loop.c (init_loop): Use pseudo reg in add_cost computation + so cost doesn't vary depending on whether reg 0 happens to be + fixed or not. + +Tue Mar 5 09:32:24 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * reg-stack.c (record_label_references): Check for undefined label. + +Tue Mar 5 09:22:20 1996 Scott Christley (scottc@net-community.com) + + * objc/objc-api.h, objc/runtime.h: Include objc/thread.h. + * objc/class.c (__objc_init_class_tables): Surround sarray access + with mutex lock/unlock. + (__objc_add_class_to_hash, objc_lookup_class): Likewise. + (objc_get_class, objc_get_next_class): Likewise. + (__objc_resolve_class_links, class_pose_as): Likewise. + * objc/init.c (__objc_runtime_mutux, __objc_runtime_thread_alive): + New variables. + (objc_init_statics, __objc_init_protocols): Surround sarray access + with mutex lock/unlock + (__objc_exec_class): Likewise. + Initialization for thread-safe global variables. + Declarations for thread-safe functions and global variables + * objc/sendmsg.c (get_imp, __objc_responds_to): + Surround sarray access with mutex lock/unlock. + (__objc_init_install_dtable): Likewise. + (__objc_update_dispatch_table_for_class): Likewise. + (__objc_print_dtable_stats): Likewise. + * objc/selector.c (sel_get_typed_uid, sel_get_any_typed_uid): Likewise. + (sel_get_any_uid, sel_get_name, sel_register_name): Likewise. + (sel_register_typed_name): Likewise. + * objc/sarray.h (union sversion): New. + (struct sarray): Maintain multiple versions. + (sarray_remove_garbage): Add prototype. + * objc/sarray.c (sarray_{remove,free}_garbage): New functions. + (sarray_at_put, sarray_new, sarray_lazy_copy): + Modify/copy sarray structure/data in a thread-safe manner + (sarray_{realloc,free}): Reallocate/free sarray structure/data in a + thread-safe manner. + + * objc/THREADS, objc/thread.c, objc/thread.h: New files. + * objc/thread-{decosf1,irix,solaris,win32,single}.c: New files. + * objc/objc-list.h: Renamed from objc/list.h. + * objc/Makefile: Changes to compile new files and name renaming. + * objc/makefile.dos: Likewise. + +Tue Mar 5 07:51:31 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * bc-emit.c, bc-optab.c (free): Delete declaration of library function. + + * c-decl.c (duplicate_decl): If making decl non-external, copy + context from old to new. + +Tue Mar 5 02:27:35 1996 Jeffrey A. Law + + * sparc.md (*cmp{si,di}_insn): %r0 -> %0. + (DFmode move define_split): Ensure registers not extended v9 fp regs. + (*mov{sf,df,tf}_cc_reg_sp64): %r3 -> %3. + +Mon Mar 4 18:46:37 1996 Manfred Hollstein + + * Makefile.in (CRT0STUFF_T_CFLAGS): New macro. + (stamp-crt0, crt0.o, mcrt0.o): New goals. + (STAGESTUFF): stamp-crt0 added. + + * collect2.c (main): Check new define DEFAULT_A_OUT_NAME. + + * m68k.c (print_operand): Emit .l as scale factor #ifdef MOTOROLA. + * m68k/mot3300-crt0.S, m68k/mot3300Mcrt0.S: New files. + * m68k/mot3300g.h: Deleted. + * m68k/mot3300.h (FUNCTION_PROFILER): Emit label references + corresponding to those generated by ASM_OUTPUT_INTERNAL_LABEL. + (MOTOROLA, MOTOROLA_BSR, ...): Define #ifndef USE_GAS. + (ASM_SPEC): Define properly #ifdef USE_GAS. + (LIB_SPEC): -L/usr/lib/libp deleted. + (STARTFILE_SPEC): -L/usr/lib/libp added. + (DEFAULT_A_OUT_NAME): Define. + (LINK_SPEC): Pass -v if GNU ld is used. + (LOCAL_LABEL_PREFIX): Local labels start with .L using GAS, else L%. + (USER_LABEL_PREFIX): Undefine. + (FUNCTION_PROFILER): Call asm_fprintf instead of normal fprintf. + (ASM_APP_ON, ASM_FILE_START): GAS supports it. + (CTORS_.../DTORS_...): Define if GNU ld is used. + (ASM_FILE_START): Define properly for Motorola and GNU as syntax. + (TARGET_VERSION): Re-define only #ifndef USE_GAS. + (CALL_USED_REGISTERS): Deleted. + (GLOBAL_ASM_OP): Re-define only #ifndef USE_GAS. + (ASM_{LONG,SHORT,CHAR,BYTE,BYTE_OP}): New macros. + (ASM_OUTPUT_{DOUBLE,LONG_DOUBLE,FLOAT,INT,SHORT}): Use them. + (ASM_OUTPUT_{CHAR,BYTE,ASCII,FLOAT_OPERAND,DOUBLE_OPERAND}): Likewise. + (ALIGN_ASM_OP, SKIP_ASM_OP): New macros. + (ASM_OUTPUT_{ALIGN,SKIP}): Use them. + (ASM_OUTPUT_SOURCE_FILENAME): Define only if not using GNU as. + (ASM_{GENERATE,OUTPUT}_INTERAL_LABEL): Provide proper definitions for + Motorola and GNU as syntax. + (ASM_OUTPUT_ADDR_{VEC,DIFF}_ELT): Changed for portability between + Motorola and GNU as syntax. + (ASM_OUTPUT_{CASE_LABEL,OPCODE}): Define only if not using GNU as. + (ASM_OUTPUT_CASE_FETCH, ASM_RETURN_CASE_JUMP): New macros. + (ASM_OUTPUT_{COMMON,LOCAL}): Proper defns for Motorola and gas syntax. + (SDB_...): Define only for Motorola as. + (ALT_LIBM): New define to tell g++.c about an alternative name for + `-lm'. + (MATH_LIBRARY, NEED_ATEXIT, HAVE_ATEXIT, EXIT_BODY): New macros. + * m68k/t-mot3300, m68k/t-mot3300-{gald,gas,gld}: New files. + * m68k/x-mot3300-gas: New file. + * m68k/xm-mot3300.h (USG): Set to 1. + * configure (m68k-motorola-sysv*): Keep track of new different + combinations (--with-gnu-...), and provide proper definitions for + tm_file, xmake_file, tmake_file, use_collect2, and extra_parts. + + * gbl-ctors.h (HAVE_ATEXIT): Define if NEED_ATEXIT is defined. + (atexit): Use `int atexit' prototype also if NEED_ATEXIT is defined. + (on_exit): According to man on_exit on the Sun it returns int not void. + * libgcc2.c (L_bb/atexit, onexit): Declarations replaced by + #include'ing "gbl-ctors.h". + (L_exit/atexit): New function. + (L_exit/exit): Call any registered functions. + +Mon Mar 4 18:03:38 1996 Bryan Ford (baford@cs.utah.edu) + + * configure (i[3456]86-moss-msdos*): New target. + * i386/moss.h: New file. + +Mon Mar 4 17:38:50 1996 Jim Wilson + + * sh.h (PASS_IN_REG_P): Don't reject BLKmode for SH3e. + For SH3e, do reject parameter that won't fit entirely in registers. + + * sh.md (mulhisi3-2, mulhisi3-1, mulsidi3_i, umulsidi3_i, + smulsi3_highpart, umulsi3_highpart): Renames operands 1/2 to 0/1. + (mulsidi3, umulsidi3): Add support for TARGET_LITTLE_ENDIAN. + + * sh.c (machine_dependent_reorg): In TARGET_RELAX code, when scan + forward from LINK, fail if pass a CODE_LABEL before finding INSN. + Fail if SCAN not INSN is a JUMP_INSN. + +Mon Mar 4 11:27:10 1996 Michael Meissner + + * rs6000.h (CALL_LONG): Change CALL_xx values from an enumeration + to bitmasks. Add CALL_LONG to support longcall attributes. + (rs6000_args): Call_cookie field is now an int. + (rs6000_longcall_ref): Add declaration. + + * rs6000.c (init_cumulative_args): Add support for longcall + attributes to always call through a pointer. + (function_arg): Ditto. + (rs6000_valid_type_attribute_p): Ditto. + (rs6000_longcall_ref): New function for long calls. + + * rs6000.md (call insns): Add support for longcall attributes. + +Mon Mar 4 08:42:14 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * real.c (significand_size): Don't test the modes, but their sizes. + + * dwarfout.c (xstrdup): Moved from here. + * toplev.c (xstrdup): New function. + * tree.h (xstrdup): Declare. + * bc-emit.c (bc_xstrdup): Delete. + * expr.c (bc_strdup): Delete. + (bc_load_externaddr_id): Use xstrdup instead of bc_xstrdup. + * function.c (bc_expand_function_start): Likewise. + * 1750a.c (strdup): Delete. + (float_label): Use xstrdup instead of strdup. + * 1750a.h (xstrdup): Declare instead of instead of strdup. + (ASM_OUTPUT_LABEL): Use xstrdup instead of strdup. + (FIX_FRAME_POINTER_ADDRESS): Don't use DEPTH in string. + +Mon Mar 4 08:23:23 1996 Richard Kenner + + * xm-we32k.h (NO_WAIT_H): Deleted. + + * collect2.c: Never include wait.h. + +Sat Mar 2 22:43:07 1996 Torbjorn Granlund + + * configure (code for making links): Work around sh bug on FreeBSD. + +Sat Mar 2 13:40:29 1996 Jeffrey A. Law + + * h8300.h (BIGGEST_FIELD_ALIGNMENT): Replace uses of + TARGET_ALIGN_STRUCT_300 with TARGET_ALIGN_300. + (BIGGEST_ALIGNMENT): Likewise. + +Sat Mar 2 08:04:50 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * calls.c (expand_call): If passing by invisible ref, not const. + + * sparc.c (SKIP_CALLERS_UNIMP_P): Make agree with test used in call. + + * expr.c (do_jump, case COMPOUND_EXPR): Call preserve_temp_slots. + + * fold-const.c (fold, case *_DIV_EXPR): Ignore SAVE_EXPR if has RTL. + +Fri Mar 1 17:59:17 1996 Jeffrey A. Law + + * optabs.c (emit_cmp_insn): Immediately copy the return + value from the library call into a pseudo register. + (emit_float_lib_cmp): Likewise. + +Fri Mar 1 14:37:40 1996 Michael Meissner + + * rs6000/sysv4.h (BSS_SECTION_ASM_OP): Define. + (*_SECTION_ASM_OP): Change tab after .section into a space. + (ASM_OUTPUT_INT): Ditto. + (ASM_OUTPUT_ALIGNED_LOCAL): Rewrite to use bss_section. + (ASM_OUTPUT_ALIGNED_BSS): Define to use ASM_GLOBALIZE_LABEL and + ASM_OUTPUT_ALIGNED_LOCAL. + + * rs6000/win-nt.h (BSS_SECTION_ASM_OP): Define. + (ASM_OUTPUT_ALIGNED_LOCAL): Define. + (ASM_OUTPUT_LOCAL): Don't define any more. + (ASM_OUTPUT_ALIGNED_BSS): Define to use ASM_GLOBALIZE_LABEL and + ASM_OUTPUT_ALIGNED_LOCAL. + +Thu Feb 29 17:33:12 1996 Jim Wilson + + * c-typeck.c (push_init_level): When output padding to align structure + field, set constructor_unfilled_fields. + + * dbxout.c (dbxout_type, case METHOD_TYPE): Add CHARS (1) call + after emitting second '#' character. + +Thu Feb 29 13:59:27 1996 Doug Evans + + * h8300/h8300.h (ASM_OUTPUT_BSS): Define. + * m68k/coff.h (BSS_SECTION_ASM_OP): Define. + (ASM_OUTPUT_ALIGNED_BSS): Define. + * m68k/m68k-aout.h (BSS_SECTION_ASM_OP): Define. + (ASM_OUTPUT_BSS): Define. + +Thu Feb 29 13:39:39 1996 Per Bothner + + * varasm.c (compare_constant_1): For a SET_TYPE CONSTRUCTOR, + first extract and compare the set length. + + * varasm.c (record_constant_1): For SET_TYPE CONSTRUCTOR, + permanent_obstack.next_free is *end* of available space. + +Thu Feb 29 13:14:14 1996 Jeffrey A. Law + + * pa.h (TARGET_SWITCHES): Add new flags "-mlong-load-store" and + "-mno-long-load-store". + (TARGET_LONG_LOAD_STORE): Define. + * pa.md (symbolic high part): Handle TARGET_LONG_LOAD_STORE. + +Thu Feb 29 11:39:30 1996 Stan Cox + + * i386/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 + + * 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 + + * sh.h (FUNCTION_VALUE_REGNO_P, FUNCTION_ARG_REGNO_P): Include FP + registers only when TARGET_SH3E. + (PASS_IN_REG_P): Exclude BLKmode only when ! TARGET_SH3E. + +Wed Feb 28 12:03:26 1996 Michael Meissner + + * rs6000.c (rs6000_trampoline_{template,size}): Change 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 + + * rs6000.c (print_operand): New code 'H'. + * rs6000.md (insv, extzv): Add DImode patterns. Use 'h' + consistently for masking SImode shifts. + (rotldi3, ashldi3, lshrdi3, ashrdi3): Use 'H'. + (movsf split): Generate CONST_INT instead of SUBREG. + +Tue Feb 27 15:02:17 1996 Doug Evans + + * sh/sh.h (HANDLE_PRAGMA): Delete `return'. + +Tue Feb 27 08:18:12 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.c (aof_text_section): Remove pseudo read-only hack. Doesn't + take a parameter any more. + * arm/aof.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Remove + readonly data sections. + (READONLYDATA_SECTION, READONLY_DATA_SECTION): Delete. + + * arm.h (enum arm_cond_code): New enum. + (ARM_INVERSE_CONDITION_CODE): Moved here from arm.c. + (SELECT_CC_MODE): Call arm_select_cc_mode to do the work. + (PREDICATE_CODES): Add dominant_cc_register; delete + reversible_cc_register. + * arm.c (arm_current_cc): Now an enum. + (ARM_INVERSE_CONDITION_CODE): Moved to arm.h + (revsersible_cc_register): Delete. + (dominant_cc_register): New function. + (select_dominance_cc_mode): New function. + (arm_select_cc_mode): New function. + (output_return_instruction): New parameter REVERSE, used to + reverse the condition of a conditional return. All callers + changed. + (arm_print_operand case 'D'): Only suppress condition printing + if the operand is a NULL pointer. + (get_arm_condition_code): Now a static function returning + enum arm_cond_code. Handle dominance expressions. Return enum + values rather than integers. + * arm.md (*addsi3_compare0_scratch): New insn. + (*movsi_compare0, *cmpsi_insn, *cmpsi_shiftsi): Make sure the + compare has mode CC. + (cmp{si,sf,df,xf} expands): Just provide sufficient information + to allow the parameters to be matched properly. + (*cmpsi_negsi): Delete (of dubious validity). + (*cmpsi_shiftsi_swp): New pattern. + (*condbranch_reversed): No longer needs to check REVERSIBLE_CC_MODE. + (mov{si,sf,df}cc, *mov{si,sf,df}{,_hard,_soft}_insn): The mode of the + IF_THEN_ELSE must be appropriate to the target (not void). + (*and_scc): Match cc_register, not reversible_cc_register. + (*ior_compare_compare): Delete. + (split for ior_compare_compare + condjump): Delete. + (*impossible_cond_compare): Delete. + (*condition_compare_ior): Delete. + (*cond_move): Mode for the IF_THEN_ELSE must be SImode. + (*and_scc_scc): Delete. + (split for and_scc_scc + condjump): Delete. + (*impossible_cond_branch_and): Delete. + (*cmp_ite0, *cmp_ite1): New patterns. + (if_compare_not): Should be an anonymous pattern. + (Peephole for move and compare): Compare mode must be mode CCmode. + (Split pattern for comparing shifted reg then branch): Delete. + (*loadqi_compare): Delete, replaced with a split pattern to do + the same thing. + (*cond_move_not): Match cc_register, not reversible_cc_register. + + * arm.c ({load,store}_multiple_sequence): New functions. + (emit_{ldm,stm}_seq): New functions. + * arm.md (load/store multiple peepholes): Rewrite using the above + functions. + (all patterns taking immediate_operand): If the code later assumes + this is a CONST_INT, then match const_int_operand instead. + +Mon Feb 26 17:26:13 1996 Doug Evans + + * sparc/sparc.md: Add sparclet scheduling parameters. + (compare define_insn's): Move closer to compare define_expand's. + (32 bit multiply patterns): Use for TARGET_SPARCLET. + (*smacsi,*smacdi,*umacdi): Multiply/accumulate patterns for the + sparclet. + +Sat Feb 24 19:13:29 1996 David Edelsohn + + * rs6000.md (movsf split): Fix typo in last patch. + +Sat Feb 24 10:02:55 1996 Michael Meissner + + * toplev.c (fatal_insn): Flush stdout/stderr. + +Sat Feb 24 02:03:28 1996 Jeffrey A. Law + + * pa.md (abssi2): Rework to avoid matching constraints. + +Fri Feb 23 11:21:43 1996 Jeffrey A. Law + + * pa.c (override_options): Warn if both PIC code generation and + profiling are requested. + +Fri Feb 23 08:47:38 1996 Richard Kenner (kenner at vlsi1) + + * expr.c (expand_builtin, case BUILT_IN_SETJMP): Set CONST_CALL_P + on NOTE_INSN_SETJMP instead of emitting USE insns for call-saved regs. + * reload1.c (reload): For special CONST_CALL_P NOTE_INSN_SETJMP, + mark all call-saved regs as used. + * sched.c (sched_analyze): Record NOTE_INSN_SETJMP if no + CALL_INSN as prev; preserve CONST_CALL_P bit. + (reemit_notes): Restore CONST_CALL_P. + +Thu Feb 22 17:45:12 1996 Doug Evans + + * configure (sparclet-*-aout*): Set extra_headers. + * ginclude/inl-sparc.h: New file. + +Wed Feb 21 20:39:53 1996 Doug Evans + + * configure (sparc64-*-solaris2*): Merge with sparc-*-solaris2*. + * sparc/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 + + * cplus-dem.c (demangle_template): Initialize is_bool. Correctly + handle 0 as a pointer value parameter. + +Wed Feb 21 14:13:29 1996 Jason Merrill + + * tree.c (decl_function_context): Do decl_function_context right for + function-local classes. + +Wed Feb 21 12:42:52 1996 Jeffrey A. Law + + * c-typeck.c (initializer_constant_valid_p): Don't dereference + a null pointer on partial structure initialization. + +Wed Feb 21 11:49:58 1996 David Edelsohn + + * rs6000/rs6000.h (ASM_OUTPUT_EXTERNAL): Append section info + even when verbatim symbol prefix '*' present. + * rs6000/aix3newas.h (ASM_OUTPUT_EXTERNAL): Same. + * rs6000/aix41.h (ASM_OUTPUT_EXTERNAL): Same. + * rs6000/powerpc.h (ASM_OUTPUT_EXTERNAL): Same. + * rs6000/win-nt.h (ASM_OUTPUT_EXTERNAL): Same. + +Wed Feb 21 03:55:32 1996 Paul Eggert + + * cccp.c (validate_else): Don't loop given `#endif /'. + Handle multiple adjacent backslash-newlines correctly. + Accept a new parameter LIMIT to specify end of input; + this prevents confusion when the input contains '\0' characters. + + (collect_expansion): Fix off-by-1 error when searching for `*/' + at end of a comment used for traditional token concatenation. + + (macarg1): Fix off-by-1 error when skipping past `*/' + at end of comment. + +Tue Feb 20 16:12:31 1996 Doug Evans + + * hard-reg-set.h (twice unrolled GO_IF_HARD_REG_EQUAL): Add missing \. + +Tue Feb 20 14:21:16 1996 Jeffrey A. Law + + * pa.h (DBX_CONTIN_LENGTH): Define to 4000 characters. + + * pa.c (hppa_expand_epilogue): Always emit a blockage insn + before cutting back the stack. + +Mon Feb 19 19:42:15 1996 Brendan Kehoe + + * sparc/sparc.h (TARGET_SWITCHES): Add -m{,no-}impure-text. + (MASK_IMPURE_TEXT, TARGET_IMPURE_TEXT): Define. + (LINK_SPEC): Only add `-assert pure-text' if -mimpure-text wasn't used. + +Mon Feb 19 19:20:15 1996 Doug Evans + + * configure (sparc-aout): sparc-aout.h renamed to aout.h. + (sparclet-aout): Likewise. + (sparclite-*-aout*): Renamed from sparclite-*-*. + Don't set use_collect2. + (target_cpu_default): Set to TARGET_CPU_ for sparc. + + * sparc/sparc.h (TARGET_CPU_sparc{,let,lite,64}): Define. + ({CPP,ASM}_DEFAULT_SPEC): Set from TARGET_CPU_foo. + (SPARC_ARCH64 CPP_PREDEFINES): Define __arch64__. + (CPP_SPEC): Add %(cpp_cpu). + (CPP_CPU_SPEC): Define. + (CC1_SPEC): Convert -m to -mcpu=. + (ASM_SPEC): Add %(asm_cpu). + (ASM_CPU_SPEC): Define. + (EXTRA_SPECS,SUBTARGET_EXTRA_SPECS): Define. + (OVERRIDE_OPTIONS): Call SUBTARGET_OVERRIDE_OPTIONS after + sparc_override_options. + ({MASK,TARGET}_SUPERSPARC): Delete. + ({MASK,TARGET}_SPARCLET): Define. + (MASK_ISA): Renamed from MASK_CPUS. + (TARGET_SWITCHES): Delete no-{v8,sparclite}. + (sparc_cpu,sparc_cpu_string): Declare. + ({SUB,}TARGET_OPTIONS): Define. + (FIXED_REGISTERS): Add definitions for sparc64 in 32 bit mode. + (CONDITIONAL_REGISTER_USAGE): Don't set fixed_regs[234] if sparc64. + Don't set call_used_regs[48..80] for sparc64 in 32 bit mode. + Don't clobber fixed_regs[234] if -ffixed- was passed. + (ADJUST_COST): Change test for supersparc. + * sparc/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 + + * rs6000.md (movsf split): Use SUBREG not operand_subword. + (movdf split): operand_subword TARGET_32BIT and new split using + SUBREG for TARGET_64BIT. + * rs6000.c (easy_fp_constant): Rewrite to not use operand_subword. + (input_operand): Remove final add_operand test made irrelevant by + Dec. 8 change. + (output_toc): Handle DImode values. + +Mon Feb 19 13:38:00 1996 Lee Iverson + + * i386/sol2.h (SWITCH_TAKES_ARG): Restore -R. + * sparc/sol2.h (SWITCH_TAKES_ARG): Likewise. + +Mon Feb 19 08:19:00 1996 Michael Meissner + + * hard-reg-set.h (HARD_REG macros): If 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 + + * rs6000.md (not:SI with assign and compare): Fix typo. + * (not:DI with assign and compare): Likewise. + +Mon Feb 19 07:17:25 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sparc.md (nonlocal_goto): No longer need USE of %o0. + (goto_handler_and_restore): Show uses %o0. + + * combine.c (force_to_mode, case IOR): Fix typo in commuting + IOR and LSHIFTRT. + + * alpha.c (call_operand): If in REG, only reg 27 valid. + +Mon Feb 19 06:57:34 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * emit-rtl.c (operand_subword): For 32-bit targets, return + the appropriate subword of extended precision CONST_DOUBLEs. + + * arm.c (offsettable_memory_operand): New function. + (alignable_memory_operand): New function. + (gen_rotated_half_load): New function. + (get_arm_condition_code): Extract the mode of the comparison and + use it to generate the correct return value. + * arm.h (EXTRA_CC_MODES, EXTRA_CC_NAMES): Add CC_Zmode. + (SELECT_CC_MODE): return CC_Zmode if the operand is QImode. Allow LT + and GE comparisons in CC_NOOVmode. + (PREDICATE_CODES): add offsettable_memory_operand and + alignable_memory_operand. + * arm.md (*zeroextract[qs]i_compare0_scratch): Use const_int_operand + for operands 1 and 2. + (split patterns for aligned memory half-word operations): New patterns. + (movhi): Handle memory accesses where the alignment is known in a more + efficient manner. + (*compareqi_eq0): Use CC_Zmode. + +Mon Feb 19 05:34:08 1996 Jason Merrill + + * toplev.c (lang_options): Add -W{no-,}sign-compare. + + * c-tree.h: Declare warn_sign_compare. + + * c-typeck.c (build_binary_op): Check warn_sign_compare rather + than extra_warnings to decide whether to warn about comparison of + signed and unsigned. + + * c-decl.c (c_decode_option): Handle warn_sign_compare. -Wall + implies -Wsign-compare. + +Sun Feb 18 21:13:44 1996 Pat Rankin (rankin@eql.caltech.edu) + + * c-lex.c (yylex, case '0'..'9','.'): For cases '0' and '1', + check for single digit constant before resorting to general + number processing. + +Sun Feb 18 19:29:44 1996 J.T. Conklin + + * m68k.h (TARGET_68060): New macro. + (TARGET_SWITCHES): Add -m68060. + * m68k.md (const_umulsi3_highpart): Disable for TARGET_M68060. + (ftruncdf2, ftruncsf2, muldf3, mulsidi3): Likewise. + (smulsi3_highpart, umulsi3_highpart, umulsidi3): Likewise. + + * {m68k,ns32k,sparc}/netbsd.h (DBX_NO_XREFS): Removed. + +Sun Feb 18 13:29:56 1996 Charles M. Hannum (mycroft@netbsd.org) + + * c-common.c (check_format_info): Warn about `L' if -pedantic. + +Fri Feb 16 20:13:23 1996 Paul Eggert + + * c-typeck.c (convert_for_assignment): + Bring back conversion to union without a cast, + undoing the Jan 16 change, but with the following differences: + + - The union must have the transparent_union attribute. + - The conversion must be for a function argument. + - Warn consistently about such conversions if pedantic. + - Do not warn about an assignment incompatibility for one union member + if another union member is compatible with no warning. + +Fri Feb 16 12:06:21 1996 Stan Cox + + * i386.c (ix86_*_binary_operator*): Allow CONST_INT as operand1 + of MINUS. + * i386/dgux.h (OPTIMIZATION_OPTIONS): Call optimization_options. + +Fri Feb 16 08:39:47 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure: Change stdout report when have multiple files in + tm_file, host_xm_file, or build_xm_file. + (a29k-*-bsd): Use both a29k.h and unix.h. + (a29k-*-udi): Rename a29k-udi.h to udi.h; + use a29k.h, dbxcoff.h, and it. + (a29k-*-vxworks): Use a29k.h, dbxcoff.h, a29k/udi.h, and a29k/vx29k.h. + (alpha-dec-osf[23456789]*): Use alpha.h, not osf2.h. + (alpha-dec-osf1.2): Use alpha.h and alpha/osf12.h. + (alpha-*-osf*): Add explicit assignment of tm_file. + * a29k/udi.h: Renamed from a29k-udi.h. + Don't include a29k.h or dbxcoff.h. + * a29k/unix.h: Don't include a29k.h. + * a29k/vx29k.h: Don't include a29k-udi.h. + * alpha.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int. + * alpha/osf2.h: Deleted. + * alpha/osf12.h: Don't include alpha.h. + (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use short unsigned int. + * alpha/win-nt.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use short unsigned int. + +Thu Feb 15 18:26:04 1996 Michael Meissner + + * rs6000/ntstack.asm (__allocate_stack): Round up length to 16 + byte boundary. + + * rs6000.md (allocate_stack): On Windows NT, call set_sp to + indicate to CSE that the stack pointer changes with the call to + __allocate_stack. + (set_sp): New pattern. + +Thu Feb 15 16:49:15 1996 Jim Wilson + + * integrate.c (save_for_inline_copying): Allocate reg_map with size + based on regno_pointer_flag_length instead of max_reg+1. + +Thu Feb 15 07:48:34 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fixincludes (rpc/types.h): Remove spurious "ls" command. + + * reload1.c (eliminate_regs, case USE): If using a register that + is source of elimination, show can't be eliminated. + + * expr.c (expand_builtin, case BUILT_IN_SETJMP): Shows clobbers FP + and all caller-save registers. + Set current_function_has_nonlocal_goto. + +Wed Feb 14 13:51:55 1996 David Edelsohn + + * rs6000.md (fix_truncdfsi2): Use SUBREG not operand_subword. + (movdi): Test HOST_BITS_PER_WIDE_INT at build time. + * collect2.c (scan_libraries): Append '/' to import path if missing. + +Wed Feb 14 09:01:55 1996 Michael Meissner + + * rs6000.md (movdi): Use HOST_WIDE_INT, not long long. + +Tue Feb 13 19:36:21 1996 Per Bothner + + * expr.c (store_constructor): Fix flow control thinko (merge error). + * expr.c (store_constructor): Pass correct value to recursive call. + +Wed Jan 31 11:34:45 1996 Mike Stump + + * expr.c (expand_expr, case TARGET_EXPR): We must always store + into the allocated slot for TAREGT_EXPRs. + +Tue Feb 13 18:27:05 1996 Philippe De Muyter + + * configure (powerpc-ibm-aix3): Look for 3.2.x, not 3.2x. + + * fixincludes (memory.h): Fix it also on sysV68. + +Tue Feb 13 17:59:03 1996 Lee Iverson + + * gcc.c (DEFAULT_SWITCH_TAKES_ARG): New macro, from SWITCH_TAKES_ARG. + (SWITCH_TAKES_ARG): Use it. + * i386/{osfrose,sol2}.h (SWITCH_TAKES_ARG): Likewise. + * mips/{gnu,mips}.h (SWITCH_TAKES_ARG): Likewise. + * sparc/sol2.h (SWITCH_TAKES_ARG): Likewise. + * config/svr4.h (SWITCH_TAKES_ARG): Likewise. + +Tue Feb 13 17:43:46 1996 Jim Wilson + + * integrate.c (save_constants_in_decl_trees): New function. + (save_for_inline_copying, save_for_inline_nocopy): Call it. + +Tue Feb 13 17:40:27 1996 Richard Kenner + + * expr.c (convert_move): Fix typo in extendqfh2 case. + + * reload1.c (reload): Make some non-group code no longer + conditional on SMALL_REGISTER_CLASSES. + +Tue Feb 13 17:30:45 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * pdp11.c: #include flags.h + (output_function_prologue, function_epilogue): Remove declarations + of call_used_regs and frame_pointer_needed. + + * c-common.c (overflow_warning): Fix typo in warning message. + + * c-decl.c (finish_decl): TREE_ASM_WRITTEN says if duplicate_decls + modified declaration to match an outside file scope declaration. + + * stmt.c (expand_end_case): Don't use ADDR_DIFF_VEC for PIC if + ASM_OUTPUT_ADDR_DIFF_ELT is not defined. + * a29k.h, romp.h (ASM_OUTPUT_ADDR_DIFF_ELT): Remove. + +Tue Feb 13 13:36:36 1996 Michael Meissner + + * rs6000/cygwin32.h (CPP_PREDEFINES): Do not define PPC, just + define __PPC__. Also define _ARCH_PPC to be compatible with the + other rs6000/powerpc ports. + * rs6000/win-nt.h (CPP_PREDEFINES): Ditto. + + * rs6000/cygwin32.h (LIBGCC_SPEC): Don't define, always link in. + (SDB_DEBUGGING_INFO): Undef. + (DBX_DEBUGGING_INFO): Define. + (PREFERRED_DEBUGGING_TYPE): Define as DBX_DEBUG. + + * rs6000/t-{cygwin32,winnt} (MULTILIB*): Remove multilib support. + + * rs6000/x-cygwin32 (LANGUAGES): Delete, don't override. + + * rs6000/ntstack.asm: New file to provide __allocate_stack, which + guarantees all pages in a dynamically allocated stack frame are + touched in order, so that the stack is properly grown. + + * rs6000/cgywin32.asm: Delete unused file. + + * rs6000/t-{cygwin32,winnt} (LIB2FUNCS_EXTRA): Add ntstack.S + to libgcc2 build. + + * rs6000.md (allocate_stack): For NT, call __allocate_stack to + bump the stack if the size is large or variable. + + * libgcc1-test.c (mainCRTStartup,__start): New startup functions + to silence more linkers. + +Tue Feb 13 13:30:53 1996 Jim Wilson + + * expr.c (store_constructor_field): Only call change_address if + bitpos is nonzero. + +Tue Feb 13 08:21:01 1996 Fila Kolodny + + * i370/mvs.h (CPP_SPEC): Add '-trigraphs' because IBM's h files + contain them. + +Tue Feb 13 08:17:52 1996 Bernd Schmidt + + * c-typeck.c (quality_type prototype): Typo, rename as + qualify_type. + (build_binary_op): Fix precedence errors. + * combine.c (force_to_mode, num_sign_bit_copies, simplify_comparison): + Fix precedence errors. + * emit-rtl.c (gen_lowpart): Could return without a value. + * jump.c (jump_optimize): Fix potential infinite loop. + * reg-stack.c (record_reg_life_pat): Fix precedence error. + * reload1.c (emit_reload_insns): Fix precedence errors. + * stmt.c (bc_pushcase): Fix precedence error. + +Mon Feb 12 23:14:02 1996 Jason Merrill + + * toplev.c (rest_of_compilation): Also set RTX_INTEGRATED_P when + we aren't going to emit the inline just yet. + +Mon Feb 12 21:31:02 1996 Jim Wilson + + * rtl.h (INLINE_REGNO_POINTER_FLAG, INLINE_REGNO_POINTER_ALIGN): + Add one to array index. + +Mon Feb 12 20:55:39 1996 H.J. Lu (hjl@gnu.ai.mit.edu) + + * configure (i[345]86-*-linux*): Set tmake_file t-linux. + Add crtbeginS.o and crtendS.o to extra_parts. + * i386/linux.h (CC1, LIB_SPEC): Deleted. + * config/linux.h (STARTFILE_SPEC): Add crtbeginS.o if -shared. + (CC1_SPEC): New. + (LIB_SPEC): Remove %{mieee-fp:-lieee}; use -lc_p for -profile. + * config/t-linux: New file. + +Mon Feb 12 20:42:11 1996 Randy Smith + + * i386/x-osfrose (XCFLAGS{,_NODEBUG}): Remove $(SHLIB). + (XCFLAGS): New variable. + (libdir, mandir, bindir): Delete. + * i386/t-osf: New file. + * i860/paragon.h (STARTFILE_SPEC): Make gcc find crt0.o, not loader. + (LIB_SPEC): Remove /usr/lib. + * Makefile.in (TCFLAGS): New variable. + (GCC_CFLAGS): Add $(TCFLAGS). + (LIBGCC2_CFLAGS): Add -D for __GCC_FLOAT_NOT_NEEDED. + (libgcc1-test): Remove -nostdlib. + (float.h-cross): Don't give error #ifdef __GCC_FLOAT_NOT_NEEDED. + * enquire.c: Define __GCC_FLOAT_NOT_NEEEDED. + * configure (i[3456]86-*-osfrose): Add t-osf as tmake_file. + +Mon Feb 12 18:43:54 1996 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.c (add_1_to_mem): Corrected. + +Mon Feb 12 18:23:35 1996 Doug Evans + + * configure (sparclet-*-aout*): New configuration. + +Mon Feb 12 14:43:50 1996 Per Bothner + + Changes to distinguish typedef from original type in debug output. + * tree.h (DECL_ORIGINAL_TYPE): New macro. + * tree.c (copy_node): Zero out type.symtab union. + * c-decl.c (pushdecl): Set DECL_ORIGINAL_TYPE for typedef origin. + * dbxout,c (dbxout_type): Don't canonicalize typedef type to base. + +Mon Feb 12 12:01:16 1996 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm/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 + + * 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 + + * i386.md: Delete spurious integer subtract patterns. + Delete % from subtract operand constraints. + +Sun Feb 11 19:17:24 1996 Jeffrey A. Law + + * m68k.md (movqi): Call CC_STATUS_INIT when loading to/from + an address register via a data register. + +Sun Feb 11 08:44:49 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-common.c (check_format_info): Handle missing type in format + when terminated by a new `%'. + +Sat Feb 10 15:14:22 1996 J.T. Conklin + + * cross-make (STMP_FIXPROTO): Moved from here to build-make. + * build-make (STMP_FIXPROTO): Moved here from cross-make. + +Sat Feb 10 08:39:05 1996 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.md (movstrqi): Corrected. + (zero_extendqihi2): Taken out, let GCC synthesize. + (movhi-1): Added insn to move HImode small constant to memory. + (movhf-1): Added insn to move HFmode zero to memory. + (movtqf-1): Added insn to move TQFmode zero to memory. + (numerous insns): Taken out B (Base Reg with Index) mode. + + * 1750a.c (movcnt_regno_adjust): Corrected. + (mov_memory_operand, zero_operand): Added. + (b_mode_operand): Corrected. + (simple_memory_operand, add_1_to_mem): Added. + (print_operand_address): Corrected case of 'Q' output modifier. + + * 1750a.h (REG_ALLOC_ORDER): Changed back to natural order. + (CONST_DOUBLE_OK_FOR_LETTER_P): Added letter 'G'. + (EXIT_IGNORE_STACK): Set to 0. + (REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Use corresponding REGNO_OK. + (MOVE_MAX, MOVE_RATIO): Defined. + +Sat Feb 10 08:28:12 1996 Martin Anantharaman + + * configure (m68k-*-psos*): New configuration. + * psos.h: New file. + * m68k/m68k-psos.h: New file. + +Sat Feb 10 08:07:52 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sched.c (flush_pending_lists): Add new arg, ONLY_WRITE. + (sched_analyze_{1,2,insn}): Add new arg to flush_pending_lists. + (sched_analyze): Always flush pending write list for call, even const. + + * integrate.c (save_for_inline_copying): Put reg_map in function's + maybepermanent obstack instead of using alloca; set regno_reg_rtx + to it; delete recently-added copying of this later. + +Sat Feb 10 00:49:58 1996 Doug Evans + + * sched.c (add_dependence): Add test for next != CODE_LABEL. + +Fri Feb 9 16:10:04 1996 Stan Cox (coxs@dg-rtp.dg.com) + + * i386.md (fp, integer): Added function units for pentium. + (cmp*,mov*,add*,sub*,mul*,div*,extend*,trunc*,and*,ior*,xor*,neg*, + abs*,sqrt*,sin*,cos*,not*,ash*,lsh*,rot*,sub): Tightened constraints, + added attribute support, and made changes for new `binary' and + `unary' functions. + + * i386.c (processor_costs): New variable. + (optimization_options, ix86_expand_binary_operator, + ix86_binary_operator_ok, ix86_expand_unary_operator, + ix86_unary_operator_ok, is_mul, is_div, copy_all_rtx, rewrite_address, + last_to_set_cc, doesnt_st_condition_code, sets_condition_code, + str_immediate_operand, is_fp_insn, is_fp_dest, is_fp_store, + agi_dependent, reg_mentioned_in_mem): New functions. + + * i386/i386.h (OPTIMIZATION_OPTIONS, ALIGN_DFmode, IS_STACK_MODE, + IX86_EXPAND_BINARY_OPERATOR): New macros. + (RTX_COSTS, REGISTER_MOVE_COST, ADJUST_BLOCKAGE) Changed for pentium. + +Fri Feb 9 14:47:27 1996 Doug Evans + + * sparc.c (sp64_medium_pic_operand): New function. + (move_pic_label): Delete. + (legitimize_pic_address): Simplify using some named patterns. + (finalize_pic): Add preliminary sparc64 support. + (emit_move_sequence): Reorganize. + * sparc.md (pic_lo_sum_si,pic_sethi_si,get_pc_sp32,get_pc_sp64, + move_pic_label_si,move_label_di,sethi_di_sp64): Make named patterns. + (sethi_di_sp64_const,sethi_di_medium_pic): New anonymous patterns. + (move_pic_label_si,move_label_di): Optimize for near labels. + (tablejump): Use for TARGET_MEDANY. + (casesi): Delete. + +Fri Feb 9 13:48:45 1996 Jim Wilson + + * mips.md (probe+2, probe+4): New conditional move patterns. + (movsicc): Don't truncate comparison if it is DImode. + + * sh.h (CPP_SPEC): Add defines for -m1, -m2, and -m3. + +Fri Feb 9 09:11:28 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * toplev.c (rest_of_compilation): Set RTX_INTEGRATED_P in + INLINE_HEADER iff function is inlineable. + * calls.c (expand_call): Test RTX_INTEGRATED_P in DECL_SAVED_INSNS. + +Thu Feb 8 01:11:15 1996 Jeffrey A. Law + + * pa.md (floatunssisf2 expander): Don't use "general_operand". + (floatunssidf2 expander): Likewise. + +Wed Feb 7 16:59:31 1996 Michael Meissner + + * rs6000/{sysv4,win-nt,netware,cygwin32}.h ({ASM,LINK}_SPEC): + Don't use %{V} for either linker or assembler. + +Tue Feb 6 17:22:29 1996 Per Bothner + + * dbxout.c (dbxout_range_type): Emit non-range INTEGER_TYPE + as a sub-range of itself (so gdb can tell the difference). + +Tue Feb 6 17:01:44 1996 David Edelsohn + + * rs6000.md (addsi3 and adddi3 split): Use cleaner computation + and portable HOST_WIDE_INT. + (iordi3 split): Use HOST_WIDE_INT. + (movdi): Add TARGET_64BIT support and generate 64 bit constants. + (movdi matcher, TARGET_POWERPC64): Add immediate constraint handled + by new define_split. + (allocate_stack): Use TARGET_32BIT. + (tablejump): Add TARGET_64BIT support using ... + (tablejumpsi): Rename original tablejump pattern. + (tablejumpdi): New pattern. + +Tue Feb 6 15:29:22 1996 Per Bothner + + * stor-layout.c (layout_type): Use same code to layout CHAR_TYPE + as for INTEGER_TYPE (instead of hard-wiring in QImode). + +Tue Feb 6 15:13:38 1996 Jeffrey A. Law + + * pa.md (various patterns): Avoid using "general operand" in + define_insn patterns. + +Sun Feb 4 21:37:05 1996 Michael Meissner + + * rs6000/eabi{,sim}.h (LINK_START_SPEC): Bump the default start address + for the simulator to 0x10000074 so that we don't waste a page in the + linked file. + +Fri Feb 2 19:44:10 1996 Michael Meissner + + * rs6000/eabi-c{i,n}.asm (.sdata2, .sbss2): Put these in the + read-only section, not read-write. + + * libgcc2.c (__unwind_function, rs6000/powerpc): Use _ARCH_PPC + being defined to indicate to use PowerPC mnemonics. + + * config/rs6000/t-cygwin32 (MULTILIB*): Add software floating + point support. + +Thu Feb 1 09:10:02 1996 Steve Chamberlain + + * 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 + + * c-decl.c (finish_struct): + Fix typo in transparent union warning that led to core dump. + + * c-parse.in (stmt): Warn about `goto *expr;' if pedantic. + (label): Warn about `case expr ... expr:' if pedantic. + +Fri Feb 2 11:05:27 1996 Doug Evans + + * h8300/h8300.h (TARGET_ALIGN_300): Renamed from + TARGET_ALIGN_STRUCT_300. + (TARGET_SWITCHES): Rename -malign-struct-300 to -malign-300. + (BIGGEST_ALIGNMENT): Use TARGET_ALIGN_300. + +Fri Feb 2 08:25:49 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * flow.c (jmp_uses_reg_or_mem): Renamed from uses_reg_or_mem. + Don't look into condition of an IF_THEN_ELSE; also make faster. + (find_basic_blocks): Use new name. + +Fri Feb 2 06:49:56 1996 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * reload.c (debug_reload): Fix typo for reload_noncombine. + +Thu Feb 1 21:49:02 1996 Jeffrey A. Law + + * pa-pro.h (TARGET_DEFAULT): Turn on TARGET_SOFT_FLOAT by + default for all pro targets. + * t-pro: Delete all multilib references. + +Thu Feb 1 17:50:02 1996 Doug Evans + + * c-lex.c (check_newline): Return result of HANDLE_PRAGMA. + * h8300/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 + + * m68k/m68k-none.h: Rewrite to use EXTRA_SPECS. + * m68k/vxm68k.h (CPP_SPEC): Delete. + (SUBTARGET_EXTRA_SPECS): Define. + +Wed Jan 31 15:10:59 1996 David Edelsohn + + * rs6000.c (output_epilog): Fix PPC64 typos and use TARGET_32BIT. + (output_prolog): Same. + (rs6000_trampoline_template, rs6000_trampoline_size): Use TARGET_32BIT. + * rs6000.md (movdf TARGET_POWERPC64 matcher): Fix std typo. + (movdi TARGET_POWERPC64 matcher): Same. + +Wed Jan 31 09:46:11 1996 Richard Earnshaw (rearnshaw@armltd.co.uk) + + * regs.h (regno_pointer_align, REGNO_POINTER_ALIGN): Delete from + here... + * rtl.h (regno_pointer_align, REGNO_POINTER_ALIGN): ... 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 + + * dbxout.c: Don't include . Don't compare strchr result + to NULL. + + * config/svr4.h (ASM_FINAL_SPEC): Use %|, not ${pipe:-}. + +Tue Jan 30 06:48:43 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (nonzero_bits, case REG): Ignore REG_POINTER_ALIGNMENT. + Restore old code for SP, but use it for all pointers to + defined locations in the frame. + +Mon Jan 29 11:25:28 1996 Ian Lance Taylor + + * dbxout.c (dbxout_type_methods): Don't use #ifndef inside call to + strchr. + +Sun Jan 28 14:44:09 1996 Doug Evans + + * config/dbxcoff.h (*): #undef first. + +Sat Jan 27 21:46:16 1996 David Edelsohn + + * rs6000.c (rs6000_sync_trampoline): Add cmpdi to 64bit case. + (rs6000_initialize_trampoline): CSE of Pmode to pmode. + * rs6000.md (movdf): Handle move between FPR and 64 bit GPR. + (movdi matcher): Handle SPR move to itself and add "mr." combiner. + +Sat Jan 27 10:06:31 1996 Michael Meissner + + * rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_LOCAL): Redefine, put small + data items in .sbss if -msdata. + (SWITCH_TAKES_ARG): Add 'B', 'b', and 'V'. + +Sat Jan 27 07:59:25 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.h (enum built_in_function): Add BUILT_IN_{SET,LONG}JMP. + * expr.c: Include hard-reg-set.h. + (arg_pointer_save_area): New declaration. + (expand_builtin, case BUILT_IN_{SET,LONG}JMP): New cases. + * Makefile.in (expr.o): Includes hard-reg-set.h. + * c-decl.c (init_decl_processing): Add definitions for + __builtin_setjmp and __builtin_longjmp. + * cccp.c (initialize_builtins): Add def of __HAVE_BUILTIN_SETJMP__. + + * expr.c (expand_expr, case COMPONENT_REF): Pass EXPAND_INITIALIZER + to recursive call. + +Fri Jan 26 17:24:07 1996 Doug Evans + + * sparc.h (sparc_arch_type): Delete. + ({,TARGET_}MASK_DEPRECATED_V8_INSNS): Define. + (ARCH64_SWITCHES): Renamed from V9_SWITCHES. + * sparc.c (sparc_arch_type): Delete. + (sparc_init_modes): Likewise. + (output_move_quad): Don't use ldq/stq unless TARGET_HARD_QUAD. + * sparc/sp64-sol2.h (TARGET_DEFAULT): Add MASK_DEPRECATED_V8_INSNS. + (SUBTARGET_SWITCHES): Add -m{no-,}deprecated-v8-insns. + * sparc.md (arch attribute): Rewrite. + (isa): New attribute. + (32 bit multiply/divide patterns): Use if TARGET_DEPRECATED_V8_INSNS. + (32 bit divide patterns): V9 doesn't require delay after y reg write. + +Fri Jan 26 12:08:43 1996 David Edelsohn + + * rs6000.h (TARGET_32BIT): Define. + (BITS_PER_WORD, UNITS_PER_WORD): Invert so 32bit expected case. + (LONG_TYPE_SIZE, POINTER_BOUNDARY, PARM_BOUNDARY): Likewise. + (RS6000_REG_SAVE, RS6000_SAVE_AREA, RS6000_VARARGS_SIZE): Likewise. + (RETURN_ADDRESS_OFFSET, CASE_VECTOR_MODE, MOVE_MAX): Likewise. + (Pmode, FUNCTION_MODE): Likewise. + (LEGITIMATE_OFFSET_ADDRESS_P): Handle TARGET_64BIT. + (GO_IF_LEGITIMATE_ADDRESS, LEGITIMIZE_ADDRESS): Likewise. + (GO_IF_MODE_DEPENDENT_ADDRESS): Same. + +Fri Jan 26 10:37:52 1996 Stan Coxs + + * m88k.md (umulsidi3): Added for the 88110 + +Fri Jan 26 09:35:42 1996 Michael Meissner + + * rs6000/sysv4.h (STRIP_NAME_ENCODING): Deal with names that have + both @ and * prefix characters. + (ASM_OUTPUT_LABELREF): Ditto. + +Thu Jan 25 10:03:34 1996 Michael Meissner + + * rs6000.h (LEGITIMIZE_ADDRESS): Rewrite to use HOST_WIDE_INT, not + plain int. + (optimize,flag_expensive_optimizations): Provide declaration for + expander functions. + + * rs6000.md (movsi): Correct code in splitting an address into + load from the TOC, and add low/high integer parts. If expensive + optimizations, and reload hasn't started, use separate pseudo regs + for each step. + + * rs6000.c (small_data_operand): Don't use the function + eliminate_constant_term, unwind code directly. + (input_operand): SYMBOL_REF/CONST of small data operand is valid. + (print_{,address_}operand): Add @sda21(0) in appropriate cases for + small data. + %L, etc. so that if the item is in small memory, the appropriate + relocation is used. + (rs6000_select{,_rtx}_section): Don't put floating point constants + or small strings in .sdata2 since we can't tell from the pointer + whether it is in the small data area or not. + + * rs6000.h (EXTRA_CONSTRAINT): Add 'U' for small data references. + (LEGITIMATE_SMALL_DATA_P): Test explicitly for SYMBOL_REF or CONST + before calling small_data_operand. + + * rs6000.md (movsi): Handle the addresses of small data items. + + * rs6000/sysv4.h (g_switch_{value,set}): Add declarations. + (SDATA_DEFAULT_SIZE): Default to 8. + (SUBTARGET_OVERRIDE_OPTIONS): If -G was not set, set it to + SDATA_DEFAULT_SIZE. + (CC1_SPEC): Pass -G nn to the compilers. + (SWITCH_TAKES_ARG): Add -G nn support. + (LINK_SPEC): Pass -G nn to the linker. + +Thu Jan 25 09:16:34 1996 Doug Evans + + * configure (sparc64-*-solaris2*): New target. + * sparc/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 + + * config/dbxcoff.h (DBX_USE_BINCL): Define. + (DBX_CONTIN_LENGTH): Define if not defined. + +Wed Jan 24 18:00:12 1996 Brendan Kehoe + + * alpha.c (alpha_write_verstamp): Only emit MS_STAMP and LS_STAMP, + not the extra numbers. + +Wed Jan 24 15:18:15 1996 Michael Meissner + + * rs6000.c (init_cumulative_args): Rewrite to use DEFAULT_ABI + runtime tests, instead of V.4 #ifdefs. + (function_arg{,_advance,_partial_nregs,_pass_by_reference}): Ditto. + (setup_incoming_varargs): Ditto. + (init_cumulative_args): Set call_cookie field to CALL_NORMAL or + CALL_NT_DLLIMPORT. + (function_arg): Add support for DLL imports. + (rs6000_valid_{decl,type}_attribute_p): New functions for NT + attributes cdecl, stdcall, dllimport, and dllexport. + (rs6000_comp_type_attributes): New attribute support. + (rs6000_set_default_type_attributes): Ditto. + (rs6000_dll_import_ref): Ditto. + + * rs6000.h (FP_ARG_{AIX,SYSV}_MAX_REG): Move here from sysv4.h. + * sysv4.h (FP_ARG_{AIX,SYSV}_MAX_REG): Move to rs6000.h. + + * rs6000.h (rs6000_call_cookie): New enum to describe the integer + that is the 2nd argument to call insns and 3rd argument to + call_value insns. Add support for NT DLL imports. + (rs6000_args): Add call_cookie field. + (VALID_MACHINE_{DECL,TYPE}_ATTRIBUTE): Define to call C functions. + ({COMP_TYPE,SET_DEFAULT_TYPE}_ATTRIBUTES): Ditto. + (rs6000_valid_{decl,type}_attribute_p): Add declarations. + (rs6000_comp_type_attributes): Ditto. + (rs6000_set_default_type_attributes): Ditto. + (rs6000_dll_import_ref): Ditto. + + * win-nt.h (ASM_DECLARE_FUNCTION_NAME): Add support for dllexport + attribute. + + * rs6000.md (call insns): Add support for NT dllimport functions, + and fix up NT indirect calls. Also correctly set the flag + rs6000_save_toc_p on NT indirect calls. + + * aix41.h (LINK_SPEC): Use new extra specs to avoid separate + versions for native and cross compilation. + * rs6000.h (LINK_SPEC): Ditto. + * sysv4.h (LINK_SPEC): Ditto. + + * rs6000.h (EXTRA_SPECS): Add link_syscalls, link_libg, link_path, + link_specs, and also allow target to define more with the macro + SUBTARGET_EXTRA_SPECS. + (LINK_{LIBG,SYSCALLS}_SPEC): Define as fixed pathnames if native + compilation, and currently nothing if cross compiling. + (LINK_START_SPEC): If not defined, define as empty. + * eabi{,sim}.h (LINK_START_SPEC): Add default -Ttext for + simulator. + + * eabi{aix,le}.h (MULTILIB_DEFAULTS): Add -mno-sdata default. + * sysv4{,le}.h (MULTILIB_DEFAULTS): Ditto. + + * rs6000.c (small_data_operand): New function to return true if + the operand lives in small data under eabi. + (rs6000_select{,_rtx}_section): New functions to determine whether + to put global and static items in the V.4/eabi small data areas if + -msdata. + + * rs6000.h (LEGITIMATE_SMALL_DATA_P): Call small_data_operand it + if V.4. + (GO_IF_LEGITIMATE_ADDRESS): If LEGITIMATE_SMALL_DATA_P, the item + is a valid address. + (ASM_OUTPUT_LABELREF): Use fputs, not fprintf. + (small_data_operand): Declare function. + + * sysv4.h (TARGET_SWITCHES): New switch -msdata to use V.4 and + eabi defined small data sections. + (SUBTARGET_OVERRIDE_OPTIONS): Don't allow -msdata and + -mrelocatable or -mcall-aix options. + (EXTRA_SECTION{S,_FUNCTIONS}): Add .sdata, .sdata2, and .sbss + sections. + (SELECT{,_RTX}_SECTION): Call (rs6000_select{,_rtx}_section). + (ASM_SPEC): The -msdata switch passes -memb to the assembler. + (ENCODE_SECTION_INFO): Prepend a '@' to the name, if the item + lives in a small data region. + (STRIP_NAME_ENCODING): Strip '@' in addition to '*'. + (ASM_OUTPUT_LABELREF): Strip a leading '@'. + + * t-{ppc,eabi}gas (MULTILIB*): Add support for libraries built + with/without -msdata. Drop support for -mcall-aixdesc libraries. + +Wed Jan 24 15:18:15 1996 Kim Knuttila + + * 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 + + * reload1.c (used_spill_regs): New variable. + (reload): Set it. + * reorg.c (find_dead_or_set_registers): New function. + (mark_target_live_regs): Delete loop looking forward from target + and instead call find_dead_or_set_registers. + (fix_reg_dead_note): New function. + (fill_slots_from_thread): Call it. + + * loop.c (scan_loop): Correct comment. + (strength_reduce): Correct comments. Don't set maybe_multiple when + pass branch to scan_start. Don't set not_every_iteration after + passing a CODE_LABEL, or after passing a branch out of the loop. + When outputting DEST_ADDR giv increments, put them next to the memory + address on machines with auto-increment addresses. + (record_biv): Set new field always_executed. + (record_giv): Set new fields always_executed and auto_inc_opt. + (maybe_eliminate_biv_1): Reject biv with auto_inc_opt optimization + in some cases. + * loop.h (struct induction): New fields always_executed and + auto_inc_opt. + + * c-typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not + POINTER_SIZE to agree with expr.c. + +Tue Jan 23 15:17:30 1996 Doug Evans + + * sparc/sol2.h (ASM_OUTPUT_ALIGNED_LOCAL): Delete, use svr4.h's. + +Tue Jan 23 03:28:01 1996 Paul Eggert + + * cexp.y: Use preprocessor arithmetic instead of C arithmetic + to avoid warnings on some compilers. + (HOST_WIDE_INT_MASK): Remove. + (MAX_CHAR_TYPE_MASK, MAX_WCHAR_TYPE_MASK): New macros. + (yylex): Use them. + +Mon Jan 22 18:39:21 1996 Per Bothner + + * cppexp.c (cpp_parse_expr): Set HAVE_VALUE flag for unary + minus, even if skip_evaluation is true. + +Mon Jan 22 16:53:48 1996 David Edelsohn + + * rs6000/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 + + * dbxout.c: Include + +Fri Jan 19 17:17:00 1996 Per Bothner + + * tree.h (CONSTRUCTOR_TARGET_CLEARED_P): Removed. + * expr.c (is_zeros_p, mostly_zeros_p): Handle SET_TYPE CONSTRUCTORs. + (store_constructor_field): New helper function. + (store_constructor): Take 'cleared' parameter. + (expand_expr): Fix store_constructor_call to pass 'cleared' of 0. + + * expr.c (store_constructor, SET_TYPE): Fix off-by-one-error. + Also, devide start byte by BITS_PER_UNIT before passing to memset. + (store_constructor): `continue' in wrong place. + + * expr.c (store_constructor): If storing into a range of array + elements, and the range is small, or the target it not memory, + unroll the loop (and use store_field, which handles REGs). + (store_constructor): Handle RANGE_EXPR in array index. + +Fri Jan 19 16:52:25 1996 Doug Evans + + * svr4.h (SWITCH_TAKES_ARG): Add 'x'. + * sparc/sol2.h (SWITCH_TAKES_ARG): Likewise. + +Fri Jan 19 15:18:38 1996 Ian Lance Taylor + + * dbxout.c (flag_minimal_debug): Initialize to 0 if both + NO_DOLLAR_IN_LABEL and NO_DOT_IN_LABEL are defined. + (dbxout_type_methods): If the mangled method name uses the special + C++ marker character, pass show_arg_types as 1 when calling + dbxout_type. + +Fri Jan 19 11:48:28 1996 Michael Meissner + + * rs6000/eabi-ci.asm (_SDA_BASE_): Move the default definition + from the .got section to the .sdata section. Do not add 32768. + (_SDA2_BASE_): Provide a default definition. + + * rs6000/eabi-cn.asm (.got.blrl): Don't define this section any + more, linker now directly creates the blrl instruction at + _GLOBAL_OFFSET_TABLE_-4. + +Fri Jan 19 05:12:31 1996 Richard Earnshaw + + * arm/lib1funcs.asm (__divsi3, __modsi3, __udivsi3, __umodsi3): + Replace with smaller, faster versions. + +Thu Jan 18 17:41:46 1996 Jim Wilson + + * sh.c (ctype.h): Delete. + (regno_reg_class, reg_class_from_letter): Add SH3e support. + (prepare_scc_operands, broken_move, push, pop, push_regs): Likewise. + (calc_live_regs, sh_expand_prologue, sh_expand_epilogue): Likewsie. + (initial_elimination_offset, arith_reg_operand): Likewise. + (sh_builtin_saveregs, fp_zero_operand, fp_one_operand): New functions. + (sh_function_arg, sh_function_arg_partial_nregs): Delete. + * sh.h (CPP_SPEC, CONDITIONAL_REGISTER_USAGE): Add SH3E support. + (TARGET_SWITCHES, OVERRIDE_OPTIONS, FIRST_PSEUDO_REGISTER): Likewise. + (FIXED_REGISTERS, CALL_USED_REGISTERS, HARD_REGNO_MODE_OK): Likweise. + (enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise. + (REG_ALLOC_ORDER, CONST_DOUBLE_OK_FOR_LETTER_P, NPARM_REGS): Likewise. + (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Likewise. + (FUNCTION_ARG_REGNO_P, CUMULATIVE_ARGS, ROUND_REG): Likewise. + (INIT_CUMULATIVE_ARGS, FUNCTION_ARG_ADVANCE, FUNCTION_ARG): Likewise. + (FUNCTION_ARG_PARTIAL_NREGS, LEGITIMATE_CONSTANT_P): Likewise. + (MODE_DISP_OK_4, REGISTER_MOVE_COST, REGISTER_NAMES): Likewise. + (DBX_REGISTER_NUMBER, enum processor_type): Likewise. + (SH3E_BIT, TARGET_SH3E, FPUL_REG, FIRST_FP_REG, LAST_FP_REG): New. + (FIRST_FP_PARM_REG, FIRST_FP_RET_REG, BASE_RETURN_VALUE_REG): New. + (BASE_ARG_REG, enum sh_arg_class, struct sh_args): New. + (GET_SH_ARG_CLASS, PASS_IN_REG_P, sh_builtin_saveregs): New. + (EXPAND_BUILTIN_SAVEREGS, DOUBLE_TYPE_SIZE): New. + (TARGET_SWITCHES): Delete broken -m3l option. + * sh.md (cpu, movsi_i, movsf_i, blt, bge, sle, sge): Add SH3E support. + (push_e, pop_e, movsi_ie, movsf_ie, addsf3, subsf3): New patterns. + (mulsf3, macsf3, divsf3, floatsisf2, fix_truncsfsi2): New patterns. + (cmpgtsf_t, cmpqesf_t, cmpsf, negsf2, sqrtsf2, abssf2): New patterns. + (abssf2+9, abssf2+10): Add SH3e support to peepholes + (abssf2+11, abssf2+12): New peepholes for SH3e. + * t-sh (MULTILIB_OPTIONS): Add SH3E support. + (MULTILIB_DIRNAMES): Define to empty. + +Thu Jan 18 11:29:11 1996 Ian Lance Taylor + + * cplus-dem.c (cplus_demangle_opname): Change type of opname + parameter to const char *. + (cplus_mangle_opname): Change return type and type of opname + parameter to const char *. Don't cast return value. + * demangle.h (cplus_demangle_opname): Update declaration. + (cplus_mangle_opname): Likewise. + +Thu Jan 18 10:07:33 1996 Michael Meissner + + * gcc.c (extra_specs): If EXTRA_SPECS is defined, define + extra_specs array to hold the extra specs the machine description + defines. + (set_spec): If EXTRA_SPECS is defined, handle the extra + specifications. + (process_command): 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 + + * cexp.y (HOST_WIDE_INT_MASK): Renamed from LONG_MASK; + use HOST_WIDE_INT. + (HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT): Put back. + (parse_c_expression, expression_value, parse_escape, left_shift, + right_shift, struct constant, exp, parse_number, yylex): + Replace `long' with `HOST_WIDE_INT'. + * cccp.c (PTR_INT_TYPE): Remove obsolete define to `long'. + (parse_escape, parse_c_expression, eval_if_expression, get_lintcmd, + do_line, do_if, do_elif): Replace `long' with `HOST_WIDE_INT'. + (trigraph_pcp): Don't assume a pointer difference fits in an int. + +Wed Jan 17 18:56:31 1996 Jim Wilson + + * expmed.c (extract_bit_field): For multi-word bitfield, clobber + target before storing to it. + +Wed Jan 17 14:19:34 1996 J.T. Conklin + + * sparc/{t-sol2,t-sunos40,t-sunos41}: Define away LIBGCC1_TEST + so that cross compilers targeted at these systems will build. + +Wed Jan 17 09:51:58 1996 Doug Evans + + * sparc.h (v9 INIT_CUMULATIVE_ARGS): Fix typos. + + * gcc.c (process_command): New local lang_n_files, and use + it in test of -c with -o. Move test of -save-temps. + Test for trailing NUL in -c. + + * i386/t-go32: New file. + * i386/xm-go32.h: New file. + * configure (i[345]86-*-go32*): Define xm_file and tmake_file. + +Wed Jan 17 07:47:43 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cccp.c (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT): Put back. + (pcfinclude): Use HOST_WIDE_INT for casting pointer to integer. + +Wed Jan 17 05:25:06 1996 Jeffrey A. Law + + * va-pa.h (__gnuc_va_list): Use a "void *". + +Tue Jan 16 18:45:23 1996 Per Bothner + + * cppexp.c (cpp_lex): Do cpp_pop_buffer after CPP_POP so retried + cpp_skip_hspace will actually work. + + * cppexp.c (SKIP_OPERAND): New macro. + (cpp_parse_expr): Suppress evaluation and diagnostics in + unevaluated subexpressions. + Corresponds to Eggert's Fri Jun 9 17:58:29 1995 change. + +Tue Jan 16 11:59:07 1996 Mike Stump + + * expr.c (expand_expr, case COND_EXPR): Make sure cleanups live on + the function_obstack as they are used by the exception handling code. + (defer_cleanups_to): Ditto. + (TRUTH_ANDIF_EXPR): Ditto. + (TRUTH_ORIF_EXPR): Ditto. + +Tue Jan 16 13:57:13 1996 Jim Wilson + + * cccp.c (new_include_prefix): Ignore ENOTDIR error from stat. + +Tue Jan 16 12:18:56 1996 Doug Evans + + * i386/t-sol2 (crt[1in].o): Add missing -c. + * sparc/t-sol2 (crt[1in].o,gcrt1.o): Likewise. + Source files are assembler. + + * gcc.c (do_spec_1, case 'W'): Rename local `index' to `cur_index' to + avoid warning on solaris. + +Tue Jan 16 11:42:09 1996 Ian Lance Taylor + + * 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 + + * optabs.c (expand_fix): Don't copy TARGET to TO if same. + + * expr.c (emit_move_insn_1): Don't emit clobber when moving + by parts and source equals destination. + +Tue Jan 16 08:08:29 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expmed.c (extract_bit_field): Don't abort if not MEM_IN_STRUCT_P. + + * local-alloc.c (memref_referenced_p, case REG): Fix last change. + + * fold-const.c (const_binop): Strip NOPS from both args. + + * regclass.c (regclass): Remove useless cast. + +Tue Jan 16 07:06:03 1996 Paul Eggert + + * cexp.y: General code cleanup in the style of 1995-04-01 change. + Add prototypes for static functions. + Add parentheses suggested by `gcc -Wparentheses'. + Use `long' uniformly, instead of long, int, HOST_WIDE_INT mess. + (struct constant): Use `signedp' flag (with sign bit) instead of + `unsignedp' flag; it's a little more convenient. + + (HAVE_STDLIB_H, STDC_HEADERS, LONG_MASK, __attribute__, PROTO, + VA_START, PRINTF_ALIST, PRINTF_DCL, PRINTF_PROTO, PRINTF_PROTO_1, + vfprintf, SIGNED, UNSIGNED): New symbols. + : Include if HAVE_STDLIB_H. + : New include. + (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT): Remove. + (yylex, yyerror, expression_value, parse_number, + initialize_random_junk): Now static. + + (overflow_sum_sign): Renamed from possible_sum_sign, with an + extra arg SIGNEDP. + (parse_number): Inline strcmp when checking for "0x". + (yylex): Keep track of mask needed when decoding wide characters. + (parse_escape): New arg RESULT_MASK; use it instead of + assuming char width. + (yylex, parse_escape, parse_c_expression): Store all host + integers as long, not int or HOST_WIDE_INT. + (left_shift): No need to do signed left shifts separately. + + These changes are for the test program (if TEST_EXP_READER): + (pedantic, traditional): Allocate storage. + (main): Set pedantic, traditional, yydebug depending on args. + (is_hor_space, warning, lookup): Change types and implementation + to match rest of program. + (pedwarn, check_assertion, xmalloc): New functions. + + * cccp.c (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT): Remove. + (parse_escape, parse_c_expression, eval_if_expression): + Change return type to `long'; all callers changed. + (pcfinclude): Use `int', not HOST_WIDE_INT; any integral type will do. + + * cccp.c (skip_quoted_string): If pedantic and not pedantic_errors, + skipped multiline strings elicit a warning, not an error. + (rescan): Minor code reorg to keep it parallel with skip_quoted_string. + + * fold-const.c (left_shift_overflows): Remove; unused. + + * c-typeck.c (convert_for_assignment): Don't automatically convert + from a union member to the union. + +Tue Jan 16 06:26:00 1996 Stefan Vogel (stefan@ssw.de) + + * config/svr4.h (ASM_OUTPUT_SECTION_NAME): Define section attributes + only when a section is defined the first time. + +Tue Jan 16 06:03:27 1996 Thomas Graichen + + * i386/freebsd.h (ASM_WEAKEN_LABEL): Deleted; not supported. + +Mon Jan 15 20:59:49 1996 J. Kean Johnston + + * Makefile.in (LIBGCC2_CLFAGS): Add -DIN_LIBGCC2. + (libgcc1.a): Add -DIN_LIBGCC1. + (stamp-crtS): Remove -fpic, use CRTSTUFF_CFLAGS_S. + * config/t-libc-ok: Add CRTSTUFF_CFLAGS_S. + + * configure (i[3456]86-*-sco3.2v5*): New case. + * i386/sco5.h, i386/t-sco5, i386/x-sco5, i386/xm-sco5.h: New files. + * ginclude/stdarg.h, ginclude/varags.h: Add test for SCO Open Server 5. + +Mon Jan 15 20:44:13 1996 J.T. Conklin + + * m68k/netbsd.h (ASM_SPEC): New macro. + +Mon Jan 15 17:01:16 1996 Doug Evans + + * c-lex.c (check_newline): Pass character after `#pragma' to + HANDLE_PRAGMA. Don't call get_directive_line if at end of line. + * c-common.c (get_directive_line): Watch for EOF. + * h8300/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 + + * configure (*-*-gnu*): Use tmake_file=t-gnu. + * config/t-gnu (CRTSTUFF_T_CFLAGS): New file. + * configure (*-*-gnu*): Remove crtbeginS.o and crtendS.o frmo + $extra_parts. Use xmake_file=x-linux. + +Mon Jan 15 15:30:49 1996 Gran Uddeborg + + * i386/svr3{,z}.ifile: Allocate address areas for the "stab" + and "stabstr" sections. + +Mon Jan 15 14:39:14 1996 Paul Eggert + + * c-decl.c (finish_incomplete_decl): Warn if completing an + array that wasn't declared extern. Simplify test for whether + completion is needed. + + * cccp.c (do_xifdef): Warn about `#ifdef 0' if not traditional; + formerly the warning was issued if not pedantic. + +Mon Jan 15 13:24:12 1996 Michael Meissner + + * rs6000.md ({add,sub}di3): Make it work on little endian PowerPC + systems. + + * rs6000/eabi-c{i,n}.asm (.sbss2 section): Don't make .sbss2 a + .bss section just yet, because it confused the linker. + +Mon Jan 15 08:50:31 1996 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (pushdi): Allow "i" for operand 1. + (extendqidi2): Improve 68000 code generation. + (adddi_lshrdi_63): New pattern. + +Mon Jan 15 08:38:40 1996 H.J. Lu {hjl@gnu.ai.mit.edu) + + * configure (i[3456]86-*-linux*): Add extra_parts. + * i386/linux.h (LIB_SPEC): Remove %{mieee-fp:-lieee}. + Use -lc_p for -profile. + (CC1_SPEC): New macro. + * linux.h (STARTFILE_SPEC): Use crtbegin.o for both shared llibrary + and normal executable; use gcrt1.o for -profile. + (ENDFILE_SPEC): Use crtend.o for shared llibrary and normal executable. + * x-linux (INSTALL_ASSERT_H): Unset it. + * configure (i[3456]86-*-linux*oldld*): Set xmake_file to x-linux-aout. + (i[3456]86-*-linux*aout*): Likewise. + * x-linux-aout: New file, copied from config/x-linux. + +Mon Jan 15 07:41:05 1996 Dmitry K. Butskoy (buc@stu.spb.su) + + * varasm.c (in_data_section): New function. + +Mon Jan 15 07:37:13 1996 Andreas Schwab (schwab@issan.informatik.uni-dortmund.de) + + * c-typeck.c (build_c_cast): Don't warn about alignment when we + have an opaque type. + +Mon Jan 15 07:22:59 1996 Michel Delval (mfd@ccv.fr) + + * reload.c (find_equiv_reg): Apply single_set, not PATTERN, to WHERE. + +Mon Jan 15 07:02:21 1996 John F. Carr + + * reorg.c (mark_referenced_resources, case TRAP_IF): Set volatil. + +Mon Jan 15 06:20:38 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * gcc.c (process_commands): Remove inadvertant fallthrough. + + * function.c ({,round_}trampoline_address): TRAMPOLINE_ALIGNMENT is + in bits, not bytes. + + * objc/archive.c (objc_{write,read}_type, case _C_STRUCT_B): Fix typo. + + * expr.c (expand_expr, case COMPONENT_REF): Don't make recursive + call on object with EXPAND_SUM. + + * stmt.c (save_expr_regs): Delete declaration; unused. + +Sun Jan 14 21:44:26 1996 Michael Meissner + + * rs6000/eabi-ci.asm (__EXCEPT_START__): Provide label for start + of g++ exception pointers. + + * rs6000/eabi-cn.asm (__EXCEPT_END__): Provide label for end of + g++ exception pointers. + + * rs6000/eabi.asm (__eabi): Relocate exception pointers unless + they are NULL. + + * va-ppc.h (va_arg): Long longs are always passed in odd registers. + + * rs6000.c (function_arg_boundary): On V.4, long longs are always + passed in odd registers. + + * rs6000.md ({add,sub}di3): Remove restriction for POWER only, + since all of the instructions used are common to both + architectures. + +Sun Jan 14 20:34:03 1996 Jeffrey A. Law + + * expr.c (expand_assignment): Fix alignment parm in emit_block_move. + +Sun Jan 14 19:00:25 1996 Jim Wilson + + * sched.c (schedule_block): Copy RTX_INTEGRATE_P bit when create + a new note. + + * integrate.c (save_for_inline_copying, case NOTE): Copy + RTX_INTEGRATED_P bit. + +Sun Jan 14 17:57:52 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stupid.c (stupid_find_reg): Don't try to allocate reg if live + over more than 5,000 insns. + +Sat Jan 13 23:09:07 1996 Jeffrey A. Law + + * pa.h (STACK_BOUNDARY): Bring back down to 64bits. + + * pa.md (pre_ldwm): Fix bug exposed by recent changes. + Simplify. + (pre_stwm, post_ldwm, post_stwm): Likewise. + (HImode and QImode variants): Likewise. + * pa.c (hppa_expand_prologue): Corresponding changes. + (hppa_expand_epilogue): Likewise. + + * pa.c (hppa_legitimize_address): Generate more indexing + address modes. + +Fri Jan 12 19:03:21 1996 Doug Evans + + * sparc/sol2.h (COMMON_ASM_OP): Delete, use sysv4.h's. + + * sched.c (schedule_block): Maintain a valid chain so + emit_note_before works. + +Fri Jan 12 13:20:01 1996 Michael Meissner + + * rs6000/eabi{,-ci,-cn}.asm: Add support for V.4 .sbss/.sdata, and + eabi .sbss2/.sdata2 sections, loading up r13 and r2 respectively + if the sections were used, and we don't need to relocate the + pointers. + +Thu Jan 11 19:41:07 1996 Per Bothner + + * sparc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Use AGGREGATE_TYPE_P so + QUAL_UNION_TYPE and SET_TYPE are also passed by invisible reference. + * sparc.h (INIT_CUMULATIVE_ARGS for SPARCV9): Return types of + QUAL_UNION_TYPE and SET_TYPE also make invisible 1st argument. + +Thu Jan 11 18:33:50 1996 Doug Evans + + * h8300/h8300.h (TARGET_ALIGN_STRUCT_300): New macro. + (TARGET_SWITCHES): Add -malign-struct-300. + (BIGGEST_FIELD_ALIGNMENT): Update. + +Thu Jan 11 12:07:44 1996 J.T. Conklin + + * h8300/h8300.h (CPP_PREDEFINES): Delete -D_DOUBLE_IS_32BITS. + +Thu Jan 11 11:09:33 1996 David Edelsohn + + * rs6000.md (mulsf3 !POWERPC): Use dmul attribute. + (divsf3 !POWERPC): Use ddiv attribute. + +Thu Jan 11 11:09:33 1996 Michael Meissner + + * rs6000/eabi-ctors.c (__do_global_ctors): If global variable + __atexit is non-NULL, call it with __do_global_dtors address to + register the function to run destructors. + (__do_global_{c,d}tors): Guard against NULL pointers. + + * rs6000/eabi.asm (__eabi): If the __eabi function was already + called, do nothing. + +Thu Jan 11 11:29:09 1996 Doug Evans + + * fixincludes: Wrap rpc/types.h in extern "C", for osf2.0. + +Wed Jan 10 13:16:03 1996 Doug Evans + + * varasm.c (variable_section): New function. + (assemble_variable): Call it. + +Wed Jan 10 11:27:28 1996 Michael Meissner + + * rs6000/eabi-c{i,n}.asm (__DTOR_{LIST,END}__): Fix typo. + * rs6000/eabi{,sim}.h ({START,END}FILE_SPEC): Add %s to object + files. + + * rs6000/t-{eabi,eabigas,ppc,ppcgas} (MULTILIB_MATCHES): Drop + support for obsolete -mcpu=mpc403. Add -mcpu=821 and -mcpu=860 to + soft-float defaults. + + * rs6000/t-eabi{,gas} (LIBGCC): Add stmp-crt. + (INSTALL_LIBGCC): Add install-crt. + (EXTRA_PARTS): Delete. + (stmp-crt{,-sub}): New rules to build crti.o and crtn.o in a + multilib fashion. + (install-crt): Install the multilib crt values. + +Tue Jan 9 17:30:16 1996 Doug Evans + + * c-tree.h (merge_attributes): Moved from here. + * tree.h (merge_attributes): To here. + * c-typeck.c (merge_attributes): Moved from here. + * tree.c (merge_attributes): To here. + +Mon Jan 8 18:27:38 1996 Arne H. Juul + + * mips/netbsd.h (LINK_SPEC): Change nostdlib to nostartfiles. + (LOCAL_LABEL_PREFIX): Delete. + (ASM_OUTPUT_SECTION_NAME): Define. + +Sun Jan 7 17:11:11 1996 David Edelsohn + + * collect2.c (scan_libraries): Correct Import File ID interpretation. + +Sun Jan 7 16:56:56 1996 Michael Meissner + + * {svr4,mips/elf{,64}}.h (MAX_OFILE_ALIGNMENT): Define as + 32768*8. + +Sat Jan 6 15:52:36 1996 Doug Evans + + * a29k/vx29k.h (CPP_SPEC): Define. + + * configure: Recognize any --with/--without option. + + * Makefile.in (MAKEINFOFLAGS): New variable. + (cpp.info,gcc.info): Use it. + + * sparc/t-sol2 (crt1.o,crti.o,crtn.o,gcrt1.o): Use $(GCC_FOR_TARGET). + * i386/t-sol2 (crt1.o,crti.o,crtn.o): Likewise. + +Fri Jan 5 10:44:25 1996 Michael Meissner + + * rs6000/aix{3newas,41}.h ({ASM,CPP}_SPEC): Update for new + processors. + * rs6000/eabi{aix,le}.h ({ASM,CPP}_SPEC): Ditto. + * rs6000/{lynx,netware,powerpc,sysv4}.h ({ASM,CPP}_SPEC): Ditto. + + * rs6000.c (rs6000_override_options): Remove requirement that + -mcpu=common be big endian. + (rs6000_stack_info): If NAME__main is defined, mark this function + as doing a call, even if there are no arguments. + + * rs6000.md (SI*SI->DI splitters): Add reload_completed + condition. + (mulsidi3): If big endian, do move directly, rather than moving by + pieces. + + * rs6000/eabi{,sim}.h (STARTFILE_SPEC): Add crti.o before any + other objects. + (ENDFILE_SPEC): Add crtn.o after any objects. + * rs6000/t-eabi{,gas}: Build crt{i,n}.o from eabi-crt{i,n}.asm. + * rs6000/eabi-crt{i,n}.asm: New files to provide begin/end labels + for all special sections used by eabi as opposed to relying on GLD + to set all of these symbols. + * rs6000/eabi.asm (__eabi): Change to use the new labels provided + above. Don't assume that the .got2, .ctors, .dtors, and .fixup + sections are contiguous. + +Fri Jan 5 10:40:37 1996 David Edelsohn + + * rs6000.md (mulh_call): Remove r4 clobber. + (quoss_call): Remove cr0 and cr1 clobbers. + + * rs6000.md (function units): Add MPC505/821/860 support. + (SF multiply add combiner patterns): Use dmul attribute when limited + to DFmode POWER instructions. + * rs6000.c (processor_target_table): Add MPC505/821/860 support. + Remove MASK_POWER and add MASK_PPC_GFXOPT for PPC602. Always use + new mnemonics for common mode. + (rs6000_override_options): Don't set SOFT_FLOAT based upon + PROCESSOR_DEFAULT. + * rs6000.h (processor_type): Add PROCESSOR_MPCCORE. + (RTX_COSTS): Add PROCESSOR_MPCCORE cases. + (CPP_SPEC): Add new processor support. + +Fri Jan 5 00:32:49 1996 Doug Evans + + * sparc/sparc.h (MACHINE_STATE_RESTORE): Add missing .align. + +Wed Jan 3 18:29:32 1996 Doug Evans + + * arm/lib1funcs.asm (__USER_LABEL_PREFIX__): Define if not already. + (CONCAT1,CONCAT2,SYM): Define. + (__udivsi3,__divsi3,__umodsi3,__modsi3,__div0): Use SYM to define + global labels. + +Wed Jan 3 02:41:39 1996 Jeffrey A. Law + + * pa.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Call text_section. + +Tue Jan 2 16:12:13 1996 Jim Wilson + + * sh.c (gen_shifty_op): Output a NOP for a shift by 0. + (find_barrier): New variables si_limit, hi_limit. Set them depending + on whether we are optimizing. Set found_hi if the destination is + HImode. + (machine_dependent_reorg): If not optimizing, then change scan to a + note instead of calling delete_insn. + * sh.h (OVERRIDE_OPTIONS): Don't set optimize or flag_delayed_branch. + + * dbxout.c (gstab.h): Include if cross compiling. + +Mon Jan 1 21:13:43 1996 Arkady Tunik + + * configure (i[3456]-*-solaris2*): Support stabs. + * i386/sol2dbg.h: New file. + +Mon Jan 1 09:08:01 1996 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c: Use DECL_C_BIT_FIELD, not DECL_BIT_FIELD in all tests. + + * global.c (reg_allocno): No longer static. + * reload1.c (reg_allocno): Declare. + (order_regs_for_reload): New arg, GLOBAL. + Bias against regs allocated in local-alloc. + (reload): Pass new parm to order_regs_for_reload. + + * local-alloc.c (reg_equiv_replacement): New variable. + (memref_referenced_p, case REG): Check for reg_equiv_replacement. + (update_equiv_regs): reg_equiv_replacement now file-scope. + + * c-decl.c (finish_struct): Warn if field with enumeral type is + narrower than values of that type. + + * combine.c (rtx_equal_for_field_assignment_p): New function. + (make_field_assignment): Use it. + Expand compound operations on both sides of an IOR. + Properly adjust constand in IOR when computing bit position. + +Sun Dec 31 18:47:22 1995 Doug Evans + + * m68k-none.h (MULTILIB_DEFAULTS): Define. + +Sun Dec 31 15:47:20 1995 Jeffrey A. Law + + * hard-reg-set.h (losing_caller_save_reg_set): Declare. + * regclass.c (losing_caller_save_reg_set): Define. + (init_reg_sets_1): Initialize losing_caller_save_reg_set. + * global.c (find_reg): Avoid caller-saving registers in + losing_caller_save_reg_set. + * local-alloc.c (find_free_reg): Avoid caller-saving registers + in losing_caller_save_reg_set. + (CLASS_LIKELY_SPILLED_P): Delete definition. Moved into regs.h. + * regs.h (CLASS_LIKELY_SPILLED_P): Define if not already defined. + + * reorg.c (fill_simple_delay_slots): Try to fill from the + target of an unconditional branch if necessary. + + * pa.h (REG_ALLOC_ORDER): Allocate PA1.1 caller-saved FP regs + before PA1.0 caller-saved FP regs. + + * sched.c (adjust_priority): Use ADJUST_PRIORITY if its defined. + + * pa.h (ADJUST_PRIORITY): Define to keep lifetimes of registers + that will be allocated to %r1 shorter. + +Sun Dec 31 14:20:49 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * rtl.h (assign_temp): Add extra arg. + * function.c (assign_temp): Add extra arg, DONT_PROMOTE. + Don't return (const_int 0) for VOIDmode. + * stmt.c (expand_asm_operands): Call assign_temp with extra arg. + * expr.c (save_nocopied_parts, expand_expr): Likewise. + (expand_expr, case SAVE_EXPR): Set TEMP to (const_int 0) + if MODE is VOIDmode. + (expand_expr): Don't use assign_temp for pseudos when might + want to be TMODE. + + * stmt.c (tail_recursion_args): Compare TYPE_MAIN_VARIANTs. + + * calls.c (expand_call): Don't warn about not being able to + inline if -O0. + * expr.c (clear_pending_stack_adjust): Don't do optimization if -O0. + * function.c (instantiate_decls): Check DECL_SAVED_INSNS to see + if obstack change is needed. + * toplev.c (rest_of_compilation): Leave DECL_INLINE set even if + won't inline. + + * tree.h: Add documentation on uses of common area flags. + (DECL_ERROR_ISSUED): New macro. + (DECL_NO_STATIC_CHAIN): New macro; currently unused. + * c-aux-info.c (gen_decl): DECL_REGISTER isn't defined + for FUNCTION_DECL. + * toplev.c (compile_file): Likewise. + * stmt.c (fixup_gotos): Use DECL_ERROR_ISSUED instead + of DECL_REGISTER. + * varasm.c ({bc_,}make_decl_rtl): Don't look at DECL_REGISTER + for functions. + +Sat Dec 30 07:57:11 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sdbout.c (plain_type_1, case ARRAY_TYPE): Subtract lower bound + when writing dimension. + +Fri Dec 29 18:23:58 1995 Paul Eggert + + * cccp.c (eval_if_expression): End expression with '\n', not '\0' + so '\0' can be diagnosed properly. + * cexp.y (yylex, parse_c_expression, main): Likewise. + +Thu Dec 28 18:24:54 1995 Per Bothner + + * tree.h (TYPE_ARRAY_MAX_SIZE): New macro (used by Chill). + * function.c (assign_temp): New function. Can handle Chill-style + variable-sized array with static maximum size. + * rtl.h (assign_temp): New declaration. + * stmt.c (expand_asm_operands): Use new assign_temp function. + * expr.c (save_noncopied_parts, expand_expr): Likewise. + +Thu Dec 28 15:28:47 1995 Per Bothner + + * function.c (assign_parms): Fix thinko for struct value arg. + +Fri Dec 29 12:41:47 1995 Michael Meissner + + * rs6000.md (movdf): Reinstate 12/24 change accidently dropped in + undoing 12/27 changes. + +Thu Dec 28 22:24:53 1995 Michael Meissner + + * rs6000.h: (reg_class): Undo 12/27 changes, except for + formatting. + (REG_NAMES): 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 + + * 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 + + * c-lex.c (yylex): Improve error message for bogus numbers. + Consolidate duplicated code. + + * cexp.y (parse_number): Improve error message for bogus numbers. + (yylex): Consider `0xe-1' to be a (bogus) number if not traditional. + + * cccp.c (do_include): In VMS, worry only about EACCES when open fails. + (new_include_prefix): Don't try to stat dir prefixes in VMS. + +Wed Dec 27 14:02:54 1995 Per Bothner + + * fix-header.c: Add EXIT_FAILURE and EXIT_SUCCESS to stdlib.h if + missing. Re-write how errno is added to be done similarly. + (XOPEN_SYMBOL, XOPEN_EXTENDED_SYMBOL): New macros, to mark XPG4 + functions. + (std_include_table): Add a number of functions (mostly XPG4). + +Tue Dec 26 23:18:34 1995 Per Bothner + + * sys-types.h: Add dummy definition for ssize_t. + * sys-protos.h (bcmp, bcopy, gethostname, lockf, read, readlink, + write): Fix prototypes to match Posix and XPG4. + (socket, strcasecmp, strncasecmp): New prototypes (from XPG4). + +Wed Dec 27 15:30:04 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * libgcc2.c (_bb_init_prg): Cast arg to bzero to (char *). + + * regs.h (reg_rtx_no, regno_pointer_{flag_length,align): New decls. + (REGNO_POINTER_ALIGN): New macro. + * emit-rtl.c (regno_pointer_align): New variable. + (gen_reg_rtx): Extend regno_pointer_align table. + Allocate tables in saveable obstack. + (mark_reg_pointer): New arg, ALIGN. + (gen_inline_header): New args for reg info. + (set_new_first_and_last_insn): Set cur_insn_uid. + ({save,restore}_emit_status): Save and restore regno_pointer_align. + (restore_reg_data{,_1}): Deleted. + (init_emit): Allocate register tables in saveable obstack. + Set REGNO_POINTER_ALIGN for regs pointing into frame. + * function.c (assign_parms): Set REGNO_POINTER_ALIGN for + parms that are pointers. + * function.h (struct function): New field regno_pointer_align. + * expr.c (expand_expr, case VAR_DECL): Set REGNO_POINTER_ALIGN + when copying address into memory. + (expand_expr, case COMPONENT_REF, case ADDR_EXPR): Set alignment + of register when result or result's address. + (expand_expr, case CONVERT_EXPR): Don't handle -fforce-mem here. + * combine.c (set_nonzero_bits_and_sign_copies): Handle reg even + if only set once and in one basic block. + (nonzero_bits, case REG): Use REGNO_POINTER_ALIGN instead of + explicit alignment of registers pointing into frame. + * stmt.c (expand_decl): Set alignment of register for pointer + variable. + * optabs.c (emit_unop_insn): Don't do -fforce-mem for SIGN_EXTEND. + * cse.c (find_best_addr): Make sure folded address better before using. + * rtl.h (INLINE_REGNO_{RTX,POINTER_FLAG,POINTER_ALIGN}): New macros. + (gen_inline_header): Add three new parms. + * rtl.def (INLINE_HEADER): Add three new fields. + * integrate.c: Include regs.h. + (initialize_for_inline): Pass additional args to gen_inline_header. + (save_for_inline_copying): Make new regno_reg_rtx, regno_pointer_flag, + and regno_pointer_align arrays. + (expand_inline_function): Set alignment of reg for parm if passed + by hidden pointer. + Set regno_pointer_{flag,align} into remap table. + (copy_rtx_and_substitute): Set alignment of pointers into + stack frame. + Copy pointer flag and alignment to regs that are copies of + pointer registers from the original regs. + (output_inline_function): Don't call restore_reg_data. + Restore reg_rtx_no, regno_{reg_rtx,pointer_flag,pointer_align}. + * integrate.h (struct inline_remap): New fields regno_pointer_flag + and regno_pointer_align. + * unroll.c (unroll_loop): Set regno_pointer_{flag,align} in + remap table. + * explow.c (memory_address, allocate_dynamic_stack_space): + Pass additional arg to mark_reg_pointer. + * Makefile.in (integrate.o): Includes regs.h. + + * alpha.c ({non,}aligned_memory_operand): Test REGNO_POINTER_ALIGN. + (reg_or_unaligned_mem_operand): New function. + (get_unaligned_address): Add new arg, EXTRA_OFFSET. + * alpha.h ({CONSTANT,DATA}_ALIGNMENT): Align to at least BITS_PER_WORD. + (PREDICATE_CODES): Add reg_or_unaligned_mem_operand. + * alpha.md (extend{qihi,qisi,hisi}2): Allow unaligned memory + as arg 1 and pass to extend_{q,h}idi2. + (unaligned_extend{q,h}idi): New patterns. + (extend{q,h}idi2): If unaligned memory, call above new patterns. + (ext{q,l,w}h recognizer): Update to proper RTL. + (ext define_split): Comment out for now; wrong and maybe useless. + (unaligned_{load,store}hi): Do similarly to QImode. + (movhi, reload_{in,out}hi): Call unaligned case differently. + +Wed Dec 27 11:38:20 1995 Michael Meissner + + * rs6000.md (mulsidi3{,_common}): Undo previous change using + register classes instead of fixed registers for SI*SI->DI common + mode multiplies. + + * rs6000.c (gpc_reg34_operand): Delete unused function. + * rs6000.h (gpc_reg34_operand): 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 + + * c-typeck.c (mark_addressable): Fix error in last change. + +Sun Dec 24 22:19:49 1995 Jeffrey A. Law + + * pa.c (output_function_epilogue): Use assemble_integer rather + than calling ASM_OUTPUT_INT directly. + * pa.h (ASM_OUTPUT_INT): Use labels for everything in the + exception table section. + + * pa.c (print_operand): Don't call fprintf to output a register + name. Use fputs instead. + + * pa.h (ASM_OUTPUT_FUNCTION_PREFIX): Strip any name encoding + on the section name. + +Sun Dec 24 17:46:03 1995 Markus Theissinger + + * toplev.c (main): Add -ax option. + * gcc.c (struct compilers): Likewise. + * final.c (end_final): Extended header increased to 11 words. + (profile_after_prologue): FUNCTION_BLOCK_PROFILER uses + count_basic_blocks instead of profile_label_no. + + * libgcc2.c (struct bb): Add flags field. + (HAVE_POPEN): Test new define. + (struct __bb, struct bb_{edge,func}): New structs. + (__bb_init_{prg,file},__bb_{init,exit}_trace_func,__bb_trace_ret, + (__bb_trace_func{,_ret},gopen,gclose): New functions. + + * sparc.h, i386.h, m68k.h (FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER): + Extension for -ax option (profile_block_flag == 2). + (MACHINE_STATE_SAVE,MACHINE_STATE_RESTORE): New macros. + (FUNCTION_BLOCK_PROFILER_EXIT): New macro. + * sparc.c (output_function_epilogue), i386.c (function_epilogue): + Use FUNCTION_BLOCK_PROFILER_EXIT. + * m68k.c (output_function_epilogue): Likewise. + * xm-sparc.h: Define HAVE_POPEN. + +Sun Dec 24 06:50:30 1995 Barrett Richardson (barrett@iglou.com) + + * floatlib.c (__divdf3): Rewrite to do software divide of two + doubles instead of using __divsf3. + +Sun Dec 24 06:38:15 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * rs6000.md (movdf): Don't copy a word at a time; nearly always loses. + + * c-tree.h (DECL_C_BIT_FIELD): New macro. + * c-decl.c (finish_struct): Set it when set DECL_BIT_FIELD. + * c-typeck.c (mark_addressable, case COMPONENT_REF): + Give error if taking address of a bit field. + + * gcc.c (unused_prefix_warning): Include machine_suffix if + require_machine_suffix. + (warn_B, warn_std, warn_std_ptr): New variables. + (process_commands): Use them and NULL_PTR as WARN arg to add_prefix. + + * gcc.c (process_command): Give error for -c with -o and + multiple compilations. + (handle_braces): Rename variable "pipe" to "pipe_p". + + * expr.h (clrstr_optab): New declaration. + (clear_storage): New parm, ALIGN. + * tree.h (CONSTRUCTOR_TARGET_CLEARED_P): New macro. + * genopinit.c (optabs): Add "clrstr%a%". + * optabs.c (init_optabs): Initialize clrstr_optab. + * expr.c (struct clear_by_pieces): New structure. + (clear_by_pieces{,_1}, {is,mostly}_zeros_p): New functions. + (clrstr_optab): New optab. + (clear_storage): Rework to try to use clear_by_pieces, then + new clrstr insn, then library call. + (store_constructor): Track if target is already cleared. + Clear target first if CONSTRUCTOR is mostly zeros. + Don't write zeros if target has been cleared. + Add new arg to clear_storage call. + (expand_expr, case CONSTRUCTOR): Don't put static constructor + in memory if mostly zero. + * i386.md (clrstrsi): New pattern and associate anonymous pattern. + +Sat Dec 23 12:21:53 1995 Jeffrey A. Law + + * pa.c (output_move_double): Correctly identify and handle + overlapping moves. + * pa.md (movdi patterns): Eliminate earlyclobbers in mem<->gr + cases. + (movdf patterns): Likewise. + +Fri Dec 22 17:29:42 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (store_constructor): Don't call change_address on REG. + (expand_expr, case CONSTRUCTOR): Likewise. + + * mips.c (expand_block_move): Preserve MEM flags in call to + movstrsi_internal. + + * pa.c (emit_move_sequence): Don't try to set REGNO_POINTER_FLAG + for a SUBREG. + + * reload.c (find_valid_class): New function. + (push_reload): Use it in cases where a SUBREG and its contents + both need to be reloaded. + + * toplev.c (rest_of_compilation): Never defer functions that + contain nested functions. + +Fri Dec 22 15:55:00 1995 Michael Meissner + + * rs6000.md (function units): Add 403 support which deleted + by accident on Nov 21st. Mark all compares from 602, 603, 604, + 620, 403, like was done for rios{1,2} and 601 as needing the bpu, + so that compares are hoisted far enough branches for zero cycle + branch support. + +Fri Dec 22 15:13:47 1995 Stan Cox + + * i386.h: (TARGET_UNROLL_STRLEN): New macro. + * i386.c: (output_strlen_unroll): New function. + * i386.md: (strlensi): New pattern. + +Thu Dec 21 18:53:31 1995 Roland McGrath + + * config/gnu.h (GNU_CPP_PREDEFINES): Add missing space after + -Amachine(CPU). + +Thu Dec 21 12:23:42 1995 Michael Meissner + + * configure ({powerpc,rs6000}*): Change --enable-cpu to + --with-cpu. + * rs6000.c (rs6000_select): 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 + + * configure ({powerpc,rs6000}-ibm-aix*): Merge these two into the + same case statement. Aix 4 now generates -mcpu=common by default. + ({powerpc,rs6000}*): Add support for --enable-cpu= to + select the default cpu to compile for. + + * rs6000/aix41.h (TARGET_DEFAULT): Make -mcpu=common 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= 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 + + * mips.c (mips_reg_names, mips_sw_reg_names, mips_regno_to_class): + Add entry for new RAP reg. + * mips.h (FIRST_PSEUDO_REGISTER): Increment. + (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES, + DEBUG_REGISTER_NAMES): Add entry for new RAP reg. + (RAP_REG_NUM, RETURN_ADDRESS_POINTER_REGNUM): New macros. + (RETURN_ADDR_RTX): Define. + (ELIMINABLE_REGS, CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET): + Add RETURN_ADDRESS_POINTER_REGNUM support. + * emit-rtl.c (return_address_pointer_rtx): New global variable. + (gen_rtx, init_emit_once): Add support for it. + +Tue Dec 19 15:08:31 1995 Jason Merrill + + * collect2.c: Remove auto_export functionality. + +Tue Dec 19 10:57:23 1995 Kim Knuttila + + * ginclude/ppc-asm.h: Do not compile the register macros under + winnt. + +Mon Dec 18 19:31:23 1995 Adam Fedor + + * objc/encoding.c (objc_alignof_type): Handle _C_PTR case. + +Mon Dec 18 18:40:34 1995 Jim Wilson + + * combine.c (simplify_rtx, case SUBREG): For SUBREG of a constant, + use <= instead of < when comparing mode sizes. + (force_to_mode, case NOT): Use full mask inside the NOT operation. + + * expr.c (emit_block_move): When call emit_libary_call for bcopy, + pass arguments using correct types and modes. + (emit_push_insn, expand_assignment): Likewise. + (clear_storage, store_expr): Likewise for memset and bzero. + (store_constructor): Likewise for memset. + * optabs.c (emit_cmp_insn): Likewise for memcmp and bcmp. + * convex/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 + + * expr.h (expand_mult_highpart_adjust): Declare. + +Mon Dec 18 16:39:41 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (store_constructor): Fix error in last change: just + copy MEM, but be sure to share address. + (expand_expr, case CONSTRUCTOR): Likewise. + +Mon Dec 18 16:22:46 1995 Michael Meissner + + * rs6000.h (ASM_GENERATE_INTERNAL_LABEL): Put 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 + + * 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 + + * pa.h (ASM_OUTPUT_FUNCTION_PREFIX): Don't surround section names + with '$'. That confuses collect2. + (ASM_OUTPUT_SECTION_NAME): Likewise. + + * sched.c (canon_rtx): Recursively look for equivalences; + look for expressions equivalent to MEMs. + (true_dependence): Canonicalize inputs before operating + on their values. + (anti_dependence, output_dependence): Likewise. + + * jump.c (follow_jumps): Don't follow an unconditional jump + that is not a simple_jump. + + * pa.c (override_options): Make 7100 scheduling the default. + + * pa.md: Add 2nd reload peephole somehow omitted from Nov27 changes. + + * regclass.c (regclass): Use SECONDARY_RELOAD_CLASS if it's + defined to avoid useless work. + + * combine.c (find_split_point): Try to split SET_DEST + just like we do for SET_SRC. + +Sun Dec 17 11:37:25 1995 Torbjorn Granlund + + * expmed.c (expand_mult_highpart): When doing widening multiply, + put constant in a register. + (expand_mult_highpart): When mode is word_mode use gen_highpart + instead of right shift by size. + + * expr.c (expand_expr, case MULT_EXPR): Generalize code for widening + multiply to handle signed widening multiply when only unsigned optab + is defined, and vice versa. + +Sun Dec 17 07:35:50 1995 Pat Rankin + + * vax/vms.h (WCHAR_TYPE_SIZE): Define. + +Sun Dec 17 07:08:34 1995 Ronald F. Guilmette . + + * fp-test.c: New file. + +Sun Dec 17 07:06:03 1995 Peter Flass + + * i370.md (cmpqi): Fix generation of literal operand of CLM instruction + to avoid double literals (=X'=F'...). + +Sun Dec 17 06:57:02 1995 Paul Eggert + + * cccp.c: Try harder not to open or stat the same include file twice. + Simplify include file names so that they are more likely to match. + E.g. simplify "./a//b" to "a/b". Represent directories with simplified + prefixes, e.g. replace "./a//b" with "a/b/", and "." with "". + + (absolute_filename): New function. + (do_include): Use it. + (read_name_map): Likewise; this makes things more consistent for DOS. + + (main, do_include, open_include_file): -M output now contains + operands of -imacros and -include. + + (skip_to_end_of_comment): When copying a // comment, don't try to + change it to a /* comment. + (rescan, skip_if_group, skip_to_end_of_comment, macarg1): Tune. + + (rescan, skip_if_group, skip_to_end_of_comment, macarg1): + If warn_comments is nonzero, warn if backslash-newline appears + in a // comment. Simplify method for finding /* /* */ comment. + (skip_if_group): Optionally warn if /* /* */ appears between # and + a directive inside a skipped if group. + (macarg): Optionally warn if /* /* */ appears in a macro argument. + + (strncat, VMS_strncat, vms_ino_t, ino_t): Remove. + (INCLUDE_LEN_FUDGE): Add 2 if VMS, for trailing ".h". + (INO_T_EQ, INO_T_HASH): New macros. + + (struct file_buf): New member `inc'. + (expand_to_temp_buffer): Initialize it. + + (struct file_name_list): New member `inc'. + (struct file_name_list): New member `st'. + c_system_include_path is now 1 if not 0. + fname is now an array, not a pointer. + (struct include_file): New members `next_ino', `deps_output', `st'. + Remove members `inode' and `dev'; they are now in `st'. + + (INCLUDE_HASHSIZE): Rename from INCLUDE_HASH_SIZE. + (include_hashtab): Rename from include_hash_table. + (include_ino_hashtab): New variable. + + (main): Store file status in struct stat, not in long and int pieces. + Use base_name to strip prefixes from file names. + When printing directory prefixes, omit trailing / and print "" as ".". + Fatal error if the input file is a directory. + (main, path_include): Regularize operands of -include, -imacros, + -isystem, -iwithprefix, and -iwithprefixbefore. + Regularize default include directories. + + (do_include): + Allocate dsp with alloca, since fname is now dynamically allocated. + Use -3 to represent a never-opened file descriptor. + Make copy of file name, and simplify the copy. + Use base_name to identify the end of fname's directory. + Do not prepend dir for "..." if it matches the search list's first dir. + open_include_file now subsumes redundant_include_p and lookup_import. + Use bypass_slot to remember when to skip directories when including + a file that has already been seen. + Instead of using 0 to represent the working directory, and "" + to represent a directory to be ignored, use "" for the former, + and assume the latter has been removed before we get here. + Assume the directory prefixes have already been simplified. + Report as errors all open failures other than ENOENT. + Fatal error if fstat fails. + Use new deps_output member to avoid printing dependencies twice. + (bypass_hashtab): New variable. + + (do_include, open_control_file, record_control_macro): New convention: + control_macro is "" if the file was imported or had #pragma once. + (pragma_once_marker): Remove. + + (redundant_include_p, include_hash, lookup_include, lookup_import, + add_import, file_size_and_mode): Remove; subsumed by open_include_file. + (skip_redundant_dir_prefix): Remove; subsumed by simplify_filename. + + (is_system_include, read_name_map, remap_include_file): + Assume arg is a directory prefix. + + (base_name, simplify_filename, remap_include_file, + lookup_ino_include, new_include_prefix): New functions. + + (open_include_file): New arguments `importing' and `pinc'. + Move filename mapping into new remap_include_file function. + First try to find file by name in include_hashtab; + if that doesn't work, open and fstat it and try to find it + by inode and dev in include_ino_hashtab. + + (finclude): Get file status from inc->st instead of invoking fstat. + Store inc into fp->inc so that record_control_macro doesn't + need to do a table lookup. + (finclude, record_control_macro): Accept struct include_file * + instead of char * to identify include file. All callers changed. + + (check_precompiled): Get file status from new argument `st'. + + (do_pragma): Output at most one warning about #pragma implementation. + Always return 0 instead of returning garbage sometimes. + (do_pragma, hack_vms_include_specification): + Use base_name for consistency, and remove redundant code. + + From Per Bothner: + Unify the 3 separate mechanisms for avoiding processing + of redundant include files: #import, #pragma once, and + redundant_include_p to use a single more efficient data structure. + (struct file_name_list): Remove no-longer needed field control_macro. + (dont_repeat_files, all_include_files): Remove, no longer used. + (struct import_file): Renmed to struct include_file, moved earlier + in file, renamed field name to fname, and added control_macro field. + (pragma_once_marker): New constant. + (import_hash_table): Renamed to include_hash_table. + (import_hash): Renamed to include_hash. + (IMPORT_HASH_SIZE): Renamed to INCLUDE_HASH_SIZE. + (main, path_include): Don't clear removed control_macro field. + (lookup_include): New function - look up fname in include_hash_table. + (redundant_include_p): Re-write to use lookup_include. + (lookup_import, record_control_macro): Likewise. + (add_import): Defer fstat to caller. Combine two xmallocs into one. + (do_once): Use pragma_once_marker in include_hash_table. + (do_pragma): Re-implement to scan include_hash_table. + (do_include): Use new lookup_include and add_import. + +Sun Dec 17 06:45:43 1995 John F. Carr + + * configure (savesrcdir): Do not create paths with trailing "/.". + + * combine.c (try_combine): When checking for two sets of the same + register in a split insn, also test for setting a ZERO_EXTRACT, + STRICT_LOW_PART, or SUBREG. + +Sun Dec 17 06:37:00 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * reload.c (push_secondary_reload): Don't strip paradoxical SUBREG + if reload_class is CLASS_CANNOT_CHANGE_SIZE. + +Sat Dec 16 18:24:20 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_assignment): Fix alignment parm in emit_block_move. + +Sat Dec 16 18:16:08 1995 John Hassey (hassey@rtp.dg.com) + + * local-alloc.c (optimize_reg_copy_2): Don't attempt + optimization if destination register dies. + +Sat Dec 16 08:31:16 1995 Paul Eggert + + * fold-const.c (fold): Don't record overflow when negating + unsigned constants. + +Sat Dec 16 07:45:11 1995 Gran Uddeborg (uddeborg@carmen.se) + + * configure (i[3456]-*-isc, gas, stabs): Remove crt* from extra_files + +Sat Dec 16 07:03:33 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * stor-layout.c (layout_record): When PCC_BITFIELD_TYPE_MATTERS, + compute bitpos using field_size % type_align instead of field_size. + + * fixincludes (stdio.h): Fix return type of fread and fwrite + on sysV68. + +Sat Dec 16 06:57:14 1995 Thomas Lundqvist (d0thomas@dtek.chalmers.se) + + * function.c (fixup_var_refs_1): Fix two incorrect calls to single_set. + +Fri Dec 15 22:30:27 1995 Torbjorn Granlund + + * i386.h (REGISTER_MOVE_COST): Simplify. + +Fri Dec 15 22:30:27 1995 Stan Cox + + * i386.h (TARGET_CPU_DEFAULT*, PROCESSOR_*, + TARGET_{LEAVE,386_ALIGNMENT,PUSH_MEMORY,ZERO_EXTEND_WITH_AND, + DOUBLE_WITH_ADD,BIT_TEST}): New macros. + * i386.c (ix86_cpu*, ix86_isa*): New global variables. + (override_options): Add -mcpu and -misa support + * i386.md: Use TARGET* macros. + * i386/dgux.{c,h}: New files. + * m88k/t-dgux: (GCC_FOR_TARGET, T_CFLAGS): New macros. + * m88k/t-dguxbcs: New file. + * m88k/x-{dgux,dguxbcs}: (GCC_FOR_TARGET, X_CFLAGS): Removed. + +Fri Dec 15 18:41:50 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * fixincludes (sys/wait.h): Add forward declaration of struct rusage + on AIX 3.2.5. + +Fri Dec 15 18:39:36 1995 Marco S Hyman (marc@dumbcat.sf.ca.us) + + * xm-bsd386.h (DONT_DECLARE_SYS_SIGLIST): Defined. + +Fri Dec 15 18:36:42 1995 Gran Uddeborg (uddeborg@carmen.se) + + * i386/svr3dbx.h (DO_GLOBAL_DTORS_BODY): Delete; obsolete. + +Fri Dec 15 18:21:34 1995 Richard Kenner + + * i386/i386iscgas.h, i386/t-iscscodbx: Deleted; long dead. + +Fri Dec 15 10:01:27 1995 Stan Cox + + * configure (target_cpu_default) Set for 486/586/686 + (m88k-dg-dgux) Use t-dguxbcs instead of x-dguxbcs + (i*86*) Change [345] to [3456] + (i[3456]86-dg-dgux) Added + * Makefile.in (out_object_file) Add MAYBE_TARGET_DEFAULT + +Fri Dec 15 08:05:49 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (init_temp_slots): New function. + (init_function_start): Code moved to new function and called here. + * toplev.c (rest_of_compilation): Call init_temp_slots. + + * expmed.c (store_bit_field): Don't use insv for BLKmode value. + (store_split_bit_field): Set total_bits to BITS_PER_FOR for + BLKmode value. + +Fri Dec 15 06:35:36 1995 David Edelsohn + + * xcoffout.h (DBX_STATIC_BLOCK_END): Use macro arguments. + (xcoff_begin_function_line, xcoff_current_function_file): Remove + unused extern declarations. + (DBX_OUTPUT_MAIN_SOURCE_FILENAME): Use macro argument. + * xcoffout.c (xcoff_begin_function_line): Make static. + (xcoff_inlining): Likewise. + (xcoff_current_function_file): Likewise. + (xcoff_output_standard_types): Remove TARGET_64BIT dependencies from + int and unsigned int. + +Mon Oct 16 12:25:52 1995 Per Bothner + + * fix-header.c: Support different kinds of functions (ANSI and + Posix1). Enable ANSI proptotypes if __STRICT_ANSI__. + (namelist_end): Removed. + (std_include_table): Divide up functions into kinds. + (add_symbols): New function. + (read_scanfile, write_rbrac, main): Use new data structures. + +Thu Dec 14 19:17:12 1995 Torbjorn Granlund + + * rs6000.md (umulsidi3): New pattern. + +Thu Dec 14 18:08:59 1995 Torbjorn Granlund + + * expmed.c (expand_divmod, case TRUNC_DIV_EXPR): Only reject + larger-than-HOST_BITS_PER_WIDE_INT modes for general constants, + not for powers-of-2. + + * i960.md (andsi3): Match op2 with logic_operand, change constraints + accordingly. Output andnot for negative op2. + (iorsi3, xorsi3): Analogous changes. + * i960.c (logic_operand): New function. + (i960_print_operand): Handle code `C'. + * i960.h (PREDICATE_CODES): Add logic_operand. + (CONST_OK_FOR_LETTER_P): Handle `M'. + * i960.md: Move all plain logical patterns together. + * i960.h (SHIFT_COUNT_TRUNCATED): Define as 0 as appropriate. + + * clipper.md (untyped_call): New pattern. + + * m68k.md (ashrsi_31): New pattern. + +Thu Dec 14 17:22:14 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm/arm.c (output_move_double): Extract DFmode constants using + REAL_VALUE_TO_TARGET_DOUBLE. + +Thu Dec 14 15:05:13 1995 Doug Evans + + * Makefile.in (distclean): Delete float.h. + * configure: Set CROSS_FLOAT_H from float_format. + * config/float-i64.h: New file. + * config/float-i32.h: New file. + * config/float-vax.h: New file. + * arm/cross-float.h: Delete. + * arm/t-semi (CROSS_FLOAT_H): Delete. + +Wed Dec 13 19:16:57 1995 Mike Stump + + * expr.c (expand_expr, case ADDR_EXPR): Ensure op0 isn't QUEUED. + +Wed Dec 13 19:12:21 1995 Paul Eggert + + * gcc.c (my_strerror): Return "cannot access" if errno is 0. + (perror_with_name, pfatal_with_name, perror_exec): Don't assume that + the returned value from my_strerror contains no '%'s. + (sys_nerr): Declare only if HAVE_STRERROR is not defined. + +Wed Dec 13 19:05:47 1995 Alan Modra (alan@spri.levels.unisa.edu.au) + + * Makefile.in (c-parse.y, objc-parse.y): Add warning that file is + automatically generated. + +Wed Dec 13 15:40:30 1995 Mike Stump + + * function.c (identify_blocks): Start with 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 + + * 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 + + * rs6000/win-nt.h (ASM_OUTPUT_EXTERNAL): Do not emit .extern for + builtin functions. + +Tue Dec 12 15:37:48 1995 David Edelsohn + + * rs6000.c: Replace many uses of fprintf with putc and fputs. + (output_function_profiler): Use more efficient mnemonics, target + dependent mnemonics, asm_fprintf, and reg_names array. + + * rs6000.h: Replace many uses of fprintf with putc and fputs. + + * rs6000.h (INT_TYPE_SIZE): Remove TARGET_64BIT dependency. + (MAX_INT_TYPE_SIZE): Delete. + +Tue Dec 12 13:58:57 1995 Doug Evans + + * h8300/t-h8300 (MULTILIB_{OPTIONS,DIRNAMES}): Add -mint32 support. + +Sun Dec 10 18:51:21 1995 Torbjorn Granlund + + * rs6000.md (matcher for neg:SI (geu:SI ..)): Get ppc syntax right. + +Sun Dec 10 08:47:16 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (simplify_if_then_else): Convert "a == b ? b : a" to "a". + + * expr.c (expand_expr, case CONSTRUCTOR): If TREE_READONLY, + set RTX_UNCHANGING_P in TARGET. + (expand_expr, case COMPONENT_REF): If result is BLKmode, + use that to access object too. + +Sun Dec 10 01:06:57 1995 Jeffrey A. Law + + * pa.md (millicode delay slot description): Remove reference + to defunct TARGET_MILLICODE_LONG_CALLS. + +Sat Dec 9 18:05:03 1995 Jim Wilson + + * expr.c (expand_expr, case INDIRECT_REF): Correct typo in May 8 + change. + + * sh.h (ADDRESS_COST): Define. + * sh.md (subsi3): Rename to subsi3_internal. Add new define_expand + to handle subtracting a register from a constant. + +Fri Dec 8 19:17:30 1995 Mike Meissner + + * rs6000/rs6000.c (input_operand): Allow any integer constant, not + just integers that fit in 1 instruction. + +Fri Dec 8 10:45:07 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm/lib1funcs.asm (RET, RETCOND): Define according to whether we + are compiling for 32 or 26 bit mode. + (all return instructions): Use RET or RETCOND as appropriate. + +Wed Dec 6 06:58:23 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.c (arm_gen_constant): New function. + (arm_split_constant): Split most of the functionality into + arm_gen_constant. Try to decide which way of handling the constant + is optimal for the target processor. + + * arm.c (arm_prgmode): New enum. + (target_{cpu,fpe}_name, arm_fast_multiply, arm_arch4): New variables. + (all_procs): New table describing processors and capabilities. + (arm_override_options): New function. + (arm_return_in_memory): New function. + (arm_rtx_costs): Adjust the multiply costs to cope with processors + with fast multiplication instructions. + (output_move_double): Use the ldm/stm variants more efficiently. + Delete cases that can no-longer occur. + (output_return_instruction, output_func_epilogue): Use TARGET_APCS_32, + not TARGET_6 for determining the type of return instruction to emit. + (final_prescan_insn case CALL_INSN): Use TARGET_APCS_32, not TARGET_6 + to determine condition preservation. + * arm.h (CPP_SPEC): Add defines for the cpu type, hard or soft floating + point, and the APCS PC size. + (TARGET_*): Restructure. + (ARM_FLAG_*): Many new definitions for different target options, not + all of which are supported yet. + (TARGET_SWITCHES): Use the ARM_FLAG_* definitions instead of explicit + numbers. + (prog_mode_type): New enum. + (floating_point_type): Split emulated floating point into FP_SOFT[23]. + (OVERRIDE_OPTIONS): Call arm_override_options. + (ARM_CPU_NAME): Default to NULL if not defined by a subtarget. + (BYTES_BIG_ENDIAN): Can now be set as a compilation option. + (RETURN_IN_MEMORY, DEFAULT_PCC_STRUCT_RETURN): New definitions. + (GO_IF_LEGITIMATE_OFFSET): Use different HImode offsets if compiling + for an architecture 4 target. The offsets for floating point + constants are the same as for integers if compiling TARGET_SOFT_FLOAT. + (GO_IF_LEGITIMATE_ADDRESS): Don't allow PRE_INC and POST_DEC if + the size is more than 4 bytes. Restrict the range offsets for DImode; + likewise for DFmode when TARGET_SOFT_FLOAT. + (LEGITIMIZE_ADDRESS): Use symbol_mentioned_p, not LEGITIMATE_CONSTANT_P + to determine if a constant address might be better in a register. + Handle DFmode addresses in the same way as DImode if TARGET_SOFT_FLOAT. + (LOAD_EXTEND_OP): If arm_arch4, then HImode also zero-extends. + * arm.md (attributes): Rearrange order, so that condition clobbering + can be automatically determined for call insns. + (attribute cpu): Add new cpu ARM7. + (attribute type): Add new type MULT. + (attribute prog_mode): New attribute. + (attribute conds): Clobbering of call insns can now be determined + using prog_mode attribute. + (function units "write_buf", "write_blockage"): Model the write buffer + as two function units, so that conflicts are avoided more often. + (funcion unit "core"): New function unit, so that elapsed cycles can + be more accurately determined. + (all anonymous patterns): Add names. + (mulsidi3, umulsidi3): New patterns available with fast multiply + variants. + (all call insns): The conds attribute is now determined automatically. + (zero_extendhisi): Expand for architecture 4 variants if appropriate. + (*zero_extendhisi_insn): New pattern. + (extendqi{hi,si}, extendhisi): Expand for architecture 4 variants if + appropriate. + (*extendhisi_insn, *extendqihi, *extendqisi): New patterns. + (storehi_single_op): New expand. + (movhi): Handle architecture 4 expansion. + (*movhi_insn_arch4): New pattern. + (*movhi_*): Adjust applicability conditions to handle architecture 4. + (reload_outdf): Handle pre/post inc/dec reloads. + (tablejump): Delete. + (matcher for optimized tablejump): delete. + (casesi): New expand. + (casesi_internal): New pattern. + * semi.h (EXIT_BODY): Delete. + (TARGET_DEFAULT): Set to ARM_FLAG_APCS_32. + (CPP_SPEC): Define. + arm/cross-float.h: New file, used when building a cross-compiler. + * t-semi: Don't define inhibit_libc when building libgcc2.a. + (CROSS_FLOAT_H): Define. + + * arm.c ({symbol,label}_mentioned_p): New functions. + (add_constant, dump_table, fixit, find_barrier, broken_move): New + support functions for handling constant spilling. + (arm_reorg): New constant spilling pass, for putting unhandlable + constants into the rtl where we can load them efficiently. + (output_load_symbol): Delete. + * arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): No need to handle floating + point constants any more, since arm_reorg will deal with them. + (LEGITIMATE_CONSTANT_P): Is now anything that doesn't contain a + LABEL. + (GO_IF_LEGITIMATE_ADDRESS): Recognize address expressions generated + by arm_reorg, but only after reload has completed. + (MACHINE_DEPENDENT_REORG): Define. + (ASM_OUTPUT_SPECIAL_POOL_ENTRY): There should be nothing left in + the pool, even if it might look like it. + * arm.md (*movsi_insn): Much simpified now that constants are handled + properly. + (movaddr): New expand. + (movsf, movdf): No need to force constants into the pool any more. + (*movdf_hard_insn): Much simplified. + (consttable_4, consttable_8, consttable_end, align_4): New patterns + for supporting embedded constants. + + * configure: New target arm-semi-aof. + * arm.c (strings_fpa): Use a form which is common to both GAS and + ARMASM. + (output_return_instruction, output_func_epilogue): Call + assemble_external_libcall, before trying to generate an abort call + in the assembler. + (arm_asm_output_label): Call ARM_OUTPUT_LABEL, rather than assuming + that labels are followed by a colon. + (aof_text_section, aof_add_import, aof_delete_import, + aof_dump_imports): New functions to support ARMASM assembler + generation. + * arm/aout.h: New file. + * arm/aof.h: New file. + * arm.h (most assembler-specific defines): Move to arm/aout.h. + (CONSTANT_ADDRESS_P): Can't directly access constant strings when + generating assembler for ARMASM. + (ENCODE_SECTION_INFO): Don't define if generating ARMASM assembler. + (ASM_OUTPUT_INTERNAL_LABEL): Generalize, so that it can be used + with all targeted assemblers. + (ASM_OUTPUT_LABEL): Call arm_asm_output_label. + * riscix.h: Include arm/aout.h, not arm/arm.h. + * riscix1-1.h: Likewise. + * semi.h: Likewise. + * arm/semiaof.h: New file. + * arm/t-semiaof: New file. + +Mon Dec 4 22:17:37 1995 Jason Merrill + + * gcc.c (LIBGCC_SPEC): Do link with libgcc when -shared. + * alpha.h (LIBGCC_SPEC): Remove. + * linux.h (LIBGCC_SPEC): Remove. + * svr4.h (LIBGCC_SPEC): Remove. + * i386/t-crtpic (TARGET_LIBGCC2_CFLAGS): Use -fPIC. + * t-pa (TARGET_LIBGCC2_CFLAGS): Use -fPIC. + * sparc/t-sunos41 (TARGET_LIBGCC2_CFLAGS): Use -fPIC. + * sparc/t-sol2 (TARGET_LIBGCC2_CFLAGS): Use -fPIC. + * configure (i386-linux): Use i386/t-crtpic. + + * i386/xm-sco.h: #define NO_SYS_SIGLIST. + +Mon Dec 4 21:30:37 1995 Jim Wilson + + * sh/sh.c (shiftcosts): For SH3, max cost of arithmetic right + shift is 3. + (expand_ashiftrt): For SH3, if shift cost is more than 3, then + call gen_ashrsi3_d to use shad instruction. + +Mon Dec 4 18:29:08 1995 Jason Merrill + + * c-decl.c (finish_struct): Don't mess with the type of bitfields. + +Mon Dec 4 15:28:02 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (store_constructor, record): If field is READONLY, + set RTX_UNCHANGING_P in TO_RTX. + +Mon Dec 4 12:59:33 1995 Ian Lance Taylor + + * 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 + + * pa.h (ASM_OUTPUT_FUNCTION_PREFIX): Handle arbitrary sections. + (ASM_OUTPUT_SECTION_NAME): Define. + +Sat Dec 2 22:19:16 1995 Jeffrey A. Law (law@cygnus.com) + + * pa.h: Replace many uses of fprintf with fputs. + * pa.c: Likewise. + * pa-pro.h: Likewise. + + * pa.h (SECONDARY_RELOAD_CLASS): Don't call secondary_reload_class + to handle trivial cases. + * pa.c (secondary_reload_class): Rework to be more efficient. + +Sat Dec 2 07:52:46 1995 Michael Meissner + + * rs6000/rs6000.md (movsi): Don't split large constants in the + movsi pattern, let the define_split split it later as needed. + +Fri Dec 1 16:00:42 1995 Brendan Kehoe + + * sparc/sparc.c (output_double_int): Handle CODE_LABEL's if v9. + +Fri Dec 1 09:13:23 1995 Michael Meissner + + * 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 + + * 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 + + * sparc.md (seqdi_special_trunc, snedi_special_trunc, + seqsi_special_extend, snesi_special_extend): Delete uses of SUBREG. + Make compare modes match modes of operands. + (snesi_zero_extend, snedi_zero_trunc_sp32, snedi_zero_trunc_sp64, + seqsi_zero_extend, seqdi_zero_trunc_sp32, seqdi_zero_trunc_sp64): + New patterns. + +Thu Nov 30 12:27:22 1995 Michael Meissner + + * genmultilib: Take a 4th argument that says are the exceptions to + the multilibs, so illegal combinations can be eliminated. + + * Makefile.in (multilib.h): Pass $(MULILIB_EXCEPTIONS) as the 4th + argument to genmultilib. + + * configure (powerpc*): Remove little endian and eabiaix versions + of the t-* files. Accept powerpc{,le}-*-sysv in addition to + *-sysv4. + (powerpc{,le}-*-eabisim): Use standard t-eabigas instead of + t-eabisim. + (powerpcle-*-{winnt3,pe}): Add support for Windows NT on PowerPC. + * rs6000/t-{eabiaix,eabisim,eabilegas,ppclegas}: Delete. + + * rs6000/{t-winnt,win-nt.h}: New files for PowerPC Windows NT. + + * ginclude/ppc-asm.h: New file to provide common macros for the + various PowerPC calling sequences. + * rs6000/eabi.asm: Use ppc-asm.h. + + * rs6000/aix3newas.h (CPP_SPEC): Add support for -mcpu=603e, 602, + and 620. + * rs6000/{aix41,powerpc,rs6000,eabi{aix,le}}.h (CPP_SPEC): Ditto. + * rs6000/sysv4{,le}.h (CPP_SPEC): Ditto. + + * rs6000/aix3newas.h (LINK_SPEC): If cross compiling, don't use + absolute paths. + * rs6000/{aix41,aixppc,rs6000}.h (LINK_SPEC): Ditto. + + * rs6000/eabi.h (INVOKE__main): Don't define any more. + (ASM_OUTPUT_INT): Move to sysv4.h. + ({STARTFILE,LIB}_SPEC): If -msim or -mmvme add the appropriate + libraries. + + * rs6000/{eabiaix,eabile,sysv4{,le}}.h (CPP_SPEC): Add support for + -mcall-{aixdesc,nt} directives. + (MULTILIB_DEFAULTS): Define. + + * rs6000/eabi{,le}sim.h (TARGET_DEFAULT, CPP_SPEC): No longer + define, simulator supports floating point. + ({STARTFILE,LIB}_SPEC): If -mvme, use mvme libraries, not + simulator libraries. + + * rs6000/{mach,netware}.h (TARGET_AIX): Define as 0. + + * rs6000/netware.h (RS6000_OUTPUT_BASENAME): Don't redefine + anymore. + (STRIP_NAME_ENCODING): Undef. + + * rs6000/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 + + * rs6000.md (divsi3): Reorder so common mode does not negate + power-of-2 shift optimization. + +Wed Nov 29 22:06:11 1995 J.T. Conklin + + * configure (sparc-*-solaris2*): Add gcrt1.o to extra_parts. + * sparc/sol2.h (STARTFILE_SPEC): Link with gcrt1.o with -pg. + * sparc/sol2-g1.asm: New file, startup code for profiled + executables. + * sparc/t-sol2: Add make rule for gcrt1.o. + * sparc/gmon-sol2.c (_mcleanup): Add support for PROFDIR + environment variable. + +Wed Nov 29 21:41:13 1995 Ian Lance Taylor + + * mips/abi64.h (CPP_SPEC): If -msingle-float and not + -msoft-float, pass -D__mips_single_float. Likewise for -m4650 and + not -msoft-float. + * mips/dec-bsd.h (CPP_SPEC): Likewise. + * mips/dec-osf1.h (CPP_SPEC): Likewise. + * mips/elf64.h (CPP_SPEC): Likewise. + * mips/iris3.h (CPP_SPEC): Likewise. + * mips/iris5.h (CPP_SPEC): Likewise. + * mips/mips.h (CPP_SPEC): Likewise. + * mips/netbsd.h (CPP_SPEC): Likewise. + * mips/osfrose.h (CPP_SPEC): Likewise. + * mips/t-ecoff (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, + MULTILIB_MATCHES): Add -msingle-float support. + +Wed Nov 29 17:57:48 1995 Doug Evans + + * toplev.c (main): Invoke OPTIMIZATION_OPTIONS after target_flags + has been initialized so sets of target_flags aren't clobbered. + + * cccp.c (do_include): Recognize c:\foo as absolute path name in DOS. + + * svr4.h (MD_EXEC_PREFIX): Don't use if cross compiling. + (MD_STARTFILE_PREFIX): Likewise. + (LINK_SPEC): Don't use absolute path names if cross compiling. + * svr3.h (LIB_SPEC): Likewise. + + * gcc.c (do_spec_1): Fix typos in version calculation. + +Wed Nov 29 14:06:13 1995 Jim Wilson + + * sh.md (ashrsi3_d): Use %0 not %1 in output pattern. + + * svr4.h (MAX_OFILE_ALIGNMENT): Define. + + * mips/iris5.h (WORD_SWITCH_TAKES_ARG): Define. + (LINK_SPEC): Add rpath. + * mips/iris6.h (LINK_SPEC): Likewise. + + * stupid.c (stupid_mark_regs): For hard registers, use regno+j + instead of just regno in MARK_LIVE_AFTER and SET_HARD_REG_BIT calls. + + * c-common.c (combine_strings): Add support for WCHAR_TYPE as short. + +Wed Nov 29 13:59:58 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * c-decl.c (duplicate_decls): Add new paramter different_binding_level. + Lots of changes to use new new parameter. + (pushdecl): Delete variable declared_global. New variable + different_binding_level and code to set it. Move extern/static + warning before duplicate_decls call. Don't let global typedefs + conflict with nested extern declarations. Move oldglobal test + inside code for setting IDENTIFIER_LIMBO_VALUE. + (lookup_name_current_level_global): Delete. + * c-tree.h (merge_attributes): New declaration. + * c-typeck.c (merge_attributes): New function. Move code from + common_type to here. + (common_type): Call merge_attributes instead of having inline code. + * integrate.c (integrate_decl_tree): Delete variable newd. + Always set DECL_ABSTRACT_ORIGIN before calling pushdecl. + +Tue Nov 28 21:57:04 1995 Jim Wilson + + * mips.c (mips_function_value): Add check for i > 0 when deciding + if structure should be return in FP registers. + +Tue Nov 28 12:47:52 1995 Jeffrey A. Law + + * pa.md (define split for (plus (reg) (large_constant)): Try + another way to handle this with only 2 insns. From Tege. + +Mon Nov 27 02:05:18 1995 Jeffrey A. Law + + * lib1funcs.asm, pa-pro.h, t-pro.h, xm-papro.h: New PA + target files. + * configure (hppa*-*-pro*): Use new target files. + + * toplev.c (rest_of_compilation): Always call jump_optimize + at least once. + + * pa.h (ASM_OUTPUT_EXTERNAL): Don't let assemble_name clobber + the value of TREE_SYMBOL_REFERENCED. + + * pa-ghpux9.h (LINK_SPEC): Pass "-z" to the linker to enable + trap on null pointer dereference for programs built on hpux9. + * pa-hpux9.h, pa1-ghpux9.h, pa1-hpux9.h: Likewise. + + * pa.c (output_function_prologue): No longer need to keep + track of the total number code bytes when TARGET_GAS && + not TARGET_PORTABLE_RUNTIME. + * pa.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Use .NSUBSPA when + not TARGET_PORTABLE_RUNTIME. + (ASM_OUTPUT_FUNCTION_PREFIX): Define. Prefix functions with + .NSUBSPA when TARGET_GAS and not TARGET_PORTABLE_RUNTIME. + + * pa.md (symbolic high patterns): Use 'H' to print the symbolic + address so that the constant part gets rounded. + * pa.c (print_operand): Handle 'H' operand for high part of a + symbolic address with a rounded constant. + (output_global_address): New argument "rounded_constant". All + callers changed appropriately. + + * x-pa-hpux (FIXPROTO_DEFINES): Add -D_HPUX_SOURCE. + + * pa.h (CPP_SPEC): Only pass -D_HPUX_SOURCE and -D_HIUX_SOURCE if + -ansi is not present. + (CPP_PREDEFINES): Remove -D_HPUX_SOURCE and/or -D_HIUX_SOURCE. + * pa-ghiux.h (CPP_PREDEFINES): Likewise. + * pa-gux7.h (CPP_PREDEFINES): Likewise. + * pa-hiux.h (CPP_PREDEFINES): Likewise. + * pa-hpux.h (CPP_PREDEFINES): Likewise. + * pa-hpux7.h (CPP_PREDEFINES): Likewise. + * pa1-ghiux.h (CPP_PREDEFINES): Likewise. + * pa1-hiux.h (CPP_PREDEFINES): Likewise. + + * pa-hpux.h (LINK_SPEC): If -mlinker-opt, then pass -O to the + linker. + * pa-ghpux.h, pa-hpux9.h, pa-ghpux9.h: Likewise. + * pa1-ghpux9.h, pa1-hpux9.h: Likewise. + * pa.h (LINK_SPEC): Likewise. + (TARGET_SWITCHES): Add -mlinker-opt. + + * pa.md (all peepholes): Disable if TARGET_SOFT_FLOAT. + + * pa.c (pa_reorg): If TARGET_GAS, then emit insns to mark + the beginning and end of the branch table. + * pa.md (begin_brtab): New insn. Just a marker so GCC knows + where to put the .begin_brtab pseudo-op. + (end_brtab): Similarly. + + * pa.h (EXTRA_SECTIONS): Add in_ctors and in_dtors if + CTORS_SECTION_FUNCTION is defined. Else define dummy + versions of CTORS_SECTION_FUNCTION and DTORS_SECTION_FUNCTION. + (EXTRA_SECTION_FUNCTIONS): Add CTORS_SECTION_FUNCTION and + DTORS_SECTION_FUNCTION. + + * pa.md: Add peepholes to improve spill code generated + by reload when we run out of FP registers. + + * xm-pa.h: Remove spurious double-quote. + + * pa.md (call expanders): For indirect calls, load %r22 with the + function's address. + (indirect call patterns): No need to copy the call address into + %r22 anymore. + + * pa.c (output_cbranch): Fix buglet in length handling of + backwards branches with unfilled delay slots. + (output_bb, output_bvb, output_dbra, output_movb): Likewise. + + * pa.md: Fix off-by-one error in length computations for all + conditional branch patterns. + + * pa.h (output_bvb): Declare. + * pa.c (output_bvb): New function to output branch on variable + bit insns. + * pa.md (branch-on-variable-bit): New patterns. + + * pa.h (TARGET_MILLICODE_LONG_CALLS): Delete swtich and all + references. + (output_millicode_call): Declare new function + * pa.md (millicode calls): Update length computation to handle + variable length millicode calls. + (call pattners): Likewise. + (indirect call patterns): Update length compuations and output + templates to handle variable length millicode calls. + (plabel_dereference): Likewise. + * pa.c (override_options): Give warnings when incompatable + options are used. + (output_mul_insn): Call output_millicode_call instead of + output_call, eliminate last argument to output_millicode_call. + (output_div_insn): Likewise. + (output_mod_insn): Likewise. + (output_call): Rewrite long call code to handle variable length + millicode calls. Eliminate support for calling mul, div and mod + millicode routines. + (output_millicode_call): New function for calling mul, div and mod + millicode routines. + + * pa.md (abssi2): New pattern. + + * pa.c (secondary_reload_class): Loads from reg+d addresses into + FP registers don't need secondary reloads. + * pa.h: Delete soem #if 0 code. Update some comments. + (EXTRA_CONSTRAINT, case 'Q'): Only accept valid memory addresses. + + * pa.h (RTX_COSTS): Tege's rewrite. + + * pa.c (hppa_legitimize_address): Generate unscaled indexed + addressing for (plus (symbol_ref) (reg)). + (emit_move_sequence): Set REGNO_POINTER_FLAG appropriately + to encourage unscaled indexing modes. + (basereg_operand): New function for unscaled index address support. + * pa.md (unscaled indexing patterns): New patterns for unscaled + index address support. + + * pa.h (MOVE_RATIO): Define. + * pa.md (movstrsi expander): Refine tests for when to use the + library routine instead of an inlined loop copy. Provide an + additional scratch register for use in the inlined loop copy. + (movstrsi_internal): Name the pattern for ease of use. Add + additional scratch register. + * pa.c (output_block_move): Greatly simplify. Use 2X unrolled + copy loops to improve performance. + (compute_movstrsi_length): Corresponding changes. + + * pa.c (print_operand): Handle 'y' case for reversed FP + comparisons. Delete some #if 0 code. Fix various comment typos. + * pa.md (fcmp patterns): Try and reverse the comparison to avoid + useless add,tr insns. + +Sun Nov 26 14:47:42 1995 Richard Kenner + + * Version 2.7.2 released. + + * function.c (fixup_var_refs_1): Make pseudo for DEST + in PROMOTED_MODE unless in a SUBREG. + + * cse.c (insert): Don't put a REG into qty_const. + + * msdos/top.sed: Change version to 2.7.2. + * winnt/config-nt.sed: Likewise. + +Sun Nov 26 14:41:49 1995 Douglas Rupp (drupp@cs.washington.edu) + + * Makefile.in (stamp-objlist): Change .o to $objext. + + * alpha/win-nt.h (CPP_PREDEFINES): Set __unaligned and __stdcall + to null. + (ASM_SPEC): Add a translation for -g to -Zi. + * winnt/ld.c (main): Don't pass -g to link. + * winnt/oldnames.c: Reformat and add some new functions for gnat1. + * winnt/win-nt.h (LINK_SPEC): Pass -g to ld.exe. + Increase default stack size. + * configure ({alpha-dec,i386-ibm}-winnt3.5): Add oldnames.o + to extra_objs. + * libgcc2.c (trampoline): Add getpagesize and mprotect for WINNT. + +Sun Nov 26 14:25:26 1995 Uwe Seimet (seimet@chemie.uni-kl.de) + + * atari.h (FUNCTION_VALUE): Deleted; incorrect. + +Sun Nov 26 14:23:03 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * fixincludes (curses.h): Allow space or tab after bool keyword, + instead of tab or tab. + +Sun Nov 26 14:14:11 1995 Oliver Kellogg (oliver.kellogg@space.otn.dasa.de) + + * 1750a.md (pattern for HImode PSHM): Corrected. + (trunchiqi2, zero_extendqihi2, extendhftqf2): Corrected. + (pattern for movhi of CONST_INT to REG): Corrected. + (divmodqi pattern for DISN): Corrected. + (all shift patterns): Corrected. + + * 1750a.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Corrected. + (ASM_OUTPUT_[datatype]): Corrected datalbl[].size computation + for output of arrays. + +Sun Nov 26 14:08:57 1995 Dave Love + + * mips/iris5.h (NO_IMPLICIT_EXTERN_C): Define this again so + that unistd.h doesn't get badly `fixed' for C++. libg++ will now + build with this definition. + +Sun Nov 26 14:02:43 1995 Robert E. Brown (brown@grettir.bibliotech.com) + + * configure: Better workaround for Nextstep bug. + +Sun Nov 26 13:55:07 1995 Torbjorn Granlund + + * rs6000.md (load_multiple matcher): Fix typo in opcode. + +Sun Nov 26 13:51:08 1995 Lee Iverson + + * final.c (final_start_function): Move call to sdbout_begin_function + back to final_scan_insn on MIPS systems so parameter descriptions are + recognized. + +Sun Nov 26 13:43:06 1995 DJ Delorie (dj@delorie.com) + + * msdos/top.sed: Don't insert "go32". + +Sun Nov 26 12:08:23 1995 Jim Wilson + + * combine.c (nonzero_bits, case REG): Put POINTERS_EXTEND_UNSIGNED + code before stack pointer code. Return nonzero at end of stack + pointer code. + + * sparc.h (PRINT_OPERAND_ADDRESS): Handle CONST inside PLUS. + + * Makefile.in (cppalloc.o): Add a rule to build it. + + * alpha.c (alpha_emit_set_const): Don't output SImode sequences + that rely on invisible overflow. Sign extend new when SImode. + Don't recur if new == c. Don't allow shift outside mode. Make + logical right shift be unsigned. + +Sun Nov 26 11:37:50 1995 Arne H. Juul (arnej@idt.unit.no) + + * Makefile.in (compare*): Add "|| true" to avoid spurious + failure messages from some versions of make. + +Sun Nov 26 11:20:09 1995 Dmitry K. Butskoy (buc@stu.spb.su) + + * expr.c (truthvalue_conversion): Add declaration. + +Sun Nov 12 18:09:35 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * Version 2.7.1 released. + + * function.c (put_reg_into_stack): New arg volatile_p. + (put_var_into_stack): Call with new arg. + +Sat Nov 11 08:25:34 1995 Jim Wilson + + * reload.c (output.h): Include it. + * Makefile.in (reload.o): Add dependence on output.h. + +Thu Nov 9 11:24:20 1995 Jim Wilson + + * mips.h (HARD_REGNO_NREGS): If FP_REG_P, always use UNITS_PER_FPREG + to calculate number of words needed. + +Thu Nov 9 11:04:50 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) + + * 1750a.md (cmphf): Addd Base Reg with Offset address mode (LB,STB,..) + (movqi,movhi,movhf,addqi3,addhf3,subqi3,subhf3,mulqihi3): Likewise. + (mulhf3,divhf3,andqi3,iorqi3): Likewise. + (define_peephole): Remove the Base mode peepholes. Replace the + special addqi define_insn for "LIM Ra,sym,Rb" by a define_peephole. + (ashlqi3): Took out futile 0th alternative. + (lshrqi3, lshrhi3, ashrqi3, ahsrhi3): Correct case of non-constant + shift count. + + * 1750a.h (REG_ALLOC_ORDER): Define. + (REGNO_OK_FOR_BASE_P): Include stack pointer in test against + reg_renumber[REGNO]. + (ASM_OUTPUT_DESTRUCTOR): Remove bogus assembler comment. + +Thu Nov 9 11:01:33 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case ARRAY_REF): Properly convert types + of index, size, and multiplication. + +Wed Nov 8 09:00:22 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.md (mov*cc_{,soft_}insn): Use match_operator to test the + comparison and check that the condition code register is used. + +Wed Nov 8 08:49:35 1995 Michael Meissner + + * rs6000/sysv4.h (ASM_OUTPUT_{CONSTRUCTOR,DESTRUCTOR}): Undef before + including svr4.h. + +Tue Nov 7 10:58:12 1995 Torbjorn Granlund + + * m68k.md (subxf3): Properly name pattern. + +Tue Nov 7 10:53:09 1995 Michael Meissner + + * libgcc2.c (__{C,D}TOR_LIST): For AIX, initialize these arrays to + 0,0, just like NeXT to avoid a warning message from the AIX 4.1 + linker. + +Tue Nov 7 09:58:34 1995 John F. Carr + + * cppexp.c (cpp_lex): Correctly parse character constants. + +Tue Nov 7 09:52:15 1995 Jason Merrill + + * rs6000.h (ASM_OUTPUT_{DES,CONS}TRUCTOR): Define. + +Mon Nov 6 10:27:15 1995 Doug Evans + + * combine.c (force_to_mode): Fix typo. + +Sun Nov 5 18:37:02 1995 Torbjorn Granlund + + * m68k.md (cmpxf): Don't call force_const_mem, it looses for PIC; + get predicates right instead. Get rid of separate DEFINE_EXPAND. + (addxf3, subxf3, mulxf3, divxf3): Likewise. + (All XFmode patterns): Delete `F' and `G' constraints. + (absxf2, negxf2): Delete spurious condition on TARGET_FPA. + +Sun Nov 5 11:05:44 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * fixincludes (malloc.h): Fix return type of {m,re}alloc. + +Sun Nov 5 11:02:26 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * cse.c (invalidate): For a pseudo register, do a loop to + invalidate all table entries, irrespective of mode. + +Sun Nov 5 10:57:43 1995 Richard Kenner + + * combine.c (force_to_mode): Put in last change properly. + +Sun Nov 5 10:53:49 1995 Jeffrey A Law (law@cygnus.com) + + * pa.h (CONDITIONAL_REGISTER_USAGE): Make sure FP regs + get disabled regardless of PA1.0 vs PA1.1 code generation + when TARGET_SOFT_FLOAT or TARGET_DISABLE_FPREGS is on. + +Sun Nov 5 10:49:43 1995 Doug Evans + + * i960.c (emit_move_sequence): Add a scratch register to + multi-reg stores. + (i960_output_move_{double,quad}): New functions. + (i960_print_operand): Handle new operand types E, F. + * i960.md (movdi matchers): Rewrite. + (store_unaligned_di_reg): New pattern. + (movti matchers): Rewrite. + (store_unaligned_ti_reg): New pattern. + +Sun Nov 5 10:45:24 1995 Ian Lance Taylor (ian@cygnus.com) + + * mips.h (MULTILIB_DEFAULTS): Define. + * mips/elf64.h, mips/iris6.h (MULTILIB_DEFAULTS): Define. + +Sun Nov 5 10:41:48 1995 Jim Wilson + + * reload.c (push_reload): Delete abort for RELOAD_OTHER case added + in last change. + * reload1.c (emit_reload_insns): For RELOAD_OTHER output reloads, + output the reload insns in descending order of reloads. + + * sh.md (mulsidi3-1, mulsidi3, umulsidi3-1, umulsidi3): Enable. + (smulsi3_highpart-1, smulsi3_highpart): New patterns. + (umulsi3_highpart-1, umulsi3_highpart): Likewise. + (movdi-1): Add r/x constraint. + * t-sh (MULTILIB_OPTIONS): Add m2. + (MULTILIB_DIRNAMES): Add m2. + (MULTILIB_MATCHES): Define. + + * sparc.h (RTX_COSTS, case MULT): Check for TARGET_SPARCLITE. + + * abi64.h, elf64.h (CPP_SPEC): Add -EB and -EL support. + +Sat Nov 4 10:36:26 1995 Jim Wilson + + * sh.md (casesi_worker): Change constraint from = to +. + + * svr4.h (ASM_IDENTIFY_GCC_AFTER_SOURCE): Delete. + (ASM_IDENTIFY_GCC): Output stab here. + +Sat Nov 4 10:32:37 1995 John Carr + + * cpplib.c (finclude): Set current input pointer when input + is not a regular file. + + * cppmain.c: Define progname, required by cpplib. + +Sun Oct 29 07:48:36 1995 Michael Meissner + + * xcoffout.h (DBX_FINISH_SYMBOL): Deal with names created via + the __asm__ construct that start with a leading '*'. + * xcoffout.c (xcoff_declare_function): Likewise. + +Sun Oct 29 07:45:41 1995 Jim Wilson + + * stupid.c (stupid_mark_refs): Handle SUBREG of pseudo-reg in a + SET_DEST same as we handle a pseudo-reg in a SET_DEST. + +Sun Oct 29 07:43:15 1995 Pat Rankin + + * libgcc2.c (L_eh: __unwind_function): Implement for VAX. + * vax.h (RETURN_ADDRESS_OFFSET, RETURN_ADDR_RTX): Define. + +Sun Oct 29 12:39:08 1995 Richard Kenner a + + * i386/sol2.h (CPP_PREDEFINES): Add -D__SVR4. + +Sun Oct 29 07:14:36 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * reload.c (find_equiv_reg): Check for nonsaving setjmp. + +Fri Oct 27 15:15:56 1995 Jim Wilson + + * Makefile.in (out_object_file): Depend on TREE_H. + +Fri Oct 27 06:42:36 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (call_operand): Only allow reg 27 on NT too. + * alpha.md (call_value_nt, call_nt): Force non-SYMBOL_REF + into reg 27, just like for OSF. + + * rs6000.c (struct asm_option): Changed from struct option. + (expand_block_move_mem): Remove erroneously-added line. + + * expr.c (clear_storage): SIZE is now rtx, not int. + (store_constructor): Call clear_storage with rtx. + (get_inner_reference): Convert index to precision of + sizetype, not POINTER_SIZE. + (expand_expr, case ARRAY_REF): Likewise. + * expr.h (clear_storage): Second arg is rtx, not int. + +Fri Oct 27 05:45:58 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * combine.c (force_to_mode, case ASHIFTRT): Properly handle + mask wider than HOST_WIDE_INT. + + * c-decl.c (pushdecl): Don't test TREE_PUBLIC when deciding whether + to register a duplicate decl in the current block. + +Thu Oct 26 21:55:39 1995 Jason Merrill + + * calls.c (expand_call): Don't trust the callee to copy a + TREE_ADDRESSABLE type. + * function.c (assign_parms): Likewise. + +Thu Oct 26 19:25:05 1995 Mike Stump + + * libgcc2.c (__unwind_function): Provide a default definition for + implementations that don't yet have a function unwinder. + +Thu Oct 26 18:08:19 1995 Paul Eggert + + * cccp.c (handle_directive): Don't treat newline as white + space when coalescing white space around a backslash-newline. + +Thu Oct 26 17:57:34 1995 Ian Lance Taylor + + * mips-tdump.c (enum st): Define st_Struct, st_Union, and st_Enum. + (st_to_string): Handle them. + (type_to_string): Add fdp argument; pass it to emit_aggregate. + (print_symbol): Add fdp argument; pass it to type_to_string. + Handle st_Struct, st_Union, and st_Enum. + (emit_aggregate): Add fdp argument. Handle opaque types. Map + through RFD entries. + (print_file_desc): Pass FDR to print_symbol. + (main): Pass null FDR to type_to_string. + +Thu Oct 26 08:07:10 1995 Michael Meissner + + * configure (powerpc-ibm-aix[456789]*): Use rs6000/t-newas, + not rs6000/t-rs6000. + (rs6000-ibm-aix3.2.[456789]*): Likewise. + (rs6000-ibm-aix[456789]*): Likewise. + + * rs6000/t-newas: Copy from t-rs6000. + * t-rs6000: Don't build -mcpu=common multilib variants of libgcc.a. + + * rs6000.md (load_multiple insn): If address register is among regs, + don't load it with a lwsi instruction, which is undefined on PowerPC. + +Thu Oct 26 08:01:32 1995 Jim Wilson + + * dwarfout.c (output_compile_unit_die): Handle language_string + of "GNU F77". + + * reload.c (find_reloads_address): When check for out of range constant + plus register, accept any hard register instead of just fp, ap, sp. + + * combine.c (distribute_notes): For Oct 19 change, add additional + check to verify that place has a valid INSN_CUID. + + * sparc/t-vxsparc (LIBGCC1_TEST): Define. + + * sh.md (negdi2): Use TARGET_LITTLE_ENDIAN. + + * combine.c (force_to_mode, case ASHIFTRT): Verify mode bitsize is + within HOST_BITS_PER_WIDE_INT before shifting by it. + + * final.c (final_scan_insn): When recur for instruction in delay slot, + add loop around recursive call in case the instruction gets split. + +Thu Oct 26 07:28:45 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * genrecog.c (write_tree_1): Avoid emitting '-2147483648'. + + * jump.c (duplicate_loop_exit_test): Return 0 if found + a NOTE_INSN_LOOP_CONT. + +Tue Oct 24 15:30:14 1995 Jeffrey A Law + + * calls.c (expand_call): Make sure valreg is at least + a full word. + +Sun Oct 22 19:35:41 1995 Jim Wilson + + * sh.h (INIT_SECTION_ASM_OP): Delete. + (HAVE_ATEXIT): Define. + +Sun Oct 22 07:46:04 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * libgcc2.c (__fixuns[xds]fsi): #undef MIN and MAX before #include + of limits.h. + + * pa.c (pa_adjust_cost): Use pa_cpu, not pa_cpu_attr. + +Sun Oct 22 07:38:58 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * alpha.h (CONST_OK_FOR_LETTER_P): Use 'U' for unsigned constants. + * alpha.c (alpha_emit_set_const): Likewise. + * mips.c (gen_int_relational): Likewise. + +Sun Oct 22 07:14:35 1995 Douglas Rupp (drupp@cs.washington.edu) + + * i386.c (i386_return_pops_args): Don't need a FUNDECL to + check for type attributes in FUNTYPE. + +Sat Oct 21 18:17:42 1995 Jim Wilson + + * sh.md (define_delay): Don't accept any instruction for an annulled + slot, only accept those for which in_delay_slot is yes. + * sh.c (find_barrier): When hi_const returns true, increment count_si + by two if found_si is true. + Always use get_attr_length to compute length of instructions. + If count_hi or count_si out of range at end, need two PREV_INSN calls + not one. + When create new label, set LABEL_NUSES to 1. + (reg_unused_after): Ifdef out code for handling labels. + (prepare_scc_operands): New local variable mode. Set it from + sh_compare_op0 or sh_compare_op1. Use it instead of SImode in + force_reg calls. + + * optabs.c (expand_float): Emit missing barrier after unconditional + jump. + +Sat Oct 21 14:16:46 1995 Torbjorn Granlund + + * alpha.md (cmpdf): Make conditional on TARGET_FP. + +Fri Oct 20 19:11:12 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * combine.c (distribute_notes): Delete instructions without + side effect that set a subreg of an unused register. + + * m68k.h (PREFERRED_RELOAD_CLASS): Check for !G constants + for DATA_OR_FP_REGS also. + +Fri Oct 20 18:57:10 1995 Ian Lance Taylor + + * genmultilib: Output negations of unused alternatives, even if + one of the alternatives is selected. + +Fri Oct 20 18:48:50 1995 Jeff Law (law@hurl.cygnus.com) + + * integrate.c (output_inline_function): Turn on flag_no_inline + to avoid function integration once we begin writing deferred + output functions. + +Fri Oct 20 18:46:33 1995 Michael Meissner + + * rs6000.c (float_conv_temp): Delete global variable. + (stack_temps): New static array to hold stack temps. + (offsettable_mem_operand): Delete function. + (offsettable_addr_operand, rs6000_stack_temp): New functions. + (output_epilog): Zero stack_temps. + + * rs6000.h (offsettable_addr_operand): Declare instead of + offsettable_mem_operand. + (PREDICATE_CODES): Use offsettable_addr_operand. + (float_conv_temp): Delete variable. + + * rs6000.md (move_to_float insns): Change move_to_float so + that it doesn't have a clobber of the memory address, and instead + passes the stack temp's memory address as one of the unspec args. + (fix_truncdfsi2): Use rs6000_stack_temp to allocate the temp. + (multiply, shift insns): Fix all cases of multiply and shift insns so + that the right mnemonics are used for -mcpu=common with both + -m{old,new}-mnemonics. + +Fri Oct 20 17:58:19 1995 Jim Wilson + + * expr.c (safe_from_p, case RTL_EXPR): Return 0 if RTL_EXPR_SEQUENCE + exists. Delete code to return 0 if exp_rtl is zero. + + * function.c (init_function_start): Don't call init_insn_lengths here. + * toplev.c (rest_of_compilation): Call it here. + +Thu Oct 19 19:19:06 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-common.c (check_format_info): Make test for null pointer + more general. + +Thu Oct 19 18:56:16 1995 Satoshi Adachi (adachi@wisdom.aa.ap.titech.ac.jp) + + * fixincludes (stdlib.h): Be more general in edit to change + declaration of {c,m,re}alloc. + +Thu Oct 19 18:48:53 1995 Torbjorn Granlund + + * libgcc2.c (__udiv_w_sdiv): If we don't have sdiv_qrnnd, define + dummy variant of __udiv_w_sdiv. + +Thu Oct 19 18:45:21 1995 Jim Wilson + + * alpha.h (ASM_SPEC): If GNU as is the default, then pass -g to + the assembler if -malpha-as. If GNU as is not the default, then pass + -g to the assembler is not -mgas. + + * combine.c (distribute_notes): When search for new place to put + REG_DEAD note, call distribute_links if this new place is between + i2 and i3, and i2 uses the register. + +Thu Oct 19 18:41:36 1995 Michael Meissner + + * rs6000.md (float{,uns}sidf2): Rewrite to break the conversion + process into several general insns. + (move_to_float): New insns to move 2 integer regs into a float register + through memory, taking endianess into account. Make sure that the + floating temporary is a valid address. Use one temporary for all + floats converted. + (fix_truncdfsi2): Take endianess into account. + + * rs6000.c ({low_32_bit,offsettable_mem}_operand): The function + low_32_bit_operand is now unused, delete it. New function + offsettable_mem_operand to determine if a memory address is + offsettable. + * rs6000.h ({low_32_bit,offsettable_mem}_operand): Ditto. + (PREDICATE_CODES): Ditto. + + * rs6000.{c,h} (float_conv_temp): New global. + * rs6000.c (output_epilog): Zero out float_conv_temp. + + * Makefile.in (libgcc{1,2}.a): Allow LIB{1,2}FUNCS_EXTRA files to + end in .S as well as .c and .asm. + +Wed Oct 18 17:56:45 1995 Jose Alonso (sidinf@fpsp.fapesp.br) + + * c-typeck.c (parser_build_binary_op): Warn about x^y==z, etc. + +Mon Oct 9 12:38:06 1995 Michael Meissner + + * protoize.c (reverse_def_dec_list): Silence compiler warnings. + +Mon Oct 9 12:35:54 1995 Andrew Cagney + + * ginclude/va-ppc.h (va_arg): Deal with long longs that would be + passed in the 7th register, and are passed in the stack instead. + +Fri Oct 6 13:47:10 1995 Jim Wilson + + * alpha.h (ASM_SPEC): Add -g. + +Fri Oct 6 13:42:50 1995 Richard Kenner + + * alpha.h (alpha_{arg,auto}_offset): Make extern. + +Fri Oct 6 13:24:43 1995 Michael Meissner + + * rs6000.h (RETURN_ADDRESS_OFFSET): Correct previous change. + +Fri Oct 6 13:14:43 1995 Doug Evans + + * rtlanal.c (reg_set_last): Fix call to reg_set_between_p. + +Tue Oct 3 12:31:38 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stor-layout.c (layout_type, case ARRAY_TYPE): Strip MAX_EXPR + from upper bound when computing length if it just protects against + negative length. + + * expr.c (emit_move_insn_1): When doing multi-word move, show + output is clobbered. + +Tue Oct 3 12:26:07 1995 Jim Wilson + + * cse.c (set_nonvarying_address_components, case AND): Add *pend to + end. Add constant to start instead of subtracting it. + +Tue Oct 3 12:23:28 1995 Torbjorn Granlund + + * combine.c (simplify_rtx): In code that attempts to simplify + conditional expressions, if the result is an NE around another + comparison, return the original expression. + + * longlong.h (mips umul_ppmm): Use `l' and `h' constraints; + remove mflo and mfhi instructions. + +Tue Oct 3 12:21:29 1995 Michael Meissner + + * ginclude/va-ppc.h (va_start, stdarg case): Call + __builtin_next_arg, and ignore the result, so that the compiler + can report the proper error, if the second argument is not the + last argument. + +Tue Oct 3 12:02:51 1995 Kohtala Marko + + * function.c (assign_stack_temp): Adjust full_size field of + temp_slot when splitting an unused slot. + +Tue Oct 3 11:51:59 1995 Mike Stump + + * expr.c (expand_builtin_return_addr): Break out functionality + from expand_builtin. + (expand_builtin): Call expand_builtin_return_addr. + * rs6000.h (RETURN_ADDR_RTX): Remove call to copy_to_reg. + Offset to return address is 4 when !TARGET_64BIT and v4_call_p, + 8 otherwise. + * sparc.h (RETURN_ADDR_RTX): Remove call to copy_to_reg. + * alpha.h (RETURN_ADDR_RTX): New definition. + +Sun Oct 1 21:23:30 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (staticp, case INDIRECT_EXPR): Disable case. + + * expr.c (expand_expr, case COMPONENT_REF): If getting component + of union of variable size, propagate TARGET. + +Fri Sep 29 07:48:09 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (store_expr): When storing promoted value, don't return + MEM if address contains target. + +Thu Sep 28 14:30:03 1995 Paul Eggert + + * cccp.c (rescan): Expand `#if foo && #bar' without a bogus + complaint about preprocessor directives within macro args. + Expand `foo' in `foo#bar' without requiring a space before `#'. + +Thu Sep 28 14:24:26 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (anonymous DImode shift patterns setting cc0): Turned + off due to reload problems. + +Thu Sep 28 14:05:22 1995 Niklas Hallqvist (niklas@appli.se) + + * Makefile.in (USER_H): Move up so can override. + (INSTALL_ASSERT_H): New definition. + (install-headers): Use it. + (stmp-int-hdrs): Handle USER_H being empty. + * config/x-netbsd (INSTALL_ASSERT_H): Define as empty. + + * i386/netbsd.h (WCHAR_{TYPE,UNSIGNED,TYPE_SIZE}): Now int. + * m68k/netbsd.h, ns32k/netbsd.h, sparc/netbsd.h: Likewise. + * vax/netbsd.h: Likewise. + (SIZE_TYPE): Use unsigned int. + + * m68k.c (output_scc_di): Swap operands when needed. + * m68k.h (LEGITIMATE_PIC_OPERAND): Allow SYMBOL_REF_FLAG symref. + * m68k.md: Make both assembler syntaxes do the same for PIC calls. + +Tue Sep 26 16:51:44 1995 Michael Meissner + + * mips.c (override_options): Don't allow anything but integers to + go in the HI/LO registers. + +Tue Sep 26 16:36:18 1995 John F. Carr + + * c-common.c (check_format_info): Don't warn about format type + mismatch if the argument is an ERROR_MARK. + +Mon Sep 25 17:50:50 1995 Craig Burley (burley@gnu.ai.mit.edu) + + * stor-layout.c (put_pending_sizes): New function. + * tree.h (put_pending_sizes): Add declaration. + * tree.c (save_expr): Return original for ERROR_MARK. + +Fri Sep 22 19:20:01 1995 Jeff Law (law@hurl.cygnus.com) + + * expr.c (expand_builtin, case BUILT_IN_MEMCPY): Strip off + all NOP exprs from the source and destination nodes, then + set MEM_IN_STRUCT_P. + +Fri Sep 22 18:50:31 1995 Michael Meissner + + * rs6000/eabi.h (ASM_OUTPUT_INT): Test for whether the integer + being output is also a constant so &sym - &sym2 is not fixed up. + +Fri Sep 22 18:49:07 1995 Peter Flass (FLASS@LBDRSCS.BITNET) + + * i370.md (cmpsi): Add missing constraints to operand 1. + +Fri Sep 22 18:27:33 1995 Torbjorn Granlund + + * i386.h (CONST_OK_FOR_LETTER_P): Make `N' match range 0..255 + for `outb' instruction. + + * pyr.h (PRINT_OPERAND): Handle code `R' for REG. + * longlong.h (pyr umul_ppmm): Use it. + +Fri Sep 22 18:24:38 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-parse.in (enumlist): Propagate error_mark_node. + + * c-aux-info.c (gen_type): Handle ERROR_MARK. + + * alpha.md (movdi): Avoid memory sharing problem when in reload. + +Wed Sep 20 14:27:09 1995 Peter Flass + + * mvs.h (FUNCTION_PROLOGUE): Maintain savearea forward chain + per MVS standards. + +Wed Sep 20 14:20:52 1995 Torbjorn Granlund + + * pyr.md (cmphi recognizer): Make condition match constraints. + (cmpqi recognizer): Likewise. + +Wed Sep 20 12:42:59 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * integrate.c (expand_inline_function): Do copy something setting + the result register if it is setting it to itself and has a REG_NOTE. + + * integrate.c (set_decl_{origin_self,abstract_flags}): Treat + a DECL_INITIAL of error_mark_node the same as one of NULL_TREE. + +Tue Sep 19 19:30:18 1995 Dave Pitts (dpitts@nyx.cs.du.edu) + + * i370.md (cmphi, movhi, movstricthi, extendhisi2): Correct generation + of short integer (Halfword) + ({add,sub,mul,and,ior,xor}hi3): Likewise. + * i370/mvs.h (MACROPROLOGUE): New macro. + (FUNCTION_{PRO,EPI}LOGUE): Added ability to use IBM supplied function + prologue macros. + (FUNCTION_PROLOGUE): Corrected function "in-line" prologue alignment + problems. + (ASM_DECLARE_FUNCTION_NAME): Changed alignment to FullWord. + (ASM_OUTPUT_{SHORT,ASCII}): Reworked. + +Tue Sep 19 19:22:15 1995 Douglas Rupp (drupp@cs.washington.edu) + + * winnt/win-nt.h: Renamed from winnt/win-nt.h. + (LINK_SPEC): Add -noinhibit-exec. + * {alpha,i386}/win-nt.h: Renamed from {alpha,i386}/winnt.h. + Include winnt/win-nt.h, not winnt/winnt.h. + * winnt/oldnames.c: New file. + * winnt/headers.mak (fixinc-nt.obj): Fix typo. + * winnt/config-nt.bat: Change winnt.h to win-nt.h. + * i386/config-nt.sed: Likewise. + * configure ({alpha,i386}-*-winnt3*): Likewise. + +Mon Sep 18 14:00:45 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) + + * 1750a.h (enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): + Added R2 and R0_1. + (REG_CLASS_FROM_LETTER): New letters 't' and 'z'. + (EXTRA_CONSTRAINT): New letter 'Q'. + +Sun Sep 17 12:39:22 1995 Jeff Law (law@snake.cs.utah.edu) + + * pa.h (ASM_DECLARE_FUNCTION_NAME): If a parameter's type + has TYPE_NEEDS_CONSTRUCTING on, then it's passed by invisible + reference. + +Sat Sep 16 17:42:33 1995 Jim Wilson + + * loop.c (find_and_verify_loops): Fix error in last change. + +Sat Sep 16 08:38:22 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.h (GO_IF_LEGITIMATE_ADDRESS): Disallow SYMBOL_REF for + current function. + + * cse.c (recorded_label_ref): New variable. + (insert): Set instead of cse_jumps_altered. + (cse_main): Initialize it and return 1 if nonzero at end. + +Fri Sep 15 18:26:49 1995 Torbjorn Granlund (tege@matematik.su.se) + + * fold-const (div_and_round_double): Change `carry', `quo_est', + and `scale' from plain int to `unsigned HOST_WIDE_INT'. + +Fri Sep 15 18:24:24 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cse.c (insert): Set cse_jumps_altered when inserting a LABEL_REF. + +Fri Sep 15 17:29:41 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) + + * 1750a.c (b_mode_operand): New function. + (print_operand): Added code 'Q'. + +Fri Sep 15 17:27:23 1995 Jim Wilson + + * loop.c (find_and_verify_loops): When moving exit blocks out of + the loop, verify that the target of P is within the current loop. + + * reorg.c (fill_slots_from_thread): Update thread if it is split. + +Fri Sep 15 17:06:51 1995 Michael Meissner + + * rs6000.md (decrement_and_branchsi and related insns): Don't use + a "2" to select a register preference for operand 1 if operand 2 + hasn't been seen yet. + Add appropriate clobbers in decrement_and_branchsi. + Add patterns where the pc/label_ref are interchanged. + + * Makefile.in (gnucompare, stmp-multilib-sub): Remove extra . in + front of $(objext). + + * rs6000.c (output_toc): Align DF constants if STRICT_ALIGNMENT. + + * config/fp-bit.c (FLO_union_type): Add words field if double + precision to get at the separate words. + (FLO_union_type, pack_d, unpack_d): Use FLOAT_BIT_ORDER_MISMATCH + to determine when the bitfields need to be reversed, and + FLOAT_WORD_ORDER_MISMATCH when the words need to be reversed. + +Fri Sep 15 16:41:43 1995 Jeff Law (law@snake.cs.utah.edu) + + * reorg.c (fill_simple_delay_slots): When filling insn's delay slot + with JUMP_INSN, don't assume it immediately follows insn on + unfilled slots obstack. + + * Makefile.in (caller-save.o): Depend on insn-codes.h. + +Thu Sep 14 17:41:49 1995 Jim Meyering (meyering@comco.com) + + * protoize.c (do_cleaning): Don't blank out backslash-escaped + newlines in double quoted strings. + +Thu Sep 14 16:20:35 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * emit-rtl.c (gen_lowpart): If gen_lowpart_common fails + for a REG, load it into a pseudo and try again. + +Thu Sep 14 14:15:16 1995 Stan Cox (coxs@dg-rtp.dg.com) + + * m88k.h (VERSION_INFO1): Removed BCS reference. + * m88k/dgux.h (ASM_SPEC, *_LEGEND): + Added -mno-legend option. -mstandard no longer implies that legend + legend information not be produced. + (LINK_SPEC): Removed -z text + +Tue Sep 12 19:05:39 1995 Jim Wilson + + * cccp.c (is_system_include): Call skip_redundant_dir_prefix. + +Tue Sep 12 18:58:21 1995 John Carr + + * sparc.md: Change `*return "string"' to "string" in patterns. + +Tue Sep 12 18:48:47 1995 Craig Burley (burley@gnu.ai.mit.edu) + + * function.c (put_var_into_stack): For CONCAT case, order of + placement depends on FRAME_GROWS_DOWNWARD, not STACK_GROWS_DOWNWARD. + +Tue Sep 12 18:34:10 1995 Doug Evans + + * va-sparc.h (v9 varargs va_start): Handle __builtin_va_alist + being stack argument. + + * sparc.h (STATIC_CHAIN_REGNUM): Use %g5 for sparc64. + (TRAMPOLINE_TEMPLATE): Rewrite for sparc64. + (TRAMPOLINE_SIZE): Is 40 for sparc64. + * sparc.c (sparc64_initialize_trampoline): Rewrite. + +Tue Sep 12 18:30:22 1995 Douglas Rupp (drupp@cs.washington.edu) + + * cp/Make-lang.in (cc1plus) : Removed unnecessary $(exeext). + + * configure: Added code to handle gcc_extra_objs. + (alpha-winnt): Changed xmake_file to winnt/x-winnt. + Added extra_gcc_objs=spawnv.o; changed extra_programs to ld.exe. + (i386-winnt): Changed xmake_file to winnt/x-winnt. + Added extra_gcc_objs=spawnv.o; changed extra_programs to ld.exe. + * configure.bat: Changed to used common winnt/config-nt.bat. + * Makefile.in: Changed various .o's to .$(objext)'s + (specs): Removed unnecessary $(exeext). + (EXTRA_GCC_OBJS): New variable. + (clean): Removed $(LIB2FUNCS_EXTRA) + * objc/Makefile: Changed archive command for libobjc.a to use $? + for objects. + + * alpha/x-winnt, i386/x-winnt: Deleted. + * alpha/config-nt.bat, i386/config-nt.bat: Deleted. + * alpha/config-nt.sed, i386/config-nt.sed: Moved architecture + independent commands to config/winnt/config-nt.sed. + * alpha/winnt.h: Added -D_M_ALPHA to CPP_PREDEFINES. + Changed LIB_SPEC to be compatible with Gnu ld for NT. + * i386/winnt.h: Added -D_cdecl=__attribute__((__cdecl__)). + Change LIB_SPEC to be compatible with Gnu ld for NT. + * winnt/config-nt.bat, winnt/config-nt.sed: New files. + * winnt/dirent.{c,h}, winnt/fixinc-nt.c, winnt/headers.mak: New files. + * winnt/ld.c: Changed precedence of libraries to look for + libfoo.lib before libfoo.a + Changed to work like Gnu ld for NT. + * winnt/libgcc.mak, winnt/mklibgcc.c: New files. + * winnt/spawnv.c: Changed spawn function entry points to __spawn* + instead of spawn*. + * winnt/x-winnt: New file. + * fixinc-nt.sed: New file. + * fixinc.winnt: Rewritten to use fixinc-nt.sed. + + * gcc.c: Remove fix_argv kludge. + +Tue Sep 12 13:24:17 1995 Michael Meissner + + * rs6000.md (power subdi3 pattern): Fix pattern to have 5 + alternatives, and correct 4th alternative to match reality. + + * rs6000.md (adddi3, subdi3, negdi2): Add constraints so output reg + does not overlap one reg with one of the inputs. + +Tue Sep 12 13:09:48 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.c (output_scc_di): Fixed for non-SGS_CMP_ORDER syntax. + + * collect2.c (scan_libraries): Cast lsyms' alloca to LDSYM*. + +Tue Sep 12 13:04:12 1995 Niklas Hallqvist (niklas@appli.se) + + * stmt.c (expand_start_stmt_expr): Do stack adjust in right place. + + * stdarg.h (__gnuc_va_list): Make char * for NetBSD. + +Tue Sep 12 12:44:46 1995 Jason Merrill + + * ginclude/va-ppc.h (va_arg): Reorganize to avoid BIND_EXPRs of + aggregate or array type. + +Tue Sep 12 12:42:27 1995 Ian Lance Taylor + + * fixincludes: Fix HP/UX for g++ -pedantic-errors. + + * fixincludes (curses.h): typedef bool need not take up entire line. + +Mon Sep 11 19:05:42 1995 Stan Cox (coxs@dg-rtp.dg.com) + + * c-typeck.c (digest_init): Don't recursively call digest_init + when in traditional mode if the type is invalid. + +Mon Sep 11 18:58:26 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) + + * 1750a.md: Added DLB/DSTB peepholes for HFmode. + Corrected mnemonics for HImode DSTB peephole. + +Mon Sep 11 18:48:06 1995 Michael Meissner + + * config/fp-bit.c (FLO_union_type): Remove bitfields to set sign, + exponent, and mantissa, and add value_raw field, which is an + integer of the appropriate type. If _DEBUG_BITFLOAT is defined, + provide little and big endian bitfields. If the macro + FLOAT_BIT_ORDER_MISMATCH is defined, use explicit bitfields. + (pack_d, unpack_d): Switch to use value_raw and explicit shifts + and masks so that we don't have to worry about whether the target + is big or little endian unless FLOAT_BIT_ORDER_MISMATCH is + defined. If single precision floating point, rename to pack_f and + unpack_f, so there is no confusion in the debugger. + + * rs6000.h (rs6000_abi): New enumeration to describe which + ABI we're conforming to. + (rs6000_stack): Use abi enum, not AIX vs. V.4 boolean. + (ASM_OUTPUT_OPTIONS): New macro to print output options in .s file. + (ASM_FILE_START): Use it. + (output_options,rs6000_float_const): Declare new functions. + + * rs6000.c (output_option{,s}): New functions to write -f, -m, + and -W options to the asm file. + (rs6000_float_const): New function to generate floating point + constants portably used in signed,unsigned -> double conversions. + (rs6000_stack_info,debug_stack_info): Use ABI enumeration instead + of AIX vs. V.4 boolean. + + * rs6000.md (float{,uns}sidf2): Call rs6000_float_const to + portably build the proper floating point constant for conversions. + (movdi): Properly handle movdi of CONST_{INT,DOUBLE} on little + endian systems. + + * rs6000/sysv4.h (LIBGCC2_WORDS_BIG_ENDIAN): Define to be 0/1 + depending on the target endianess. + (ASM_FILE_START): Define, to call output_options in addition to + output_file_directive. + (TRAMPOLINE_SIZE): Correct size to match code. + + * rs6000/eabi{,le}sim.h (CPP_SPEC): Define the correct endian + macro for varargs/stdargs use. + +Mon Sep 11 18:41:58 1995 Jim Wilson + + * c-decl.c (redeclaration_error_message): For TYPE_DECLs, return 0 + if TYPE_MAIN_VARIANT of old type is same as new type. + +Mon Sep 11 17:39:35 1995 Rob Ryan (robr@cmu.edu) + + * xcoffout.c (xcoff_inlining): New variable, used in place of + xcoff_current_include_file when determining whether to use + absolute line numbers. + (xcoffout_source_file): Switched to using xcoff_inlining to + determine when to emit .bi/.ei directives. + +Mon Sep 11 16:55:06 1995 Torbjorn Granlund + + * m68k.md (cmpdi): Change patterns to allocate scratch register at + RTL generation time. + (tstdi): Likewise. + +Sun Sep 3 09:03:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (size_binop): Don't pass 1 to NOTRUNC. + +Thu Aug 31 19:27:00 1995 Roland McGrath + + * libgcc2.c: Include longlong.h. + [L_udivdi3 || L_divdi3 || L_umoddi3 || L_moddi3] (__udivmoddi4): + Define this `static inline' when defining these, so they all + remain leaf functions. + +Thu Aug 31 18:38:21 1995 Paul Eggert + + * c-parse.in (ends_in_label): New %union member. + (stmts, stmt_or_label): Use new member to avoid lexical lookahead hack. + (lineno_stmt_or_labels): New rule. + (lineno_stmt_or_label, stmt_or_label): Yield nonzero if it ends + in a label. + +Thu Aug 31 08:31:40 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cse.c (canon_hash, CONST_DOUBLE): Hash integer and real + differently. + * varasm.c (struct rtx_const): Add new field DI to union. + (decode_rtx_const, case CONST_DOUBLE): Use to hash CONST_DOUBLE + representing an integer. + + * va-alpha.h (__gnuc_va_list): Make __offset an int. + * alpha.c (alpha_builtin_saveregs): Properly compute address + of __offset both both OSF and WINNT. + + * xm-alpha.h (sbrk): Don't define here. + * gmon.c (sbrk): Define here for __alpha. + * toplev.c (sbrk): Likewise. + * mips-tfile.c (malloc, calloc, realloc): Don't define for anybody. + + * reload.c (push_reload): Add case for output reload of a SUBREG + of a hard reg when output mode is invalid for that mode. + In both that case and existing case for in, don't remove SUBREG. + * reload1.c (emit_reload_insns): Emit RELOAD_OTHER output reloads last. + +Tue Aug 29 19:16:06 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-common.c (decl_attribute, case A_PACKED): Check is_type first. + (decl_attribute, case A_T_UNION): Likewise. + Don't access TYPE_FIELDS if DECL is zero. + * c-decl.c (finish_struct): If transparent_union attribute + specified, validate it once we finish laying the union out. + +Mon Aug 28 05:58:03 1995 Paul Eggert + + * arm.c (arm_gen_movstrqi): Remove unused variable const_sxteen. + + * bi-lexer.c (buffer, inpoint): Remove unused variables. + + * i370/mvs.h, i370/mvs370.c (mvs_label_emitted): Renamed + from mvs_label_emited. + + * msdos/configur.bat: Fix misspelling of `maintainer-clean'. + +Sat Aug 26 06:57:17 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * reload.c (push_secondary_reload): If X is a paradoxical SUBREG, + get mode and thing to reload from inside. + * reload1.c (emit_reload_insns): Do nothing for SUBREG whose + operand is unused subsequently. + In secondary reload case, if paradoxical SUBREG for output, reload + thing inside SUBREG, just like gen_reload. + +Fri Aug 25 19:26:53 1995 Paul Eggert + + * c-typeck.c (set_init_label): Don't die if an entire + brace-pair level is superfluous in the containing level. + +Fri Aug 25 19:22:46 1995 Michael Meissner + + * configure (powerpc{,le}-eabisim): Add support for a new target + that works under the PSIM simulator. + * rs6000/eabisim.h, rs6000/eabilesim.h, rs6000/t-eabisim: New files. + + * rs6000/eabi.h (STRICT_ALIGNMENT): If little endian, always set + strict alignment to 1. + +Fri Aug 25 19:22:23 1995 David Edelsohn + + * rs6000.md ({add,sub,mulsi}di3): Support both endian possibilities. + (negdi2): Likewise. + +Fri Aug 25 19:10:41 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) + + * 1750a.md: Added peephole definitions for Load/Store Base insns + and eliminating redundant load in an equivalent store/load sequence. + +Fri Aug 25 18:33:27 1995 Craig Burley (burley@gnu.ai.mit.edu) + + * toplev.c (report_error_function): Don't attempt to use input + file stack to identify nesting of #include's if file name oflocation + diagnosed is not same as input_filename. + +Fri Aug 25 07:31:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * integrate.c (output_inline_function): Switch to function obstack. + +Mon Aug 21 13:29:54 1995 J"orn Rennecke (amylaar@meolyon.hanse.de) + + * i386.c (arithmetic_comparison_operator): New function. + (print_operand): Take into account that overflow flag is not + set the same as after a compare instruction. + * i386.md (decrement_and_branch_until_zero): Use + arithmetic_comparison_operator to decide if there is comparison + suitable to be expressed by condition code from an arithmetic op. + +Mon Aug 21 13:26:13 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (adddi3, subdi3): "&" added to clobber's constraints. + +Mon Aug 21 12:11:14 1995 Jim Wilson + + * t-sparclite (MULTILIB_*, LIBGCC, INSTALL_LIBGCC): Define. + + * sh.md (movdi-1, movdf-1): Make conditional on reload_completed, + delete conditions checking for pseudo registers and Q addresses. + Add code to handle SUBREG. + + * local-alloc.c (wipe_dead_reg): Make a register mentioned in a + REG_INC note die after the instruction. + + * m68k.md: For all dbra pattern, change constraint from 'g' to 'd*g'. + + * Makefile.in: (underscore.c): Rename rule to stamp-under, and + touch stamp-under at the end. Add new rule for underscore.c that + depends on stamp-under. + + * sh.c (reg_unused_after): For a SEQUENCE, make sure all insns are + safe before returning 1. + + * sh.h (PROMOTE_FUNCTION_ARGS, PROMOTE_FUNCTION_RETURN): Define. + + * sh.c (output_stack_adjust): Add new argument reg. Use it instead + of stack_pointer_rtx. + (sh_expand_prologue, sh_expand_epilogue): Pass new argument to + output_stack_adjust. + +Sat Aug 19 17:34:15 1995 Jim Wilson + + * sparc/gmon-sol2.c (_mcount): Define. + * sparc/sol2.h (STARTFILE_SPEC, ENDFILE_SPEC): Delete superfluous + -pg tests. + (LINK_SPEC): Add libp directories to -Y when -pg. + + * unroll.c (calculate_giv_inc): Handle increment computed by ASHIFT. + +Sat Aug 19 17:28:56 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (subdi3): Should not be commutative. + (one_cmpldi2): Fixed typo with register operand. + +Sat Aug 19 17:20:43 1995 Michael Meissner + + * rs6000.c (output_prolog): Fixup code to set stack pointer + if stack size > 32k. + * rs6000.md (sync_isync): Renamed from sync; added an isync insn + after the sync to properly deal with PowerPC's with split I/D caches. + * sysv4.h (INITIALIZE_TRAMPOLINE): Sync function now named sync_isync. + +Sat Aug 19 17:07:09 1995 Doug Evans + + * h8300.h (STATIC_CHAIN_REGNUM): Use r3. + (REGISTER_NAMES): Print r7 as sp. + (ADDITIONAL_REGISTER_NAMES): Recognize r7. + (ASM_OUTPUT_ALIGN): Alignment is power of 2. + * h8300.md (fancy_btst,fancy_btst1): Branch target must be + operand 0 for length attribute to work. + +Sat Aug 19 16:43:11 1995 Paul Franklin + + * assert.h: Declare __eprintf with attribute noreturn. + +Sat Aug 19 16:40:12 1995 Jason Merrill + + * stddef.h: Don't define wchar_t if __cplusplus is defined. + +Tue Aug 15 18:01:01 1995 Paul Eggert + + * cccp.c (warning_with_line): Fix typo in declaration when + !HAVE_VPRINTF and defined (__STDC__). + +Tue Aug 15 17:57:54 1995 Stephen L Moshier + + * real.c (ediv, emul): Set sign bit of IEEE -0.0 result. + +Tue Aug 15 17:49:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (safe_from_p): Only safe if EXP is variable-size and X + is BLKmode. + + * stmt.c (fixup_gotos): When some fixups done, reset to point + to next instead of zeroing TREE_VALUE, which may be shared. + +Mon Aug 14 09:15:45 1995 Doug Evans + + * m68k/m68kemb.h (STARTFILE_SPEC): Define as empty. + +Mon Aug 14 09:08:57 1995 Pat Rankin + + * vax.c (vms_check_external): Update `pending_head' properly + when the first list element is removed. + +Mon Aug 14 09:01:32 1995 Jeffrey A. Law + + * pa.md (call expanders): Emit a blockage insn after restoring + %r19 when generating PIC. + +Sun Aug 13 21:58:49 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * toplev.c (main): Change text of unsupported -g option warning. + +Sun Aug 13 21:47:57 1995 Andrew McCallum + + * objc/selector.c (sel_get_any_typed_uid): New function. + * objc/objc-api.h (sel_get_any_typed_uid): Declare new function. + +Sun Aug 13 21:43:17 1995 John Carr + + * c-typeck.c (c_expand_asm_operands): Check for read-only output + operand where the variable is read-only but the type is not. + +Sun Aug 13 21:16:12 1995 David Edelsohn + + * rs6000.c (direct_return): Epilogue required if CR saved. + +Sun Aug 13 19:09:25 1995 Jeff Law (law@snake.cs.utah.edu) + + * configure (hppa1.?-hp-hpux10): Recognize and treat just like hpux9. + +Sun Aug 13 19:07:23 1995 Doug Evans + + * i960.md (movdi matchers): Fix src/dest order in unaligned + reg->reg case. + +Sun Aug 13 18:49:01 1995 DJ Delorie + + * i386/xm-dos.h (HAVE_STRERROR): New definition. + + * msdos/configur.bat: Add missing carriage return. + +Sun Aug 13 18:40:55 1995 Andrew Cagney + + * Makefile.in (USER_H): Add va-ppc.h. + +Sun Aug 13 18:36:17 1995 M. Warner Losh + + * stmt.c (expand_asm_operands): Type '0'..'4' operands may + allow regs, so move them to the default case. + +Sun Aug 13 18:32:35 1995 Paul Eggert + + * cccp.c (warning_with_line): New function. + (trigraph_pcp): Use it, to avoid reporting line number. + (vwarning_with_line): Don't report line number if zero. + +Sun Aug 13 18:23:08 1995 Jason Merrill + + * toplev.c (vmessage): Support four arguments. + +Sun Aug 13 18:19:51 1995 Michael Meissner + + * ginclude/stdarg.h: Add ppc svr4 calling sequence support. + * ginclude/varargs.h: Likewise. + * ginclude/va-ppc.h: New file. + +Sun Aug 13 18:05:20 1995 Michael Gschwind + + * configure (pdp-*-*): Add support for t-pdp11. + * t-pdp11: New file. + * Makefile.in (LIBGCC2_CFLAGS): Add TARGET_LIBGCC2_CFLAGS. + +Sun Aug 13 14:50:58 1995 Jim Wilson + + * final.c (final_start_function): Always call sdbout_begin_function + and xcoffout_begin_function, even if no line number info. + + * mips/abi64.h (SETUP_INCOMING_VARARGS): In if statement, only + subtract one for stdarg. Don't subtract PRETEND_SIZE from + argument pointer when calculating stack address. + * mips.h (INITIAL_ELIMINATION_OFFSET): For 64 bit ABI, subtract + current_function_pretend_args_size when converting from argument + pointer. + * va-mips.h (va_start): For stdarg, delete separate define for + 64 bit ABI. For varargs, don't subtract 64, and only add -8 when + all argument registers are used. + + * gcc.c (main): When concat gcc_exec_prefix and + standard_startfile_prefix, put machine_suffix in the middle. + + * iris6.h (INIT_SECTION_ASM_OP): Don't define. + (LD_INIT_SWITCH, LD_FINI_SWITCH, HAS_INIT_SECTION): Don't undef. + (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Ifdef out. + * configure (mips-sgi-irix6, mips-sgi-irix5cross64): Define + use_collect2 to yes. + + * combine.c (move_deaths): When have a multi-reg hard register, + if don't find a note, then recur for each individual hard register. + + * cse.c (set_nonvarying_address_components): Handle addresses + which are the sum of two constant pseudo regs. + (cse_rtx_addr_varies_p): Likewise. + + * Makefile.in (gfloat.h): Add a - before the rm command. + + * loop.c (find_and_verify_loops): Set dest_loop only if + JUMP_LABEL (insn) is non-zero. + +Mon Jul 31 14:31:53 1995 Ian Lance Taylor + + * fixincludes: Avoid clobbering VxWorks drv/netif/if_med.h file. + +Sat Jul 29 16:21:42 1995 Jason Merrill + + * collect2.c: (XCOFF_SCAN_LIBS): Define if OBJECT_FORMAT_COFF and + XCOFF_DEBUGGING_FORMAT. + (SCAN_LIBRARIES): Also define if XCOFF_SCAN_LIBS. + +Sat Jul 29 16:19:42 1995 Stuart D. Gathman + + * collect2.c (scan_libraries): Implement for AIX. + +Sat Jul 29 09:59:33 1995 Michael Gschwind + + * configure: (pdp11-*-bsd) New target. + * 2bsd.h: New file. + + * pdp11.c (output_move_double): Handle CONST_INT parameters properly. + * pdp11.h (RTX_COSTS): Fill in missing default values. + * pdp11.md (truncdfsf2, extendsfdf2, floatsidf2, fix_truncdfsi2): + Allow register parameters, required by gcc to generate correct code. + * xm-pdp11.h: Include tm.h. + +Sat Jul 29 09:55:17 1995 Andreas Schwab + + * configure (m68k-*-linux*aout*, m68k-*-linux*): New targets. + * m68k/linux-aout.h, m68k/linux.h, m68k/t-linux, m68k/xm-linux.h: New. + * m68k.md [USE_GAS]: Output `jbsr' instead of `jsr' for normal + function calls and `bsr.l' instead of `bsr' for pic function calls. + +Sat Jul 29 09:44:13 1995 Jim Wilson + + * sh.h (CAN_DEBUG_WITHOUT_FP): Comment out. + + * reload.c (find_reloads_address_1, case PLUS): When handle SUBREG, + add SUBREG_WORD offset to SUBREG_REG register number. + (find_reloads_address_1, case SUBREG): If a pseudo register inside + a SUBREG is larger than the class, then reload the entire SUBREG. + * sh.h (SUBREG_OK_FOR_INDEX_P): New macro. + (INDEX_REGISTER_RTX_P): Use it. + +Sat Jul 29 09:33:19 1995 Doug Evans + + * mips/netbsd.h (CPP_SPEC): Fix typo. + + * configure (a29k-*-vxworks*): Define extra_parts for crt{begin,end}.o. + * t-a29k, t-a29kbase, t-vx29k ({,CROSS_}LIBGCC1): Define as empty. + +Sat Jul 29 09:15:17 1995 Jeffrey A. Law + + * pa/lib2funcs.asm (gcc_plt_call): Rewrite to avoid the need + for being called by _sr4export. Inline expand $$dyncall to + avoid the need for long-call and PIC support. + +Sat Jul 29 07:30:04 1995 Oliver Kellogg (Oliver.Kellogg@space.otn.dasa.de) + + * ms1750.inc (ucim.m, ucr.m, uc.m): New. + * 1750a.md (cmpqi): Account for unsigned comparisons. + (rotrqi3, rotrhi3): Reworked. + * 1750a.c (notice_update_cc): INCM and DECM set condition codes. + (unsigned_comparison_operator, next_cc_user_is_unsigned): New fcns. + * 1750a.h (FUNCTION_EPILOGUE): Local variables freed from SP, not FP. + (ASM_OUTPUT_BYTE): Make distinct from ASM_OUTPUT_CHAR. + (ASM_OUTPUT_CONSTRUCTOR): Add FILE arg to assemble_name. + +Fri Jul 28 09:40:07 1995 Jeffrey A. Law + + * pa.h (DO_GLOBAL_DTORS_BODY): Use an asm statement to keep optimizer + from deleting an assignment it believes dead. + +Fri Jul 28 08:47:51 1995 Jim Wilson + + * unroll.c (unroll_loop): When preconditioning, output code to + execute loop once if initial value is greater than or equal to final + value. + + * configure (lang_specs_files, lang_options_files): Add $srcdir to + file names when adding them to these variables. + + * c-typeck.c (pointer_int_sum): Don't distribute if intop is unsigned + and not the same size as ptrop. + + * function.c (assign_stack_temp): When split a slot, set base_offset + and full_size in the newly created slot. + (combine_temp_slots): Update full_size when slots are combined. + + * sh.c (reg_unused_after): New function. + * sh.md (define_peephole): Add peepholes to use r0+rN addressing mode + for some address reloads. + + * final.c (final_start_function): If SDB_DEBUG, call + sdbout_begin_function. If XCOFF_DEBUG, call xcoffout_begin_function + instead of xcoffout_output_first_source_line. + (final_scan_insn): Don't call sdbout_begin_function or + xcoffout_begin_function. + * xcoffout.c (xcoffout_output_first_source_line): Delete. + (xcoffout_begin_function): Call dbxout_parms and + ASM_OUTPUT_SOURCE_LINE. + + * va-mips.h: Change every occurance of #if __mips>=3 to + #ifdef __mips64. + * mips/abi64.h (CPP_SPEC): Output -D__mips64 when -mips3, or -mips4, + or -mgp64. Output -U__mips64 when -mgp32. + * mips/dec-bsd.h, mips/elf64.h, mips/iris3.h: Likewise. + * mips/iris5.h, mips/mips.h, mips/netbsd.h, mips/osfrose.h: Likewise. + + * i960.c (i960_function_epilogue): Don't clear g14 for functions with + an argument block. + (i960_output_reg_insn): Likewise. + (i960_output_call_insn): Clear g14 for functions wtih an argument + block. + +Fri Jul 28 08:43:52 1995 Doug Evans + + * i960.c (i960_arg_size_and_align): Correct alignment of XFmode + values in library calls. + * i960.md (movdi matchers): Support odd numbered regs. + +Fri Jul 28 08:37:25 1995 Michael Gschwind + + * pdp11.md (divhi3, modhi3, divmodhi4): Rewrite. + +Wed Jul 26 10:15:52 1995 Hallvard B Furuseth (h.b.furuseth@usit.uio.no) + + * collect2.c (end_file): Fix typo in error message text. + +Wed Jul 26 09:22:22 1995 Jeff Law (law@snake.cs.utah.edu) + + * xm-pa.h (USE_C_ALLOCA): Always define. + * xm-pahpux.h (USE_C_ALLOCA): Likewise. + + * x-pa (CC): Remove useless definition. + * xm-pa.h (HAVE_STRERROR): Define. + (__BSD_NET2__): Define. + +Wed Jul 26 09:10:25 1995 Jason Merrill + + * expr.c (preexpand_calls): Don't look past a CLEANUP_POINT_EXPR. + +Wed Jul 26 08:43:42 1995 Jim Wilson + + * cse.c (cse_insn): When do special handling for (set REG0 REG1), + must delete REG_EQUAL note from insn if it mentions REG0. + + * loop.c (find_and_verify_loops): When moving blocks of code, verify + that the just destination is not in an inner nested loop. + (mark_loop_jump): Don't mark label as loop exit if it jumps to + an inner nested loop. + +Wed Jul 26 08:40:31 1995 Paul Eggert + + * cccp.c (do_include, read_name_map): Omit leading "./" and + trailing "/" when it makes sense. + (skip_redundant_dir_prefix): New function. + +Wed Jul 26 08:36:41 1995 Michael Meissner + + * stmt.c (emit_nop): Do not emit a nop if there is a single + insn before a label or at the start of a function. + +Wed Jul 26 08:21:21 1995 Doug Evans + + * Makefile.in (gfloat.h): Delete previous copy before updating. + +Wed Jul 26 08:18:29 1995 Roland McGrath + + * Makefile.in (STAGESTUFF): Add stamp-crtS. + (crtbeginS.o, crtendS.o, stamp-crtS): New rules; just like + crtbegin.o et al, but compiled using -fPIC. + * configure (*-*-gnu*): Add crtbeginS.o and crtendS.o to $extra_parts. + +Wed Jul 26 08:11:52 1995 Michael Gschwind + + * pdp11.md: Fixed typos ('bhos' -> 'bhis'). + +Wed Jul 26 08:05:41 1995 Jim Wilson + + * hp320.h, m68k.h, m68kv4.h (LEGITIMATE_PIC_OPERAND_P): Reject + CONST_DOUBLE with MEM with invalid pic address. + * reload1.c (real.h): Include it. + * Makefile.in (reload1.o): Depends on real.h. + +Wed Jul 26 07:58:22 1995 Ian Lance Taylor + + * gcc.c (MULTILIB_DIRS): Provide default if not defined. + (multilib_defaults): New static variable. + (default_arg): New static function. + (set_multilib_dir): Ignore default arguments. + (print_multilib_info): Ignore entries which use default arguments. + +Tue Jul 25 10:06:09 1995 Michael Meissner + + * rs6000.md (allocate_stack): Don't copy the LR register to + the new stack end. + * rs6000.c (rs6000_stack_info): Correctly store the LR in + the caller's frame, not the current frame, for V.4 calls. + * rs6000/eabi.asm (_save*, _rest*): Provide all mandated V.4 save + and restore functions, except for the save*_g functions which + return the GOT address. + +Fri Jul 21 14:24:25 1995 Michael Meissner + + * rs6000/eabi.h (__eabi): Load up r13 to be the small data + pointer, unless -mrelocatable. + + * rs6000/aix3newas.h (LINK_SPEC): Import machine independent + functions if -mcpu=common. + * rs6000/milli.exp: Import file referenced in aix3newas.h. + + * rs6000/eabi.asm (__eabi): Support for fixing up user initialized + pointers when -mrelocatable is used. + * rs6000/eabi.h (ASM_OUTPUT_INT): Record any pointers initialized + by the user if -mrelocatable, to be fixed up by __eabi. + (CONST_SECTION_ASM_OP): If -mrelocatable, put read-only stuff in .data, + not .rodata, to allow user initialized pointers to be updated by __eabi. + + * rs6000.h (TARGET_SWITCHES): Add -mdebug-{stack,arg}. + (TARGET_{ELF,NO_TOC,TOC}): Add defaults for non system V. + (rs6000_stack): New structure to describe stack layout. + (RS6000_{REG_SAVE,SAVE_AREA,VARARGS_*}): New macros used to + support both AIX and V.4 calling sequences. + (FP_ARG_*, GP_ARG_*): Ditto. + (FP_SAVE_INLINE): Ditto. + (STARTING_FRAME_OFFSET): Modify to support both AIX and V.4 + calling sequences. + (FIRST_PARM_OFFSET): Ditto. + (REG_PARM_STACK_SPACE): Ditto. + (STACK_POINTER_OFFSET): Ditto. + (FUNCTION_ARG_REGNO_P): Ditto. + ({,INIT_}CUMULATIVE_ARGS): Ditto. + (LEGITIMATE_LO_SUM_ADDRESS_P): Ditto. + (FUNCTION_ARG{,_ADVANCE,PARTIAL_NREGS,PASS_BY_REFERENCE}): Ditto. + (SETUP_INCOMING_VARARGS): Ditto. + (EXPAND_BUILTIN_SAVEREGS): Ditto. + (CAN_ELIMINATE): Ditto. + (INITIAL_ELIMINATION_OFFSET): Ditto. + (LEGITIMATE_CONSTANT_POOL_{BASE,ADDRESS}_P): Ditto. + (GO_IF_{LEGITIMATE_ADDRESS,MODE_DEPENDENT_ADDRESS}): Ditto. + (LEGITIMIZE_ADDRESS): Ditto. + (CONST_COSTS): Ditto. + (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Ditto. + (ASM_OUTPUT_REG_{PUSH,POP}): Use reg_names to print registers. + (function declarations): Add new rs6000.c function declarations, + and delete decls of deleted functions. + (SHIFT_COUNT_TRUNCATED): Parenthesize the expression. + + * rs6000.c (init_cumulative_args): New function to support AIX + and V.4 calling sequences. + (function_arg{,_advance,partial_nregs,pass_by_reference}): Ditto. + (setup_incoming_varargs): Ditto. + (expand_builtin_saveregs): Ditto. + (rs6000_stack_info): Ditto. + (debug_stack_info): Ditto. + (direct_return): Changes to support AIX and V.4 calling sequences. + (first_reg_to_save): Ditto. + (svr4_traceback): Ditto. + (output_{prolog,epilog}): Ditto. + (print_operand): Use reg_names to print registers. Add support + for V.4 HIGH/LO_SUM address modes. + (must_save_cr): Function deleted, in rewrite of AIX/V.4 calling + sequence support. + (rs6000_sa_size): Ditto. + (rs6000_pushes_stack): Ditto. + (output_toc): Add abort if no toc. + + * rs6000.md (call insns): Add a new argument to flag a V.4 + function needs to set bit 6 of the CR. + (elf_{low,high}): New V.4 functions to create addresses via HIGH + and LO_SUM patterns. + (movsi): Use elf_{low,high} if appropriate. + (mov{si,di}_update): Name these patterns for allocate_stack. + (allocate_stack): Support for V.4 stack layout. + (sync): New pattern for V.4 trampolines to issue the sync + instruction. + + * rs6000/sysv4.h (TARGET_SWTICHES): Add -mcall-{aix,sysv}, and + -mprototype. Remove separate flag bit for -mno-toc. + (SUBTARGET_OVERRIDE_OPTIONS): Don't test for -mno-toc. + (FP_ARG_*): Adjust for V.4 calling sequences. + (RS6000_*): Ditto. + (FP_SAVE_INLINE): Ditto. + (toc_section): Eliminate use of AIX style full TOC. + (TRAMPOLINE_{TEMPLATE,SIZE}): Redefine for V.4 support. + (INITIALIZE_TRAMPOLINE): Ditto. + + * rs6000/eabi.h (CPP_SPEC): Define _CALL_SYSV or _CALL_AIX, + depending on whether -mcall-sysv or -mcall-aix was used. + * rs6000/eabile.h (CPP_SPEC): Ditto. + * rs6000/sysv4le.h (CPP_SPEC): Ditto. + + * rs6000/t-eabigas (MULTILIB_{OPTIONS,DIRNAMES}): Delete no-toc + libraries, explicit big endian libraries. + * rs6000/t-ppcgas (MULTILIB_{OPTIONS,DIRNAMES}): Ditto. + + * rs6000/t-eabiaix: New file for eabi, using -mcall-aix as the + default. + * rs6000/eabiaix.h: Ditto. + + * rs6000/t-eabilegas: New file for eabi on little endian systems. + * rs6000/t-ppclegas: New file for V.4 on little endian systems. + + * rs6000/t-rs6000 (MULTILIB_{OPTIONS,DIRNAMES}): Build libgcc.a + for -mcpu=common. + + * configure (powerpc-*-eabiaix): New configuration for defaulting + to old-style AIX calling sequence. + (powerpcle*): Use new t-{eabi,ppc}legas files, to avoid building + explicit little endian multilib libraries. + +Fri Jul 21 13:23:06 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * toplev.c (main): Don't define sbrk #ifdef __alpha__. + +Tue Jul 18 19:23:44 1995 Paul Eggert + + * cccp.c (do_include): Prefix -H output lines with spaces, not dots. + (output_dots): Remove. + + * cccp.c (main): cplusplus_comments now defaults to 1. + But clear it if -traditional or the new option -lang-c89 is given. + * gcc.c (default_compilers, cpp): Specify -lang-c89 if -ansi is given. + This turns off C++ comment recognition. + +Tue Jul 18 19:16:38 1995 Jim Wilson + + * va-sparc.h (va_arg): Add support for 128 bit long double type. + +Tue Jul 18 19:11:18 1995 Jorn Rennecke (amylaar@meolyon.hanse.de) + + * c-common.c (decl_attributes, case A_ALIGNED): Handle is_type + case properly. + +Tue Jul 18 19:03:02 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (fold, case CONVERT_EXPR): Don't merge conversions + if outer is to handle a type with differing precision. + +Mon Jul 17 14:37:35 1995 Pat Rankin (rankin@eql.caltech.edu) + + * vax/vms.h (HAVE_ATEXIT): Define. + (DO_GLOBAL_CTORS_BODY): Don't call atexit; let __do_global_ctors do it. + * vax/xm-vms.h (HAVE_VPRINTF): Define. + +Mon Jul 17 06:41:19 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c ({unsigned,signed}_type): Handle intXX_type_node types. + + * xm-alpha.h (sbrk): Add declaration. + + * convert.c (convert_to_integer): If TYPE is a enumeral type or + if its precision is not the same as the size of its mode, + convert in two steps. + + * m68k.md (tstdi, cmpdi): Use match_scratch, not match_operand. + +Fri Jul 14 19:23:42 1995 Andreas Schwab + + * c-decl.c (field_decl_cmp): Rewritten to make sure that a null + name always sorts low against other names. + * c-typeck.c (lookup_field): Change name comparison to match what + field_decl_cmp does. + +Fri Jul 14 18:46:24 1995 Michael Meissner + + * rs6000.md (movsi): Convert a CONST_DOUBLE into a CONST_INT of + the low part. + +Fri Jul 14 18:30:52 1995 Doug Evans + + * toplev.c (main): Reword dwarf/c++/-g warning. + +Fri Jul 14 18:19:34 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.h (NO_DEFER_POP): Remove last change. + * expr.c (stor_expr): Force stack adjust before NO_DEFER_POP. + (expand_expr, case COND_EXPR): Likewise. + * stmt.c (expand_start_stmt_expr): Likewise. + +Fri Jul 14 07:58:35 1995 Jim Wilson + + * function.c (struct temp_slot): New fields base_offset, full_size. + (assign_stack_temp): For !FRAME_GROWS_DOWNWARD, set p->size to size. + Set new fields base_offset and full_size. + (combine_temp_slots): Use new fields base_offset and full_size instead + of slot and size. + + * loop.c (loop_number_exit_count): New global variable. + (loop_optimize): Allocate space for it. + (find_and_verify_loops, mark_loop_jump): Set it. + (strength_reduce, check_dbra_loop): Use loop_number_exit_count + instead of loop_number_exit_labels. + * loop.h (loop_number_exit_count): Declare it. + * unroll.c (find_splittable_{regs,givs}, final_[bg]iv_value): Use + loop_number_exit_count instead of loop_number_exit_labels. + (reg_dead_after_loop): Check loop_number_exit_count, and fail + if the count doesn't match loop_number_exit_labels. + + * cse.c (cse_insn): Ifdef out code that pre-truncates src_folded. + + * sparc.md (sethi_di_sp64): Return null string at end. + + * function.h (struct function): Add stdarg field. + * function.c (current_function_stdarg): New global variable. + (push_function_context_to): Save it. + (pop_function_context_from): Restore it. + (assign_parms): Set it. + (init_function_start): Clear it. + * output.h (current_function_stdarg): Declare it. + * i960.md: Modify all patterns which handle stores to memory to also + check current_function_varargs and current_function_stdarg. + + * reorg.c (fill_simple_delay_slots): When trying to take instruction + from after the branch, don't continue past target label. Local + variables passed_label and target_uses are no longer necessary. + +Thu Jul 13 19:30:04 1995 Jeff Law (law@snake.cs.utah.edu) + + * pa.c (output_bb): Fix error in long backwards branch with + nullified delay slot. + +Thu Jul 13 19:26:13 1995 Jim Wilson + + * expmed.c (SHIFT_COUNT_TRUNCATED): Use #ifdef not #if. + +Mon Jul 10 20:16:44 1995 Paul Eggert + + * cccp.c (rescan): Don't address outside of array when + preprocessing C++ comments. + +Mon Jul 10 20:05:46 1995 Michael Meissner + + * rs6000.c (expand_block_move): Remove #if 0 conditionals + against using larger block moves. + + * t-rs6000 (EXTRA_PARTS): Copy milli.exp to release dir. + (milli.exp): Copy to build dir from machine dependend dir. + +Mon Jul 10 20:03:29 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.md (matcher for (shiftable_op (cond-exp) (reg))): If + shiftable_op is minus, then subtract from zero when cond fails. + +Mon Jul 10 19:58:26 1995 John F. Carr + + * sparc.h (SELECT_SECTION): Use TREE_CODE_CLASS instead of directly + referencing tree_code_type. + +Mon Jul 10 19:54:31 1995 Jim Wilson + + * protoize.c (reverse_def_dec_list): Delete const qualifiers from + local variables, and delete casts which were casting away const. + +Mon Jul 10 19:14:39 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-lang.c (finish_file): Add missing parm to start_function call. + + * jump.c (jump_optimize): Pass outer_code arg to rtx_cost. + + * varasm.c (assemble_name, bc_assemble_integer): Call + bc_emit_labelref with proper args. + + * function.c (setjmp_args_warning): Remove bogus arg. + +Mon Jul 10 18:20:54 1995 Fergus Henderson (fjh@cs.mu.oz.au) + + * gcc.c (p{fatal,error}_with_name, perror_exec): Quote filename. + +Mon Jul 10 18:12:51 1995 Gran Uddeborg (uddeborg@carmen.se) + + * i386/iscdbx.h (STARTFILE_SPEC): Handle -Xp. + +Wed Jul 5 02:42:17 1995 Per Bothner (bothner@spiff.gnu.ai.mit.edu) + + * cpphash.h (enum node_type): Remove unneeded and non-standard + forward declaration. + +Sat Jul 1 20:15:39 1995 Jim Wilson + + * mips/t-mips, mips/t-mips-gas (MULTILIB_*, LIBGCC, INSTALL_LIBGCC): + Delete. + + * sparc/sol2.h (LINK_SPEC): Revert March 16 change. Do not add -R + for each -L. + + * collect2.c (libcompare): Verify that file name extensions are valid. + Put files with invalid extensions last in the sort. + + * integrate.c (integrate_decl_tree): Set DECL_ABTRACT_ORIGIN before + pushdecl call for local variables. + +Sat Jul 1 08:13:38 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * cpplib.c (output_line_command): If not emitting #line directives + delay returning until after adjust_position has been called. + + * arm.md (mov{si,sf,df}cc): Call gen_compare_reg to generate + the condition code register. + +Sat Jul 1 06:55:09 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (decode_field_reference): New parm PAND_MASK. + (unextend): New parm MASK. + (fold_truthop): Pass new parms to decode_field_reference and unextend. + + * va-alpha.h (__va_tsize): Use __extension__ to avoid warning + on use of `long long'. + + * expr.h (NO_DEFER_POP): Do any pending stack adjusts. + + * recog.c (register_operand): Disallow subreg of reg not allowed to + change size. + +Thu Jun 29 05:51:57 1995 Jeff Law (law@snake.cs.utah.edu) + + * pa.md (reload addsi3): New pattern to avoid reload lossage + with register eliminations. + + * pa.c (output_cbranch): When checking for a jump to the given + insn's delay slot, handle the case where JUMP_LABEL for the + given insn does not point to the first label in a series of + labels. + (output_bb, output_dbra, output_movb): Likewise. + +Wed Jun 28 18:04:56 1995 Jeff Law (law@snake.cs.utah.edu) + + * pa.h (PIC_OFFEST_TABLE_REGNUM_SAVED): Define to %r4. + (CONDITIONAL_REGISTER_USAGE): Make it fixed when compiling + PIC code. + (INIT_EXPANDERS): Delete. + * pa.c (hppa_save_pic_table_rtx): Delete variable. + (hppa_expand_prologue): For PIC generation, copy the PIC + register into a fixed callee register at the end of the + prologue of non-leaf functions. + * pa.md (call expanders): Reload the PIC register from the + fixed callee saved register. Don't try to save the PIC + register before the call. + +Wed Jun 28 18:01:14 1995 Stan Cox (coxs@dg-rtp.dg.com) + + * m88k/dguxbcs.h (ASM_SPEC): Removed -h flag. + * m88k/dgux.h (ASM_SPEC): Likewise. + +Wed Jun 28 17:01:58 1995 David Edelsohn + + * rs6000.c (processor_target_table): Remove CPU name synonyms. + * rs6000.h (CPP_SPEC): Likewise. + * rs6000/sysv4.h (CPP_SPEC): Likewise. + (ASM_SPEC): Likewise. + * rs6000/sysv4le.h (CPP_SPEC): Likewise. + * rs6000/eabile.h (CPP_SPEC): Likewise. + * rs6000/powerpc.h (CPP_SPEC): Likewise. + (ASM_SPEC): Set assembler target according to compiler target. + * rs6000/aix3newas.h (CPP_SPEC): Likewise. + (ASM_SPEC): Likewise. + * rs6000/aix41.h (CPP_SPEC): Likewise. + (ASM_SPEC): Likewise. + +Wed Jun 28 16:25:53 1995 Gran Uddeborg (uddeborg@carmen.se) + + * i386/x-isc3 (INSTALL_HEADERS_DIR): Delete; done by configure. + +Wed Jun 28 16:10:47 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * xm-rs6000.h (alloca): Extern decl added for non-GNU compiler. + +Wed Jun 28 11:31:30 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cpplib.c (progname): Remove definition from here. + + * final.c (final_scan_insn): Fix error in last change. + + * rtlanal.c (reg_set_p_1): Now static; add extra parm. + + * stmt.c: Delete redundant forward decls. + (expand_anon_union_decl): Correctly call expand_decl. + + * toplev.c (strip_off_ending): Strip off any ending; don't + pretend we know what valid endings are. + + * svr4.h (ASM_OUTPUT_SECTION_NAME): Don't crash if DECL is null. + + * rs6000.md ({load,store}_multiple): Don't use indirect_operand + in define_insn; use explicit MEM of register_operand instead. + +Tue Jun 27 11:42:56 1995 Stephen L Moshier + + * i386/i386.c (print_operand, case `J'): Use jns for GE and js for + LT. + +Tue Jun 27 07:58:55 1995 Jason Merrill + + * expr.c (expand_expr, TARGET_EXPR): Only use original_target + if !ignore. + +Tue Jun 27 07:27:26 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (fold_truthop): Commute unextend and convert on + l_const and r_const. + + * c-common.c (decl_attributes, case A_CONSTRUCTOR, A_DESTRUCTOR): + Set TREE_USED. + + * final.c (final_scan_insn): Don't call alter_cond unless + condition is on cc0. + + * stmt.c (expand_asm_operands): Handle input operands that may not + be in a register. + +Mon Jun 26 19:23:05 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm/lib1funcs.asm (L_dvmd_tls): Renamed from L_divmodsi_tools. + * arm/t-semi (LIB1ASMFUNCS): Rename _dvmd_tls from _divmodsi_tools. + +Mon Jun 26 19:18:06 1995 Jim Wilson + + * unroll.c (find_splittable_regs): When completely unrolling loop, + check for non-invariant initial biv values. + +Mon Jun 26 19:13:54 1995 Gran Uddeborg + + * configure (i[345]86-*-isc*): Fix misspelled "rfile" to "ifile". + +Mon Jun 26 18:58:22 1995 Mike Stump + + * expr.c (expand_expr, case COND_EXPR): Protect the condition from + being evaluated more than once. + (do_jump, case TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR): Likewise. + +Mon Jun 26 18:52:36 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * fixincludes (string.h): Fix return value for mem{ccpy,chr,cpy,set} + and str{len,spn,cspn} on sysV68. + +Mon Jun 26 06:54:50 1995 Michael Meissner (meissner@cygnus.com) + + * i386/osfrose.h (LONG_DOUBLE_TYPE_SIZE): Go back to making long + double == double. + +Thu Jun 22 19:14:41 1995 Pat Rankin (rankin@eql.caltech.edu) + + * make-cc1.com (if DO_LINK): Skip c-parse.* processing when + only relinking. + (gas_message): Update to reflect current version, and give + a different message if/when no version of gas is found.xo + +Thu Jun 22 18:52:37 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm/lib1funcs.asm (___modsi3): Correctly set SIGN register for + modulo involving negative numbers. + +Thu Jun 22 18:32:27 1995 Uwe Seimet (seimet@chemie.uni-kl.de) + + * xm-atari.h (HZ): Now 100 and don't define if already defined. + +Thu Jun 22 18:26:12 1995 Jeffrey A Law (law@snake.cs.utah.edu) + + * calls.c (expand_call): Correctly handle returning BLKmode + structures in registers when the size of the structure is not + a multiple of word_size. + * stmt.c (expand_return): Likewise. + + * pa-gux7.h (LIB_SPEC): Undefine before redefining. + * pa-hpux.h (LIB_SPEC): Likewise. + * pa-hpux7.h (LIB_SPEC): Likewise. + + * genmultilib: Work around hpux8 /bin/sh case bug. + + * pa.h (LIB_SPEC): Define to avoid -lg. + +Thu Jun 22 18:19:09 1995 Jason Merrill + + * expr.c (expand_expr, TARGET_EXPR): Use original_target. + + * collect2.c (locatelib): Fix parsing of LD_LIBRARY_PATH. + +Thu Jun 22 18:15:54 1995 Paul Eggert + + * configure: Create an empty Makefile.sed first, to work + around a Nextstep 3.3 bug. + +Thu Jun 22 18:03:44 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * Makefile.in (STAGESTUFF): Add stamp-crt. + (crtbegin.o, crtend.o): Now depend on stamp-crt. + (stamp-crt): New rule, to actually build crt{begin,end}.o. + + * collect2.c (main): Unlink export_file before we return. + +Thu Jun 22 14:25:56 1995 Michael Meissner (meissner@cygnus.com) + + * rs6000.h (STRIP_NAME_ENCODING): Store NAME and strlen(NAME) into + local variables; cast result of alloca to avoid compiler warnings. + +Tue Jun 20 18:25:29 1995 Douglas Rupp (drupp@cs.washington.edu) + + * alpha/config-nt.sed, i386/config-nt.sed: Edit to add + a missing $(exeext) for CCCP. + +Tue Jun 20 18:18:00 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * protoize.c (default_include): Use name and two ints to be + compatible with definition of INCLUDE_DEFAULTS. + +Mon Jun 19 19:24:29 1995 Ted Lemon + + * mips/netbsd.h (ASM_DECLARE_FUNCTION_NAME): Don't emit function label. + +Mon Jun 19 18:34:55 1995 Jason Merrill + + * fixincludes: Don't define wchar_t under C++. + +Mon Jun 19 17:12:41 1995 Paul Eggert + + * cccp.c (collect_expansion): Work around enum bug in vax + ultrix 4.3 pcc. + * tree.c (simple_cst_equal): Likewise. + +Mon Jun 19 16:53:00 1995 Douglas Rupp (drupp@cs.washington.edu) + + * winnt/spawnv.c: New file. + +Mon Jun 19 16:30:29 1995 Glenn Brown + + * caller-save.c (save_call_clobbered_regs): If AUTO_INC_DEC, mark + register indicated by REG_INC notes as live so they will be saved. + +Mon Jun 19 16:21:12 1995 Jeffrey A Law (law@snake.cs.utah.edu) + + * pa.h (PRINT_OPERAND_ADDRESS, case LOW_SUM): Fix logic bug + in last change. + +Mon Jun 19 14:11:49 1995 Jim Wilson + + * integrate.c (integrate_decl_tree): Only set DECL_ABSTRACT_ORIGIN + if the decl returned by pushdecl is the one we started with. + + * mips.h (current_function_name): Delete declaration. + (ASM_DECLARE_FUNCTION_NAME): Don't set current_function_name. + * gnu.h (ASM_DECLARE_FUNCTION_NAME): Likewise. + * mips.c (current_function_decl): Delete declaration. + (function_prologue): New variable fnname. Use it instead of + current_function_name. + (function_epilogue): Likewise. + +Mon Jun 19 13:13:15 1995 Richard Kenner + + * alpha.h (ASM_OUTPUT_ASCII): Always reset line count when + starting new line. + + * scan-decls.c (scan_decls): Fix typo when resetting PREV_ID_START. + + * i386/config-nt.sed, alpha/config-nt.sed: Change version to 2.7.1. + +Mon Jun 19 13:06:14 1995 DJ Delorie (dj@delorie.com) + + * msdos/top.sed: Support new build variables. + * msdos/configur.bat: Make options.h and specs.h. + Change realclean to maintainer-clean. + +Fri Jun 16 06:54:03 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * Version 2.7.0 Released. + + * obstack.c: Always enable this code for now. + + * alpha.c (alpha_builtin_saveregs): Use ptr_mode and conversions + when need so works for both OSF and NT. + * va-alpha.h (__va_tsize): Round to long long not long. + +Thu Jun 15 17:54:52 1995 Bdale Garbee + + * configure (a29k-*-coff): Synonym for a29k-*-udi. + +Thu Jun 15 17:51:21 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (assign_parms): Do all conversions in CONVERSION_INSNS. + +Thu Jun 15 17:36:49 1995 Michael Meissner + + * reg-stack.c (record_reg_life): Call record_reg_life_pat with 0 + for douse argument so that USE's created to mark variables within + blocks don't get marked as set. + +Thu Jun 15 06:28:15 1995 Dennis Glatting (dennisg@CyberSAFE.COM) + + * configure: Change one sed command to work around m68k-next bug. + +Wed Jun 14 22:14:39 1995 Jason Merrill + + * collect2.c (main): Don't turn off auto_export because of -g. + (main): Ignore the argument to -o. + + * alpha.h (LINK_SPEC): Don't pass -init __main anymore. + * alpha/osf12.h (LINK_SPEC): Ditto. + * mips/iris5.h (LINK_SPEC): Ditto. + + * collect2.c (main): Place o_file after an initial .o (like crt0.o). + If we have LD_INIT_SWITCH, use init and fini functions for + executables, too. Specify the unique function names. + (write_c_file_stat): Fix the case of destructors but no constructors. + Don't include the generic-named functions for executables. + (write_c_file): If we have LD_INIT_SWITCH, always use + write_c_file_stat. + + * collect2.c (main): Also add _GLOBAL__D? to export list. + + * ginclude/iso646.h: Do nothing if compiled as C++. + +Wed Jun 14 17:39:10 1995 Roland McGrath (roland@gnu.ai.mit.edu) + + * c-common.c (format_char_info, case 'm'): Set type to void. + (check_format_info): If type is void, ignore operand. + +Wed Jun 14 17:04:10 1995 Paul F. Kunz (Paul_Kunz@SLAC.Stanford.EDU) + + * expr.c (expand_builtin_apply_args): Put back original + register save and restore order. + +Wed Jun 14 16:56:22 1995 Michael Meissner + + * rs6000/eabi.h (INVOKE__main): Define, so __eabi is called after + main's arguments are saved. + + * rs6000.c (output_prolog): Don't call __eabi here, let + compiler call it after the arguments to main are saved. + (output_{prolog,epilog}): Don't use functions under V.4 to save + and restore floating point registers. + +Wed Jun 14 16:52:12 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k/mot3300.h (PCC_BITFIELD_TYPE_MATTERS): Defined. + +Wed Jun 14 16:48:53 1995 Jerry Frain (jerry@tivoli.com) + + * Makefile.in (stage[1-4]): Correctly link `as', `ld', and `collect2'. + +Wed Jun 14 05:52:04 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * objc-act.c (hack_method_prototype): Set DECL_CONTEXT of parms. + + * expmed.c (emit_store_flag): Always set LAST. + + * c-decl.c (start_function): New parameter for attributes. + * c-tree.h (start_function): Likewise. + * c-lang.c (finish_file): Pass extra parm to start_function. + * objc-act.c (build_module_descriptor, really_start_method): Likewise. + * c-parse.in (fndef, nested_function, notype_nested_function): + Likewise. + + * function.c (assign_parms): Use convert_to_mode instead of + gen_lowpart when converting incoming parm. + +Tue Jun 13 19:10:32 1995 Richard Kenner + + * rs6000.md (decrement_and_branch): Finish last fix; update matching + constraint. + +Tue Jun 13 18:32:51 1995 Torbjorn Granlund + + * fold-const.c (fold): When converting a COND_EXPR to an ABS_EXPR, + get the types right for ABS_EXPR to work. + +Mon Jun 12 17:09:55 1995 Michael Tiemann (tiemann@axon.cygnus.com) + + * reorg.c (fill_simple_delay_slots): Set MAYBE_NEVER according to + code of TRIAL_DELAY, not TRIAL. + +Mon Jun 12 15:02:37 1995 Doug Evans + + * configure: Restore code to make ld symlink if ! use_collect2. + + * gcc.c (link_command_spec): Undo patch of May 11. + -nostdlib implies -nostartfiles again. + * dsp16xx.h (CROSS_LINK_SPEC): Likewise. + * i386/freebsd.h (LINK_SPEC): Undo patch of May 24. + Don't pass "-e start" if nostdlib. + * i386/sun.h (LINK_SPEC): Likewise. + * m68k/sun2o4.h (LINK_SPEC): Likewise. + * m68k/sun3.h (LINK_SPEC): Likewise. + * m68k/vxm68k.h (LINK_SPEC): Likewise. + * mips/netbsd.h (LINK_SPEC): Likewise. + * config/netbsd.h (LINK_SPEC): Likewise. + * rs6000/mach.h (LINK_SPEC): Likewise. + * sparc.h (LINK_SPEC): Likewise. + * sparc/vxsparc.h (LINK_SPEC): Likewise. + + * gcc.c (link_command_spec): New argument -nodefaultlibs. + +Sun Jun 11 20:47:53 1995 Stephen L Moshier (moshier@world.std.com) + + * Makefile.in (fix-header.o): Depends on xsys-protos.h. + +Sun Jun 11 15:07:58 1995 Tim Carver (timc@ibeam.intel.com) + + * reload1.c (emit_reload_insns): Don't call HARD_REGNO_NREGS + on psuedo when clearing reg_last_reload_reg. + +Sun Jun 11 14:07:05 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md ({add,sub}di{_mem,3}): Patterns merged. + +Sun Jun 11 13:43:26 1995 Torbjorn Granlund + + * m68k.md (cmpdi matcher): Set cc_status before returning. + + * config/xm-freebsd.h (DONT_DECLARE_SYS_SIGLIST): Define. + +Sun Jun 11 13:38:49 1995 Jason Merrill + + * fixincludes (math.h): Keep declaration of abs on HPUX. + +Sun Jun 11 12:31:42 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stor-layout.c (variable_size): Do nothing if SIZE is constant. + + * stmt.c (expand_asm_operands): See if output operand permits + register. If not, mark output addressable, call expand_operand + on it, and give error if not MEM. + + * function.c (assign_parms): Handle promotions of both + passed and nominal modes separately and insert needed conversions. + (promoted_input_arg): Return 0 if nominal and passed modes differ. + + * stmt.c (all_cases_count, case INTEGER_TYPE): Fix typo in checking + for integer bounds. + +Sat Jun 10 08:55:25 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * libgcc2.c (_floatdidf): Correctly set float sizes. + + * c-decl.c (c_decode_option, case "-Wall"): Don't set extra_warnings. + + * Makefile.in (cpplib.o, fix-header.o): Update dependencies. + (cpperror.o, cppexp.o, cpphash.o): New rules, to show .h dependencies. + +Fri Jun 9 18:06:10 1995 Doug Evans + + * cse.c (cse_basic_block): Fix test for whether block ends with a + barrier. Return next insn, not 0, if block ends in a barrier. + +Fri Jun 9 17:58:29 1995 Paul Eggert + + * fold-const.c (lshift_double): Replace `&' with `%' to fix typo. + ([lr]shift_double): Truncate shift count only if SHIFT_COUNT_TRUNCATED. + Remove unnecessary `count >= prec' test. + + * cexp.y (left_shift): Ignore integer overflow. + + * cexp.y (skip_evaluation): New variable. + (&&, ||, ?:): Increment it in unevaluated subexpressions. + (/, %, integer_overflow): Suppress diagnostics if skip_evaluation != 0. + (yyerror): Clear skip_evaluation. + +Fri Jun 9 17:49:05 1995 Torbjorn Granlund + + * m68k.md (tstdi): Rewrite. + +Fri Jun 9 17:28:55 1995 Per Bothner + + * scan-decls.c (scan_decls): Handle declarations with + multiple comma-separated declarators. + +Thu Jun 8 19:16:12 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * arm.md (mov[sd]f expands): Don't allow fp constants in pseudos + when TARGET_SOFT_FLOAT. + +Thu Jun 8 19:11:43 1995 Jim Wilson + + * expmed.c (store_split_bit_field): When adjust arg in + BYTES_BIT_ENDIAN case, use number of bits in arg for MEM operands + and BITS_PER_WORD for other operands. + (extract_fixed_bit_field): Undo last change. + + * unroll.c (verify_addresses): New function. + (find_splittable_givs): Use it instead of memory_address_p. + +Thu Jun 8 18:58:18 1995 Torbjorn Granlund + + * expmed.c (expand_divmod): Always check result of emit_store_flag. + +Thu Jun 8 12:02:34 1995 David D Zuhn (zoo@armadillo.com) + + * cpplib.c (cpp_push_buffer): Include filename in error message. + +Thu Jun 8 11:53:45 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * function.c (assign_parms): Don't call promote_mode on arg + unless PROMOTE_FUNCTION_ARGS defined. + + * rs6000.md (decrement_and_branch): Ensure label is operand 0. + + * rs6000.md (aux_truncdfsf2): New pattern. + (movsf): Use it instead of invalid SUBREG and truncdfsf2. + + * varasm.c (assemble_name): Disable warn_id_clash around + get_identifier call. + +Wed Jun 7 17:22:25 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * configure (gdb_needs_out_file_path): New variable. + (m68k-motorola-sysv): Set gdb_needs_out_file_path if not using gas. + (.gdbinit): If gdb_needs_out_file_path is set, add a 'dir' command + for $(out_file). + +Wed Jun 7 17:17:19 1995 Torbjorn Granlund + + * fold-const.c (fold): When folding `<' type nodes, make true_value + and false_value have correct types. + +Wed Jun 7 05:06:42 1995 Jason Merrill + + * collect2.c (COFF scan_prog_file): Use the AIX duplicate entry. + +Tue Jun 6 18:43:09 1995 Jeffrey A Law (law@snake.cs.utah.edu) + + * pa.h (FUNCTION_ARG_CALLEE_COPIES): Define. + +Tue Jun 6 18:21:18 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case PLACEHOLDER_EXPR): Consider two types + identical if their TYPE_MAIN_VARIANTs are the same. + + * c-decl.c (start_decl): Set DECL_COMMON before calling + decl_attributes. + + * a29k.c (print_operands): Cast args to bcopy to char *. + + * c-decl.c (duplicate_decls): Don't clear DECL_CONTEXT of + new decl if it is a function. + +Tue Jun 6 17:57:44 1995 Eberhard Mattes (mattes@azu.informatik.uni-stuttgart.de) + + * gcc.c (do_spec_1, case 'g'): Handle %O as suffix if MKTEMP_EACH_FILE. + +Tue Jun 6 17:53:05 1995 Michael Meissner + + * rs6000.c (expand_block_move): Update source and destination pointers + inside the loop moving the bytes, not outside. + +Tue Jun 6 14:58:37 1995 Andreas Schwab + + * m68k.h (CONDITIONAL_REGISTER_USAGE): Don't mark pic reg as fixed. + * m68k.c (finalize_pic): Emit USE insn at start and end of function. + +Tue Jun 6 13:46:57 1995 Jim Wilson + + * sh.c (print_operand): Check for annulled branches. + (output_movedouble): Handle SUBREG addresses. + (output_branch): Handle annulled branches. + (sh_expand_prologue): Correct number of saved registers for + varargs functions. + * sh.h: Add some comments. + * sh.md: Add some comments. Cleanup formatting. + (type attribute): Add pstore and call. + (return define_delay): Reorganize to make clearer. + (call/sfunc define_delay): Define. + (cbranch define_delay): Define to have annul-true delay slot. + (subsi3): Use arith_reg_operand for operand 2. + (shift patterns): Use const_int_operand instead of immediate_operand + for shift counts. + (push): Add pstore constraint case. + (movsi_i): Move t/z constraint pair to the front of the list. + (calli, call_valuei): Add "call" attribute. + +Mon Jun 5 19:23:13 1995 Jim Wilson + + * sched.c (attach_deaths): In last change, use find_reg_note instead + of find_regno_note. + +Mon Jun 5 19:17:31 1995 Tom Quiggle (quiggle@lovelace.engr.sgi.com) + + * mips/iris5.h (MACHINE_TYPE): Say "IRIX 5.x", not "5.0". + (NO_DOLLAR_IN_LABEL): Undefine. + * mips.h (sdb_begin_function_line): New declaration. + (PUT_SDB_FUNCTION_END): New definition. + +Mon Jun 5 18:56:10 1995 Michael Meissner + + * rs6000.c (expand_block_move): Don't do block moves where we clobber + fixed numbers of regs, instead move just 1-8 bytes at a time. + + * Makefile.in (STAGESTUFF): Copy files produced by -da and + -save-temps to the stage subdirectories. + +Mon Jun 5 08:18:46 1995 Torbjorn Granlund + + * combine.c (reg_dead_at_p): When scanning backwards, stop at BARRIER. + + * m68k.c (print_operand): Handle 'R' for registers. + * m68k.md (cmpdi): Rewrite to avoid bogus matching constraints. + + * optabs.c (expand_binop): In last change, don't defererence TARGET + if it is 0. + + * pa.md (movsicc): Use MATCH_DUP for operand 4 and 5. + +Mon Jun 5 08:14:56 1995 Jeffrey A Law (law@cs.utah.edu) + + * pa.c (hppa_encode_label): Allocate stuff on permanent_obstack + rather than via malloc. + + * c-common.c (decl_attributes): Fix typo in size passed to alloca. + +Mon Jun 5 08:10:55 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.md: Use "some_operand" for patterns valid only during + reload and meant to handle adding more PLUS operators during + register elimination. + +Mon Jun 5 07:31:53 1995 Stephen L Moshier (moshier@world.std.com) + + * cse.c (simplify_unary_operation, case FLOAT, UNSIGNED_FLOAT): + Truncate to requested mode. + +Sat Jun 3 22:08:51 1995 Jim Wilson + + * sched.c (attach_deaths): Don't add a REG_DEAD note if a REG_UNUSED + note is already present. + +Sat Jun 3 18:36:57 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * pa.h (hppa_builtin_saveregs): Add declaration. + +Sat Jun 3 18:11:26 1995 Jason Merrill + + * Makefile.in (scan-decls.o): Depends on cpplib.h. + +Fri Jun 2 19:23:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * optabs.c (expand_binop): Don't use non-REG TARGET in 2-word case. + +Thu Jun 1 19:30:30 1995 Tor Egge (tegge@flipper.pvv.unit.no) + + * m88k.h (RETURN_POPS_ARGS): New argument. + * m88k/dolphin.ld: Added start of comment. + +Thu Jun 1 19:12:28 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure (a29k-*-bsd*): Fix typo in last change. + +Thu Jun 1 18:51:53 1995 Jim Wilson + + * expmed.c (extract_fixed_bit_field): For REG case, compute total_bits + from mode instead of assuming BITS_PER_WORD. + +Thu Jun 1 18:34:31 1995 Michael Meissner + + * rs6000.h (FIXED_R13): Default to 0. + ({FIXED,CALL_USED}_REGISTERS): Use FIXED_R13 for register 13. + * sysv4.h (FIXED_R13): Define to be 1. + +Wed May 31 20:57:26 1995 Torbjorn Granlund + + * m68k.md ([su]mulsi3_highpart): Pass correct number of arguments to + const_uint32_operand. + * m68k.c (const_uint32_operand): Reject negative numbers. + + * expmed.c (expand_mult_highpart): Use wide_op1 for all multiplies. + (expand_divmod): Undo Nov 12 change. Instead, add special case + for division by MIN_INT in signed TRUNC_DIV_EXPR case. + +Wed May 31 20:44:21 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (one_cmpldi2): New pattern. + ({a,l}shrdi{3,_const}): Allow 63 as shift count. + +Wed May 31 14:56:31 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * varasm.c (assemble_start_function, assemble_variable): + Make sure first_global_object_name is in permanent obstack. + + * reload1.c (alter_reg): Clean up setting of RTX_UNCHANGING_P + when making a MEM. + + * reorg.c (struct resources): New field unch_memory. + (CLEAR_RESOURCES, mark_target_live_regs, dbr_schedule): Clear it. + (mark_{referenced,set}_resources, redundant_insn): Set it. + (fill_simple_delay_slots): Likewise. + (resource_conflicts_p): Test it. + + * unroll.c (copy_loop_body): Fix typo in call to sets_cc0_p. + + * integrate.c (output_inline_function): Don't call expand_function_end. + + * calls.c (prepare_call_address): Only call use_reg on + static_chain_rtx if it is a REG. + + * configure (a29k-*-bsd*): Use t-a29k. + * t-a29k: New file. + * a29k/t-a29kbare (LIBGCC1_TEST): New null definition. + * a29k/t-vx29k (LIBGCC1_TEST): Likewise. + +Wed May 31 14:17:42 1995 Jeffrey A Law (law@snake.cs.utah.edu) + + * configure (hppa*-*-bsd*): Do not run fixincludes. + (hppa*-*-osf*): Likewise. + (hppa*-*-lites*): Likewise. + + * pa.h (PRINT_OPERAND_ADDRESS): Use "RR'" rather than "R'" for + symbolic addresses. + * pa.md (symbolic HIGH patterns): Likewise. + (symbolic LO_SUM pattern): Likewise. + +Wed May 31 14:11:53 1995 Michael Meissner + + * rs6000.md (all movstri recognizers): Eliminate updating the pointers. + * rs6000.c (expand_block_move): Don't pass argument of # bytes to + increment pointers by to movstrsi expanders. + + * rs6000.c (rs6000_override_options): Fix typo with -mstring handling. + + * rs6000.h (TARGET_SWITCHES): Set MASK_STRING_SET explicitly + if -mno-string, so that it can override the processor default. + +Wed May 31 07:31:53 1995 Jason Merrill + + * c-common.c (truthvalue_conversion, BIT_AND_EXPR): Make sure that + the result has boolean_type_node. + +Tue May 30 19:03:21 1995 J.T. Conklin + + * stddef.h: Undefine _BSD_XXX_T_ if _GCC_XXX_T is defined on BSD + Net/2 derived systems. + +Tue May 30 08:17:37 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (decrement_and_branch_until_zero): Operand 0 constraint + changed from "+g" to "+d*am". + (similar anonymous HImode pattern): Likewise. + + * m68k.md (tstdi): Use tst/subx #0 instead of neg/negx. + Allow "a" and ">" for operand 0. + +Mon May 29 19:24:43 1995 Niklas Hallqvist (niklas@appli.se) + + * m68k.md (addsi_lshrsi_31): Use match_dup, not constraint "1", + for matching inputs. + +Mon May 29 12:39:58 1995 Allen Briggs + + * i386/isc.h ({STARTFILE,LIB,CPP}_SPEC): Handle -Xp like -posix. + * i386/x-isc3 (X_CFLAGS): Add -Xp. + +Mon May 29 12:28:41 1995 J.T. Conklin (jtc@cygnus.com) + + * configure (sparc-*-netbsd): Add missing asterisk at end. + +Mon May 29 08:55:48 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (recog_for_combine): New parm PADDED_SCRATCHES; set it. + (try_combine): Accumulate number of scratches and update max_scratch. + (simplify_set): Add extra parm to recog_for_combine. + + * romp.md (call): Put USE for r0 in CALL_INSN; call call_internal + to emit insn. + (call_internal): New name for anonymous call. + (call_value, call_value_internal): Likewise. + + * winnt/xm-winnt.h: Protect most definitions with #ifndef. + * alpha/xm-winnt.h: Include alpha/xm-alpha.h, then winnt/xm-winnt.h. + (POSIX): Undefine. + * xm-alpha.h: Don't include alloca.h for winnt. + +Sun May 28 18:34:01 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure: Make sed commands more uniform. + + * Makefile.in: Properly use $(srcdir) for files that have it + in their reference as a target of a rule. + (libgcc1.a): Add missing RANLIB_TEST use. + + * stmt.c (expand_computed_goto): Call do_pending_stack_adjust. + +Sun May 28 18:08:41 1995 Torbjorn Granlund + + * m68k.md (divmodhi4, udivmodhi4): Use "dmsK" for operand 2. + +Fri May 26 17:01:22 1995 Paul Eggert + + * fixincludes: Fix bogus recursive in NEWS-OS 4.0C. + +Fri May 26 08:02:14 1995 Michael Meissner (meissner@cygnus.com) + + * c-typeck.c (initializer_constant_valid_p): For the CONSTRUCTOR + case, if the type is a record, recurse, just like for unions. + +Thu May 25 07:56:14 1995 Paul Eggert + + * fixincludes: Add `sel', `tahoe', `r3000', `r4000' to the + list of pre-ANSI symbols that need to be surrounded with __ __. + Allow white space between `#' and `if' when looking for lines to patch. + + * objc/sarray.h (PRECOMPUTE_SELECTORS, struct soffset): + Use #ifdef __sparc__, not sparc. + + * m68k.md (addsi_lshrsi_31, ashldi_const, ashrdi_const, lshrdi_const): + Replace `mov' with `move'. + +Thu May 25 07:35:37 1995 Allen Briggs + + * libgcc2.c (L_eh, i386): Remove in-line comments in assembly + code--the '#' character is not valid for the SYSV as. + +Thu May 25 07:28:54 1995 Pat Rankin (rankin@eql.caltech.edu) + + * Makefile.in (BC_ALL): Restore it from May 22 change; vms uses it. + (STAGESTUFF): Use it. + +Thu May 25 07:11:56 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (alpha_emit_set_const): Don't call expand_binop for + other than add if SImode and can't create pseudos. + +Wed May 24 21:38:24 1995 Jim Wilson + + * sched.c (reemit_notes): New function. + (schedule_block): Call reemit_notes twice. Reorganize code for + handling SCHED_GROUP_P insns, so that reemit_notes works. + + * sh/sh.c (shiftcosts, genshifty_op): Add SH3 support. + * sh/sh.md (ashlsi3, lshrsi3): Add SH3 support. + (ashlsi3_d, ashrsi3_d, lshrsi3_d): New patterns for SH3. + (ashrsi2_31): Remove r/!r constraint. + +Wed May 24 17:00:47 1995 Jason Merrill + + * tree.c (type_list_equal): Call simple_cst_equal before checking + types. + +Wed May 24 16:49:49 1995 Douglas Rupp (drupp@cs.washington.edu) + + * Makefile.in (libgcc2.a): Handle case of separate srcdir. + +Wed May 24 16:22:01 1995 Paul Eggert + + * configure: Define $(MAKE) if `make' doesn't. + +Wed May 24 15:50:51 1995 Doug Evans + + * dsp16xx.h (CROSS_LINK_SPEC): ENDFILE_SPEC moved to -nostartfiles. + * i386/freebsd.h (LINK_SPEC): Don't pass "-e start" if nostartfiles + rather than nostdlib. + * i386/sun.h (LINK_SPEC): Likewise. + * m68k/sun2o4.h (LINK_SPEC): Likewise. + * m68k/sun3.h (LINK_SPEC): Likewise. + * m68k/vxm68k.h (LINK_SPEC): Likewise. + * mips/netbsd.h (LINK_SPEC): Likewise. + * config/netbsd.h (LINK_SPEC): Likewise. + * rs6000/mach.h (LINK_SPEC): Likewise. + * sparc.h (LINK_SPEC): Likewise. + * sparc/vxsparc.h (LINK_SPEC): Likewise. + + * m88k/m88k.h (FUNCTION_ARG_BOUNDARY): Use GET_MODE_BITSIZE. + +Wed May 24 15:44:04 1995 Jason Merrill + + * fold-const.c (fold): Make sure that a folded TRUTH_NOT_EXPR + retains the same type. + + * c-common.c (truthvalue_conversion): Also accept TRUTH_NOT_EXPR. + +Wed May 24 15:41:51 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cplus-dem.c (strstr, strncmp, strlen): Remove declarations. + + * tree.c (type_list_equal, simple_cst_list_equal, index_type_equal): + Check for simple_cst_equal return value of -1. + +Wed May 24 10:05:24 1995 Michael Meissner + + * libgcc1-test.c (start, _start): Provide declarations, so that + the GNU linker doesn't give a warning message about defaulting the + start address. + + * rs6000/sysv4.h (STRIP_NAME_ENCODING): Redefine back to the + original defination, rather than the defination used in rs6000.h. + (ASM_OUTPUT_SOURCE_LINE): Use STRIP_NAME_ENCODING. + * rs6000.h (STRIP_NAME_ENCODING): Skip leading '*'. + + * rs6000.h (MASK_STRING_SET, TARGET_STRING_SET): Add target + flags bit for whether -mstring was actually used. + (TARGET_SWITCHES): Add MASK_STRING to all power targets. Set + MASK_STRING_SET for -mstring and -mno-string. + (TARGET_DEFAULT): Add MASK_STRING. + + * rs6000.c (rs6000_override_options): Add MASK_STRING to + all power targets. Make an explicit -mstring/-mno-string override + the -mcpu=processor default. + + * rs6000/eabile.h (CPP_SPEC): Copy from sysvle.h to provide the + appropriate little endian defaults. + + * rs6000/sysv4.h (ASM_OUTPUT_SOURCE_LINE): Use assemble_name to + output the canonical name. + +Wed May 24 01:21:15 1995 Jason Merrill + + * rs6000.h (STRIP_NAME_ENCODING): Define. + (RS6000_OUTPUT_BASENAME): Use it. + +Tue May 23 19:54:21 1995 Doug Evans + + * gcc.c (link_command_spec): Move ENDFILE_SPEC from -nostdlib + to -nostartfiles. + +Tue May 23 17:01:50 1995 Jim Wilson + + * alpha.md (negsi2-2): Change output pattern to #. + + * mips.c (embedded_pic_offset): Output RTL to initialize + embedded_pic_fnaddr_rtx. + (mips_finalize_pic): Delete. + * mips.h (mips_finalize_pic): Delete declaration. + (FINALIZE_PIC): Delete. + (INIT_EXPANDERS): Clear embedded_pic_fnaddr_rtx. + * mips.md (get_fnaddr): Add = to output contraint. + + * sh.c (shift_amounts): Correct entry for shifts by 29. + * sh.md (sett): New pattern. + (movsi_i): Change source constraint for move to T reg to be 'z'. + + * mips/ecoff.h (STARTFILE_SPEC): Define to null string. + * mips/elfl.h, mips/elfl64.h: Correct typo in comment. + + * mips/elflorion.h, mips/elforion.h (MIPS_CPU_DEFAULT): Delete. + * mips.c (override_options): Delete #ifdef MIPS_CPU_DEFAULT code. + Add #ifdef MIPS_CPU_DEFAULT_STRING code before the first + mips_cpu_string test. + +Tue May 23 07:22:36 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * romp.c (hash_rtx): Avoid warning on int-to-pointer conversion. + (output_fpops): Cast args to bcopy to char *. + + * cpplib.c (initialize_builtins): Add missing parm to timestamp call. + + * Makefile.in (install-libobjc): Don't depend on libobjc.a. + + * c-parse.in: Objc shift/reduce conflicts now 48. + (parm): Use setspecs/restore here. + (parmlist_or_identifiers): Not here. + +Mon May 22 19:30:30 1995 Doug Evans + + * h8300.md (movsf_h8300h): Add missing post-inc case to constraints. + +Mon May 22 14:38:36 1995 Michael Meissner + + * rs6000.c (rs6000_override_options): Do SUBTARGET_OVERRIDE_OPTIONS + here. + * rs6000.h (OVERRIDE_OPTIONS): Not here. + + * rs6000.c (expand_block_move): Handle moves without string + instructions by generating a series of loads and stores. + (output_prolog): Support -mno-toc on V.4 and eabi systems. + + * rs6000/sysv4.h (TARGET_SWITCHES): Add -mtoc and -mno-toc. + (SUBTARGET_OVERRIDE_OPTIONS): Add some warnings for incompatible + switches. + (TOC_SECTION_FUNCTION): Make -mno-toc like -mrelocatable in that + we don't put the minimal toc pointer in the global toc section. + (LINK_SPEC): Use -oformat to set link output format, not -m. + + * rs6000/t-eabigas (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Build + libgcc.a variants with -mno-toc support. + * rs6000/t-ppcgas (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Ditto. + +Mon May 22 07:10:52 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cplus-dem.c (mystrstr): Replacement for strstr. + + * configure: Split up long sed command. + * Makefile.in (SYMLINK): Deleted; unused. + (oldobjext): Deleted; no longer used. + (FLAGS_TO_PASS): Include objext and exeext. + (STAGESTUFF, protoize.o, unprotoize.o): Use $(objext), not .o. + (test_protoize_simple, compare{,3}, gnucompare{,3}): Likewise. + (STAGESTUFF, specs, gcc-cross, collect2): Add missing $(exeext). + (libgcc1.null, libgcc[12].a, stage[1-4]): Likewise. + (xgcc, cc1, cc1obj, enquire): Use $@ instead of filename for -o value. + (collect2, mips-tfile, mips-tdump, gen*): Likewise. + (bi-arity, bi-opcode, bi-opname, cccp, cppmain): Likewise. + (protoize, unprotoize, gen-protos, fix-header): Likewise. + (crtbegin.o, crtend.o): Don't use -o; move output to proper + filename (using objext) instead. + (BI_ALL, BC_ALL, bytecode): Deleted; unused. + (bi-*.o, cexp.o, stamp-{proto,fixinc}): Remove unneeded $(srcdir). + (getopt{,1}.o, SYSCALLS.c.X): Likewise. + (install-driver): New target. + (install-normal): Depend on it. + (install-common): Don't depend on xgcc. + (maketest): Deleted; no longer used. + (stage[1-4]): Use name collect-ld, not real-ld. + (risky-stage[1-4]): Use stage[1-4] as dependencies; don't copy. + * alpha/config-nt.bat, i386/config-nt.bat: Make {,h,t}config.h + and tm.h by writing a single #include line. + Update way specs.h and options.h are written. + * alpha/config-nt.sed, i386/config-nt.sed: Set new variables + into Makefile. + Build winnt.obj. + Edit CCCP definition. + * alpha/x-winnt, i386/x-winnt (oldobjext): Deleted. + Add rules for .c.obj, .adb.obj, and .ads.obj. + (LIB2FUNCS_EXTRA, spawnv.o): New rules. + * i386/x-winnt (objext): Now .obj, not .o. + + * gcc.c (HAVE_OBJECT_SUFFIX): New macro. + (process_command): Convert x.o to x.foo for OBJECT_SUFFIX of ".foo". + (do_spec_1): Avoid shadow variable "i" and always use for loop var. + + * c-decl.c (finish_decl_top_level): Removed; no longer used. + * objc-act.c: Numerous formatting changes. + (NULLT): Deleted; all uses changed to NULL_TREE. + (get_{static,object}_reference, objc_add_static_instance): + Use push_obstacks instead of saving obstacks manually. + (build_{selector,class}_reference_decl): Likewise. + (build_objc_string_decl, build_protocol_reference): Likewise. + (comp_{method,proto}_with_proto): Likewise. + (create_builtin_decl, synth_module_prologue): Set DECL_ARTIFICIAL + for internal objects. + (build_{selector,class}_reference_decl, add_objc_decls): Likewise. + (generate_objc_symtab_decl, build_module_descriptor): Likewise. + (build_protocol_reference): Likewise. + (build_objc_string_decl, synch_forward_declarations): Likewise. + Delete call to end_temporary_allocation. + (generate_static_references, generate_strings): Likewise. + (build_selector_translation_table, generate_category): Likewise. + (generate_{ivars,protocol}_list, build_protocol_reference): Likewise. + (build_objc_string_object): If next_runtime, put everything in + permanent obstack. + (objc_add_static_instance): Use build_decl instead of start_decl + and finish_decl_top_level. + (build_{class_reference,objc_string}_decl): Clear DECL_CONTEXT. + (start_class): Exit with FATAL_EXIT_CODE, not 1. + (add_objc_decls): Don't set DECL_IN_SYSTEM_HEADER. + + * tree.c (valid_machine_attribute): Handle attribute on + pointer-to-function types. + +Sun May 21 17:16:37 1995 J. T. Conklin + + * mips/netbsd.h (HAVE_STRERROR): Remove. + * mips/xm-netbsd.h: New file. + * mips/t-mips-netbsd: Deleted. + * configure (mips-dec-netbsd): Use xm-netbsd.h and t-libc-ok. + +Sun May 21 17:16:37 1995 Arne H. Juul (arnej@pvv.unit.no) + + * mips/netbsd.h: Use __start as entry point. Ifdef some + paths on CROSS_COMPILE. + +Sun May 21 08:39:26 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-parse.in (datadef, fndef, ivar_decl, mydecls): + Restore declspec_stack since setspecs is used. + (parmlist_or_identifiers): Use setspecs before parsing parms + and restore after parsing parms. + +Sun May 21 01:04:52 1995 Jeffrey A. Law + + * pa.c (hppa_encode_label): New variable "permanent" to + where/how memory is allocated for the new label. All + callers changed. + +Sat May 20 16:53:30 1995 Mike Meissner + + * rs6000.md (insv, extz): Fail if the structure is QI or HI reg to + avoid paradoxical subreg's being created in RTL phase, which uses + SImode to load from memory if structure is later moved to stack. + +Sat May 20 06:44:59 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (udivmodhi4): Output "divu" instead of "divs". + +Sat May 20 06:11:32 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * reload.c (push_reload): Don't reload inside a SUBREG + when SUBREG_WORD is nonzero. + + * c-decl.c (shadow_tag_warned): Don't warn about useless keyword + if in system header file. + + * tree.c (simple_cst_equal): Don't look at language-specific + nodes since we don't know what's in them. + + * cpperror.c: #include config.h before any other .h file. + * collect2.c: Likewise. + + * i386/config-nt.bat: Add missing ^M on two lines. + Add case for Fortran; fix typo in Ada case. + * alpha/config-nt.bat: Add case for Fortran; fix typo in Ada case. + + * m68k/t-next (LIBGCC1, CROSS_LIBGCC1): Make not, not "libgcc1.null". + (OTHER_FIXINCLUDES_DIRS, LIMITS_H_TEST): Delete from here. + * m68k/x-next (OTHER_FIXINCLUDES_DIR, LIMITS_H_TEST): Move to here. + +Fri May 19 19:30:20 1995 Stan Cox (gcc@dg-rtp.dg.com) + + * crtstuff.c: Added reference to INIT_SECTION_PREAMBLE for systems that + do something which must be undone prior to __do_global_ctors. + +Fri May 19 19:27:08 1995 Alan Modra + + * i386/linux-aout.h (CPP_SPEC): Add defines for -fPIC. + * i386/linux-oldld.h (CPP_SPEC): Likewise. + +Fri May 19 17:46:28 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * collect2.c (strstr): Deleted. + * cplus-dem.c (strstr): Define ifndef POSIX. + +Fri May 19 11:16:51 1995 Per Bothner + + * cpplib.c (collect_expansion): Don't escape '@' inside string. + +Fri May 19 06:59:21 1995 Pat Rankin (rankin@eql.caltech.edu) + + * vmsconfig.com (process_objc_lib, configure_makefile): New routines. + (bc_all.list, ./vax.md, objc-objs.opt, objc-hdrs.list): New files + created at config time. + (bc_all.opt, ./md.): No longer created. + * make-cc1.com: Handle revised filenames from vmsconfig.com; + (DO_OBJCLIB): New variable, plus code to compile objc/*.{c,m}. + +Wed May 17 16:15:31 1995 Torbjorn Granlund + + * i960.c (i960_output_ldconst): New code for XFmode. + Also, move SFmode code to immediately after DFmode code. + (S_MODES, D_MODES): Handle XFmode. + (XF_MODES): Was TF_MODES, handle XFmode instead of TFmode. + (hard_regno_mode_ok): Replace TFmode with XFmode. + (i960_output_long_double): New function. + + * i960.h (DATA_ALIGNMENT): Define. + (ROUND_TYPE_ALIGN): Align XFmode scalars at 128 bit boundaries. + (ROUND_TYPE_SIZE): Round up the size of XFmode objects to 128 bits. + (CONST_DOUBLE_OK_FOR_LETTER_P): Use CONST0_RTX and CONST1_RTX + so that all FP modes are recognized. + (ASM_OUTPUT_LONG_DOUBLE): Define. + + * i960.md: Change all TFmode patterns to have XFmode. + (movxf recognizer, frame version): Use movt, ldt, and stt. + (movxf recognizer, non-frame version): Delete. + (extenddfxf2): Delete * before f constraint. + (extendsfxf2): Likewise. + +Wed May 17 17:53:35 1995 Jim Wilson + + * unroll.c (unroll_loop): Increment copy_start_luid if copy_start + is loop_start. + +Wed May 17 17:44:57 1995 Lee Iverson + + * fold-const.c (invert_truthvalue, case CLEANUP_POINT_EXPR): New case. + +Tue May 16 18:51:16 1995 Michael Meissner + + * rs6000/rs6000.h (TARGET_SWITCHES): Add -mstring to enable string + instructions, and -mno-string to disable them. + (MOVE_MAX): Don't test TARGET_MULTIPLE anymore. + (MAX_MOVE_MAX): Set to 8, not 16. + (expand_block_move): Add declaration. + + * rs6000/rs6000.c (expand_block_move): New function to expand + block moves when -mstring is used. + + * rs6000/rs6000.md (movti): Use TARGET_STRING, not TARGET_MULTIPLE. + (load_multiple, store_multiple): Ditto. + (string insns): Add 8, 6, 4, 2, and 1 register variants for using + the native string instructions if -mstring. + + * rs6000/sysv4.h (CPP_SPEC): If little endian, define + _LITTLE_ENDIAN and set littleendian assertion. If big endian, + define _BIG_ENDIAN and set bigendian assertion. + * rs6000/sysv4le.h (CPP_SPEC): Copy from sysv4.h, and change + default to little endian. + + * rs6000/rs6000.c (override_options): Check for -mmultiple and + -mstring on little endian systems here. + * rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Don't do the check + here. + +Tue May 16 18:36:41 1995 Douglas Rupp (drupp@cs.washington.edu) + + * alpha.c: Changed WINNT to _WIN32. + * alpha/config-nt.bat, i386/config-nt.bat: Added commands to + generate specs.h and options.h. + * i386/config-nt.sed: Changed link32 to link. + * winnt/ld.c (main): Removed call to free. + * configure.bat: Added line to echo usage on invalid input. + * gcc.c (fix_argv): Removed call to free. + * gcc.c, getpwd.c, protoize.c, sdbout.c: Changed WINNT to _WIN32. + * toplev.c: Likewise. + +Tue May 16 18:04:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * toplev.c (pfatal_with_name, fatal_io_error, vfatal): + Use FATAL_EXIT_CODE instead of magic number. + * cccp.c, cpplib.c, cpplib.h: Use FATAL_EXIT_CODE instead + of FAILURE_EXIT_CODE. + * fix-header.c, gen-protos.c: Likewise. + * cpperror.c, cppmain.c: Likewise. + Include config.h #ifndef EMACS. + * xm-alpha.h, xm-rs6000.h, xm-vms.h (FAILURE_EXIT_CODE): Remove. + +Tue May 16 17:46:57 1995 Adam Fedor + + * objc/archive.c (__objc_write_class): Write class version. + (__objc_write_selector, objc_{write,read}_selector): Handle null + selector. + + * objc/sarray.h (struct sarray): Make capacity size_t. + * objc/sarray.c (sarray_realloc): Make array index variables size_t. + +Tue May 16 06:59:08 1995 Paul Eggert + + * dsp16xx.c (print_operand_address): Fix misspellings in messages. + * i370/mvs.h (FUNCTION_PROFILER): Likewise. + * mips-tdump.c (type_to_string): Likewise. + * print-tree.c (print_node): Likewise. + + * protoize.c (edit_fn_definition): Fix mispelled local `have_flotsam'. + + * objc/sendmsg.c (__objc_init_install_dtable): Fix misspelling + in name of local label `already_initialized'. + + * winnt/winnt.h (STDC_VALUE): Was misspelled. + + * m68k/ccur-GAS.h (FUNCTION_BOUNDARY): Was misspelled. + + * 1750a.h (DEFAULT_PCC_STRUCT_RETURN): Was misspelled. + +Mon May 15 23:41:25 1995 Jeffrey A. Law + + * pa.h (ASM_OUTPUT_EXTERNAL_LIBCALL): Make sure to encode section + info for all libcalls. + +Mon May 15 20:58:00 1995 Jason Merrill + + * collect2.c (strstr): Define ifndef POSIX. + + * defaults.h (SUPPORTS_WEAK): Provide default. + * aoutos.h, sparc/sunos4.h: Don't support weak symbols. + * netbsd.h, svr4.h, i386/freebsd.h, i386/osfrose.h, + m88k/m88k.h: Define ASM_WEAKEN_LABEL instead of WEAK_ASM_OP. + * c-pragma.h: Check ASM_WEAKEN_LABEL instead of WEAK_ASM_OP. + HANDLE_PRAGMA_WEAK is never defined in a tm.h file. + * c-decl.c (duplicate_decls): Propagate DECL_WEAK. + * tree.h (DECL_WEAK): New macro. + (tree_decl): Add weak_flag. + * varasm.c (assemble_start_function): Declare the symbol weak if + appropriate. + (assemble_variable): Ditto. + (assemble_alias): Ditto. Mark the decl as written. + (declare_weak): Check for weak declaration after definition. + Set DECL_WEAK. + (weak_finish): Use ASM_WEAKEN_LABEL. + * libgcc2.c: The C++ free-store management functions are weak + aliases on targets that always support them. + +Mon May 15 19:01:43 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure (out_object_file): New variable; put value in Makefile. + * Makefile.in (out_object_file): Use in place of aux-output.o. + + * fold-const.c (const_binop): Don't pass OVERFLOW to force_fit_type + if type is unsigned. + +Mon May 15 18:48:26 1995 Paul Eggert + + * install.sh (transformbasename): Fix misspelling. + + * tahoe.h (CHECK_FLOAT_VALUE): Fix misspelling of OVERFLOW parameter. + + * i386.h (VALID_MACHINE_{DECL,TYPE_ATTRIBUTE): Fix typo. + + * fx80.h (CHECK_FLOAT_VALUE): Fix misspelled use of parameter. + + * a29k.c (spec_reg_operand): Fix misspelling of `default:'. + +Mon May 15 18:36:41 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.md (b{eq,ne,ge,lt}0_di): Fixed for non-MOTOROLA syntax. + * m68k/xm-mot3300.h (alloca): Extern decl added for non-GNU compiler. + +Mon May 15 13:14:29 1995 Per Bothner + + * cppexp.c (cpp_reader): Test for '#' (start of assertion) *after* + skipping hspace, not before. + +Mon May 15 08:13:54 1995 Pat Rankin (rankin@eql.caltech.edu) + + * vmsconfig.com: Construct options.h and specs.h to #include + all "*/lang-{options|specs}.h" files found. + +Sun May 14 21:32:49 1995 Doug Evans + + * alpha/alpha.md (movsicc, case NE): Don't generate unrecognizable + insn. + (movdicc, case NE): Likewise. + +Sun May 14 15:44:54 1995 Jim Wilson + + * unroll.c (unroll_loop): Make local_regno have size + max_reg_before_loop. Don't do local register optimization if + copy_end has no INSN_LUID. + +Sun May 14 10:38:23 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * objc-act.c (start_method_def): Mark _self as possibly unused. + + * configure: Create specs.h and options.h from */lang-specs.h + and */lang-options.h. + Set lang_specs_files and lang_options_file variables in Makefile. + * Makefile.in (lang_{specs,options}_files): New variables. + (gcc.o): Depends on $(lang_specs_files). + (toplev.o): Depends on $(lang_options_file); merge two dep lists. + (distclean): Remove spes.h and options. + * gcc.c (default_compilers): Remove entries for Ada, C++, Chill, + and Fortran; #include specs.h instead. + * toplev.c (lang_options): Remove entries for Ada, C++, and Fortran; + include options.h instead. + +Sat May 13 23:11:21 1995 DJ Delorie + + * configure (i[345]86-go32-msdos, i[345]86-*-go32): New targets. + +Sat May 13 10:58:38 1995 Jim Wilson + + * loop.c (record_giv): When computing replaceable, use + back_branch_in_range_p instead of looking for branches to named + labels. + * loop.h (back_branch_in_range_p): Declare. + * unroll.c (back_branch_in_range_p): No longer static. + +Sat May 13 06:47:11 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (simplify_shift_count, case LSHIFTRT): Don't merge + shifts of different modes if first is any right shift. + +Sat May 13 05:39:09 1995 Richard Earnshaw (rearnsha@armltd.co.uk) + + * configure (arm-semi-aout): New configuration. + * config.sub: Add support for semi-hosted ARM. + * arm/t-semi, arm/semi.h: New files. + +Fri May 12 21:51:22 1995 Doug Evans + + * flow.c (find_basic_blocks): Only perform n_basic_blocks sanity + check on first pass, and on second pass ensure it has the correct + value. + +Fri May 12 19:23:11 1995 Jim Wilson + + * c-typeck.c (build_binary_op): Warn when ~unsigned is compared + against unsigned, and type promotions result in an unexpected + answer. + +Fri May 12 19:10:21 1995 Roland McGrath + + * configure (*-*-gnu*): Always use ELF; set tm_file=${cpu_type}/gnu.h. + * config/i386/gnu.h: Contents replaced with old i386/gnuelf.h. + * config/i386/gnuelf.h: File removed. + +Fri May 12 17:29:57 1995 Ken Raeburn (raeburn@cygnus.com) + + * m68k/lb1sf68.asm (__IMMEDIATE_PREFIX__): Default to #. + (IMM): New macro. + (all code): Use IMM macro instead of hardcoding # for immediate + operands. + +Fri May 12 16:52:10 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * m68k.c (output_scc_di): New function. + (extend_operator) : Allow DImode target. + * m68k.h (HARD_REGNO_MODE_OK): Don't allow d7/a0 as DImode reg pair. + * m68k.md (tstdi, cmpdi, addsi_lshrsi_31, ashldi_extsi): New patterns. + (extendqidi2, extendhidi2, extendsidi2): Allow "general_operand" + instead of "register_operand" 0. + (adddid_sexthishl32, subdid_sexthishl32, subdi_dishl32): Likewise. + (adddi_dilshr32): Operand 0 constraint changed from "ro" to "do"; + Code generation fixed. + (adddi_mem, subdi_mem): Fixed for "<" and ">" operand 0. + (adddi3, subdi3): Operand 2 constraint changed from "ao" to "*ao" + (ashldi_sexthi, ashrdi_const32): Allow only "register_operand" + instead of "general_operand" 0. + (ash[lr]di_const, ash[lr]di3): Allow also 8 and 16 as shift count. + (subreg1ashrdi_const32): Pattern deleted. + (subreghi1ashrdi_const32, subregsi1ashrdi_const32): New pattern. + (lshrsi_31): New implementation. + (scc0_di, scc_di, beq0_di, bne0_di, bge0_di, blt0_di): New patterns. + +Fri May 12 16:50:49 1995 Jeffrey A. Law + + * pa.md (bb patterns): Fix bugs in length computation exposed by + recent branch shortening and genattrtab changes. + +Fri May 12 16:22:27 1995 Ken Raeburn + + * cccp.c (enum node_type): Add T_IMMEDIATE_PREFIX_TYPE. + (special_symbol): Handle it; emit value of IMMEDIATE_PREFIX. + (IMMEDIATE_PREFIX): Default to empty string. + (initialize_builtins): Install __IMMEDIATE_PREFIX__ builtin, + parallel to __REGISTER_PREFIX__. + +Fri May 12 14:40:03 1995 Pat Rankin (rankin@eql.caltech.edu) + + * cccp.c: #if VMS, don't define `stat' macro to be VMS_stat. + Compare enums explicitly to 0 to work around VAX C bug. + (do_include): Cast alloca's value. + + * make-cc1.com (bc_loop): Process comma-separated list rather + than space-separated one; restore .h suffix stripped by vmsconfig; + (loop1): More robust handling of directory prefix on file names. + * vmsconfig.com (TPU makefile.in): Reorganize and reformat code. + Make generated .opt files have more consistent format (all comma + separated, excess whitespace eliminated); + (additional_compiler): New routine. + (process_makefile): Use it to handle cc1plus via cp/Make-lang.in. + +Fri May 12 13:35:07 1995 Doug Evans + + * arm.h: Replace ARM_REG_PREFIX with REGISTER_PREFIX. + Replace ARM_COMMENT_CHAR with ASM_COMMENT_START. + (REGISTER_PREFIX): Define. + (USER_LABEL_PREFIX, LOCAL_LABEL_PREFIX): Define. + (SECONDARY_OUTPUT_RELOAD_CLASS): Handle DFmodes only if + TARGET_HARD_FLOAT. + (PREDICATE_CODES): Add soft_df_operand. + * arm.c: Replace ARM_REG_PREFIX with REGISTER_PREFIX. + Replace ARM_COMMENT_CHAR with ASM_COMMENT_START. + (arm_asm_output_label): Use USER_LABEL_PREFIX. + (soft_df_operand): New function. + * arm.md (movsicc): New pattern. + (movsfcc, movdfcc, *movsicc_insn, *movsfcc_hard_insn): Likewise. + (*movsfcc_soft_insn, *movdfcc_insn): Likewise. + (*movdf_soft_insn): Rewrite. + (movsi matcher): Fix typo in type attribute. + +Fri May 12 10:25:40 1995 Michael Meissner (meissner@cygnus.com) + + * i386.h (TARGET_RTD): Use MASK_RTD, not MASK_REGPARM. + (TARGET_SWITCHES): Add -m{,no-}align-double switch. + (TARGET_OPTIONS): Add -mregparm= switch to set number of registers + to use for passing arguments. Add -malign-loops= switch to set + the alignment for loops. Add -malign-jumps= switch to set the + alignment for code that is jumped to. Add -malign-functions= + switch to set the initial alignment of functions. + (TARGET_REGPARM): Delete, in favor of -mregparm= + (TARGET_SWITCHES): Delete -mregparm, add -mdebug-arg switches. + (RETURN_POPS_ARGS): Call i386_return_pops_args to do the real work. + (VALID_MACHINE_DECL_ATTRIBUTE): Define as function call. + (VALID_MACHINE_TYPE_ATTRIBUTE): Define as function call. + (COMP_TYPE_ATTRIBUTES): Define as function call. + (REGPARM_MAX): Maximum number of regs to use for passing arguments. + (CUMULATIVE_ARGS): Make this a structure, not an int. + (INIT_CUMULATIVE_ARGS, FUNCTION_ARG{,_ADVANCE}): Call function. + (FUNCTION_ARG_PARTIAL_NREGS): Likewise. + (MAX_CODE_ALIGN): Maximum value to align loops/jumps to. + (BIGGEST_ALIGNMENT): Return 64 if -malign-double, 32 otherwise. + (ASM_OUTPUT_ALIGN_CODE): Use value of -malign-jumps= switch. + (ASM_OUTPUT_LOOP_ALIGN): Use value of -malign-loops= switch. + (toplevel): Declare all new functions and external variables added + in i386.c. + + * i386.c (i386_regparm_string, i386_regparm): New variables + for -mregparm= switch to set the number of registers to use for + passing arguments. + (i386_align_loops_string, i386_align_loops): New variables for + -malign-loops= switch to set alignment to use for loops. + (i386_align_jumps_string, i386_align_jumps): New variables for + -malign-jumps= switch to set alignment to use for labels that are + jumped to. + (override_options): Support new switches. + (i386_valid_decl_attribute_p): New function to validate decl + specific attributes. Presently returns 0. + (i386_valid_type_attribute_p): New function to validate type + specific attributes. Recognize "stdcall", which says function + with fixed numbers of arguments is responsible for popping stack, + "cdecl", which says to use the normal C calling sequence, even if + -mrtd is used, and "regparm", which specifies the number of + registers to use for passing arguments. + (i386_comp_type_attributes): New function, to validate whether + attributes are compatible. + (i386_return_pops_args): New function, to return whether or not + the function pops its argument list or not, taking into account + -mrtd, and the stdcall/cdecl attributes. + (init_cumulative_args): Rewrite as a function, taking variable + argument functions, and regparm support into account. + (function_arg{,_advance,_partial_nreg}): Likewise. + (print_operand): Support %J, to print appropriate jump insn. + + * i386.md (decrement_and_branch_until_zero): Define pattern, + so that loops that count down to zero, don't have an unneeded + compare after the decrement. Add a general insn recognizer for + add to a value and compare against zero. + + * i386/go32.h, i386/winnt.h (VALID_MACHINE_DECL_ATTRIBUTE): + Delete, code folded into the mainline. + (RETURN_POPS_ARGS): Likewise. + + * i386/winnt.h (ENCODE_SECTION_INFO): The stdcall attribute is now + stored on the type field, rather than the decl. + + * i386/gas.h (ASM_OUTPUT_ALIGN_CODE, ASM_OUTPUT_LOOP_ALIGN): Use + i386_align_{loops,jumps} variables to do alignment. + * i386/osfrose.h, i386/svr3dbx.h: Likewise. + +Fri May 12 12:48:19 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stor-layout.c (layout_type, case ARRAY_TYPE): Compute length using + MAX of length and zero if sizetype signed and neither bound constant. + + * i386/gnuelf.h, i386/linux-oldld.h, i386/lynx-ng.h, i386/v3gas.h: + Use <...> in #include instead of "...". + * m68k/lynx-ng.h, sparc/lynx-ng.h: Likewise. + + * c-parse.in (myparm): Handle attributes. + * objc-act.c (unused_list): New variable. + (build_tmp_function_decl): Call push_parm_decl with new format. + (start_class): Initialize unused_list. + (start_method_def): Call push_parm_decl with new format and + mark _cmp as possibly unused. + + * combine.c (simplify_shift_const): Don't change SHIFT_MODE + for LSHIFTRT either. + + * unroll.c (unroll_loop): Don't move reg if used in copy_end and + that is a JUMP_INSN. + +Fri May 12 12:31:37 1995 Doug Evans + + * arm/lib1funcs.asm: New file. + +Fri May 12 11:52:03 1995 Kung Hsu + + * configure (a29k-*-vxworks*): New target. + * config.sub (vxworks29k): New alias. + * a29k/t-vx29k: New file. + * a29k/vx29k.h: New file. + +Fri May 12 11:17:28 1995 Jim Wilson + + * loop.c (check_dbra_loop): When reversing loop when + no_use_except_counting is false, there must be only one biv. + +Fri May 12 07:10:00 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * unroll.c (unroll_loop): Only use local_regno for pseudos. + + * genattrtab.c (write_test_expr, case MATCH_DUP): Use operands[N] + instead of JUMP_LABEL (which may not be set). + (walk_attr_value, case MATCH_DUP): Set must_extract. + + * c-parse.in: Adjust number of shift/reduce conflicts. + (parm): Support attributes. + * c-decl.c (push_parm_decl): Pass any attributes to decl_attributes. + +Fri May 12 00:36:26 1995 Per Bothner + + * cpplib.c (skip_quoted_string): Removed - no longer needed. + (skip_if_group): Use cpp_get_token instead of skip_quoted_string. + + * cpplib.h (struct cpp_reader): Remove start_line field. + Add multiline_string_line field. + + * cpplib.c (cpp_error_with_line, cpp_warning_with_line, + cpp_pedwarn_with_line): Take extra column number parameter. + (macroexpand, cpp_get_token): Fix reporting of unterminated strings. + (line_for_error): Removed - no longer needed. + +Fri May 12 02:21:34 1995 Jim Wilson + + * mips/svr4-t.h (MD_STARTFILE_PREFIX, MD_EXEC_PREFIX, + STARTFILE_SPEC, LINK_SPEC): Define. + * configure (mips-tandem-sysv4): Use t-mips not t-svr4. + +Thu May 11 19:18:54 1995 Per Bothner + + * cpplib.c (line_for_error): Make it work; add extra parameter. + (skip_quoted_string, cpp_get_token): Update calls to line_for_error. + (macroexpand): Remember initial line so we can report it if the + call is unterminated. Also, simplify error logic slightly. + (do_include): Cast alloca return value, to avoid pcc warning. + + * cppexp.c (parse_number): Cleanup some Cygnus crud for MPW. + +Thu May 11 21:35:23 1995 Torbjorn Granlund + + From Moshier: + * i960.c (i960_output_ldconst): Let split_double handle DImode. + (i960_print_operand): Use REAL_VALUE_TO_DECIMAL for decimal strings. + (i960_output_double, i960_output_float): Likewise; also change arg + VALUE from `double' to `REAL_VALUE_TYPE'. + +Thu May 11 21:09:25 1995 Per Bothner (bothner@wombat.gnu.ai.mit.edu) + + * cpperror.c (cpp_print_containing_files): Remove some + Cygnus-local stuff. + +Thu May 11 21:06:47 1995 Doug Evans + + * gcc.c (link_command_spec): Make -nostdlib no longer imply + -nostartfiles. + +Thu May 11 18:48:57 1995 Paul Eggert + + * c-common.c (convert_and_check): Don't diagnose overflow in constant + expression merely because conversion overflowed. + +Thu May 11 18:43:59 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-decl.c (grokdeclarator): Use PARM_FLAG to see if should + make PARM_DECL. + * c-parse.in (nested_function, notype_nested_function): + Allow old-style arg definitions (use xdecls). + + * c-decl.c (finish_struct): Properly update DECL_PACKED. + +Thu May 11 15:24:15 1995 Jason Merrill + + * fold-const.c (fold): Also fold CLEANUP_POINT_EXPRs into + TRUTH_*_EXPRs and into the first operand. + (operand_equal_for_comparison_p): Also make sure the second operand + is integral. + +Thu May 11 14:22:03 1995 Ted Lemon + + * config/mips/netbsd.h: New file. + * config/mips/t-mips-netbsd: New file. + * config/mips/x-netbsd: New file. + + * configure (mips-dec-netbsd*): Add entry. + + * mips.h (LOCAL_LABEL_PREFIX, USER_LABEL_PREFIX): Define. + (PUT_SDB_BLOCK_START, PUT_SDB_BLOCK_END, ASM_OUTPUT_LABEL_REF, + ASM_OUTPUT_INTERNAL_LABEL, ASM_GENERATE_INTERNAL_LABEL, + ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Use them. + + * mips.c (mips_output_lineno): Use LOCAL_LABEL_PREFIX. + +Thu May 11 14:22:03 1995 Stan Cox (gcc@dg-rtp.dg.com) + + * dwarfout.c (output_decl): Don't output DIE for struct or union type + with no name or with ERROR_MARK for the fields. + +Thu May 11 06:36:34 1995 Michael Meissner (meissner@cygnus.com) + + * flow.c (mark_used_regs): If a SUBREG does not have a REG in the + SUBREG_REG position, recursively call mark_used_regs, instead of + segfaulting. + +Thu May 11 06:44:34 1995 Pat Rankin (rankin@eql.caltech.edu) + + * expr.c (do_jump, case EQ_EXPR, NE_EXPR): Fix typo for complex. + +Wed May 10 12:34:46 1995 Michael Meissner + + * configure: Add support for the little endian variant of the + PowerPC System V.4 and Eabi targets. If the GNU assembler was not + specified, don't build libgcc.a variants on the PowerPC systems + that use -mrelocatable, -mlittle, and -mbig. + + * genmultilib: For MULTILIB_MATCHES arguments, map question marks + into equal signs after spliting the left and right side of + equivalent options, to all support for options like: -mcpu=403. + + * rs6000/rs6000.md (rs6000_immed_double_const): New function that + is like immed_double_const, except that it reverses the two words + in the constant if the target is little endian. + + * rs6000/rs6000.md (floatsidf2): Use rs6000_immed_double_const, + not immed_double_const. + (floatunssidf2): Ditto. + + * rs6000/rs6000.h: Add declarations for all functions in rs6000.c. + + * rs6000/sysv4.h (TARGET_SWITCHES): Add -mlittle, -mlittle-endian, + -mbig, and -mbig-endian for bi-endian support. + (ASM_SPEC): Pass -mlittle/-mbig to the assembler if it was passed + to us. + (LINK_SPEC): If explicit little or big endian support was + requested, tell the GNU linker to use the appropriate target + format. + + * rs6000/t-eabi (MULTILIB_*): Build libgcc.a variants for software + floating point. Remove mrelocatable libgcc.a variant. + + * rs6000/t-eabigas: New file, cloned from t-eabi. Build + mrelocatable libgcc.a variant in addition to the other variants. + + * rs6000/t-ppc: New file, for PowerPC System V.4 support without + the GNU assembler. + + * rs6000/t-ppcgas: New file, for PowerPC System V.4 support with + the GNU assembler. + + * rs6000/eabile.h: New file, little endian eabi config file. + * rs6000/sysv4le.h: New file, little endian V.4 config file. + +Wed May 10 14:22:28 1995 Doug Evans + + * libgcc1-test.c (main_without__main): Renamed from `main'. + * Makefile.in (libgcc1-test): Tell the user to ignore warnings. + + * configure: Support --enable-foo, --disable-foo. + +Wed May 10 10:34:00 1995 Lee Iverson + + * unroll.c: Add declarations of static functions. + (unroll_loop): Renumber regs local to loop for each unrolled iteration. + +Wed May 10 08:27:03 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (alpha_set_emit_const): Cleanups to work properly + when run on 32-bit host. + + * configure: Instead of symlinking tm.h and {h,t,}config.h, + make them files that #include the proper file; pass to Makefile. + Pass out_file and md_file to Makefile instead of making symlinks. + * Makefile.in (out_file, md_file, tm_file, {build,host}_xm_file): + New symbols, to be overridden by configure. + (insn-*): Use $(md_file), not md. + (aux-output.o): Use $(out_file), not aux-output.c. + ($(MD_FILE)): Rework to use new conventions. + (gen*.o, bi-*.o): Depend on $(build_xm_file), not hconfig.h. + (scan.o, fix-header.o, scan-decls.o): Likewise. + (distclean): Adjust files removed for new convention. + +Tue May 9 19:26:42 1995 Jason Merrill + + * rs6000/rs6000.h (LIBGCC_SPEC): Do link with libgcc when -shared. + + * Makefile.in (STAGESTUFF): Add underscore.c. + (underscore.c): Rename temporary files to begin with 'tmp-' so that + they will be removed by 'make mostlyclean'. + +Tue May 9 19:19:55 1995 Mike Stump + + * toplev.c (lang_options): Add new flag -ffor-scope. + +Tue May 9 19:11:47 1995 Lee Iverson (leei@ai.sri.com) + + * objc/init.c (objc_init_statics): Fix missing part of last change. + +Tue May 9 18:25:34 1995 Richard Kenner + + * i386/gnu.h, i386/linux.h, i386/linux-aout.h, i386/lynx.h: + Use <...> in #include instead of "..." to avoid recursion. + * i386/netbsd.h, i386/xm-gnu.h, i386/xm-linux.h: Likewise. + * i386/xm-lynx.h, i386/xm-freebsd.h, i386/xm-netbsd.h: Likewise. + * m68k/lynx.h, m68k/netbsd.h, m68k/xm-lynx.h: Likewise. + * m68k/xm-netbsd.h, mips/gnu.h, ns32k/netbsd.h: Likewise. + * ns32k/xm-netbsd.h, rs6000/lynx.h, rs6000/xm-lynx.h: Likewise. + * sparc/lynx.h, sparc/netbsd.h, sparc/xm-lynx.h: Likewise. + * sparc/xm-netbsd.h, vax/netbsd.h, vax/xm-netbsd.h: Likewise. + +Tue May 9 15:52:05 1995 Michael Meissner + + * config.sub: Recognize powerpcle as the little endian varient of + the PowerPC. Recgonize ppc as a PowerPC variant, and ppcle as a + powerpcle variant. Convert pentium into i586, not i486. Add p5 + alias for i586. Map new x86 variants p6, k5, nexgen into i586 + temporarily. + +Tue May 9 15:43:27 1995 Jason Merrill + + * rs6000/rs6000.h (LINK_SPEC, LIB_SPEC): Don't mess with libg + if -shared. + * rs6000/aix41ppc.h (LINK_SPEC): Ditto. + + * rs6000/powerpc.h: Don't emit .extern directives. + +Tue May 9 14:08:09 1995 Jim Wilson + + * sh/lib1funcs.asm (__ashrsi3, __ashlsi3, __lshrsi3): Use .byte + instead of .word offsets in switch table. + +Tue May 9 11:44:47 1995 Jeremy Bettis + + * objc/sendmsg.c (__objc_send_initialize): Call superclass if object + does not implement +initialize. + +Tue May 9 02:44:16 1995 Jason Merrill + + * rs6000/xm-rs6000.h (COLLECT_EXPORT_LIST): Define if not + cross-compiling. + * rs6000/xm-mach.h: #undef COLLECT_EXPORT_LIST. + * rs6000/rs6000.h (COLLECT_SCAN_OBJECTS): Lose. + + * collect2.c (collect_exit): Unlink export_file. + (prefix_from_string): Broken out from prefix_from_env. + (prefix_from_env): Call it. + (main): Under AIX, recognize -bE: and -bexport:, and don't + automatically export everything if we see one. Otherwise, scan the + objects individually and add all their symbols to an export file to be + passed to the linker. + (write_export_file): New function. + (scan_prog_file): Ignore symbols starting with '.' + + * c-common.c (declare_hidden_char_array): Mark decl artificial. + +Mon May 8 18:13:57 1995 Adam Fedor + + * objc/init.c (_objc_load_callback): Add declaration. + (__objc_exec_class): Call _objc_load_callback after every Class + or Category is added. + * objc/objc-api.h (_objc_load_callback): Add declaration. + +Mon May 8 17:56:28 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case INDIRECT_REF): Set RTX_UNCHANGING_P + if both TREE_READONLY and TREE_STATIC set. + + * c-typeck.c (convert_for_assignment): Don't give errors about + adding const or volatile unless both sides point to functions. + +Mon May 8 11:48:23 1995 Michael Meissner + + * configure: If ../ld/Makefile, symlink ../ld/ld.new to collect-ld, + not real-ld. Don't test for $use_collect2 any more. + +Sun May 7 17:52:23 1995 Jason Merrill + + * calls.c (expand_call): Improve -Winline warnings. + +Sun May 7 17:28:27 1995 DJ Delorie (dj@delorie.com) + + * configure.bat: Use "go32" instead of "msdos" for future expansion. + + * i386/go32.h: Add support for win32's stdcall functions. + + * configure.bat: Add ^M to end of each line. + * i386/config-nt.bat, alpha/config-nt.bat: Likewise. + +Sun May 7 02:12:26 1995 Jason Merrill + + * tree.h (DECL_ARTIFICIAL): New macro. + + * function.c (expand_function_end): Don't warn about unused + anonymous or artificial parms. + +Fri May 5 18:41:22 1995 Jim Meyering (meyering@comco.com) + + * configure: Fix typo in name of "maintainer-clean". + +Fri May 5 14:58:01 1995 Jeffrey A. Law + + * pa.c (emit_move_sequence): Force problematical constants + into memory during the reload pass when generating PIC. + +Fri May 5 13:30:33 1995 Doug Evans + + * objc/NXConstStr.m: NXConstantString.h renamed to NXConststr.h. + +Fri May 5 07:10:15 1995 Stephen L Moshier (moshier@world.std.com) + + * real.c (emdnorm, toe64, etoe64): Significand of Intel long double + denormals is shifted down one bit. + +Fri May 5 07:04:12 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c (process_init_element): Don't clear_momentary if + constructor_stack is not empty. + + * objc/Makefile (SHELL): Now /bin/sh. + + * c-typeck.c (build_binary_op): Also warn about ordered + comparison of pointer with zero if -Wall. + + * expr.c (do_jump, case EQ_EXPR, NE_EXPR): Properly compare complex. + +Thu May 4 18:01:25 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * objc/Makefile: NXConstantString renamed to NXConstStr. + * objc/NXConstStr.m: Renamed from objc/NXConstantString.m. + * objc/NXConstStr.h: Renamed from objc/NXConstantString.h. + +Thu May 4 17:38:21 1995 J.T. Conklin + + * configure (vax-*-netbsd*): New configuration. + * vax/netbsd.h, vax/xm-netbsd.h: New files. + +Thu May 4 16:39:05 1995 Jason Merrill + + * collect2.c (main): Add check for 'collect-ld', just like + 'real-ld', except that old versions won't be looking for it in the + path. Don't look for 'real-ld' in the path anymore. Sigh. + + * collect2.c: #include demangle.h and obstack.h. + (obstack_chunk_alloc): Define. + (obstack_chunk_free): Define. + (generic): Don't define. Don't use. + (main): Initialize obstacks and demangling. + + * collect2.c (dump_file): Adjust space padding in output to + maintain tabulation with Solaris ld. Don't demangle if the + environment variable COLLECT_NO_DEMANGLE is set. + + * collect2.c (main): Redirect the output of the first link and + demangle it. Don't collect static c/dtors unless USE_COLLECT2 is + defined. Null-terminate the list of objects. + (dump_file): New function. + (file_exists): New function. + (collect_exit): Renamed from my_exit. Dump and remove the temporary + ld output file. + (collect_execute): Break out from fork_execute. Support redirection. + (fork_execute): Call it. + (fatal_perror, fatal, error): Make non-static. + (xcalloc, xmalloc): Don't use generic. + (xrealloc): Define. + (collect_wait): Break out for do_wait. Just return the exit status. + (do_wait): Call it. + + * collect2.c: Check SUNOS4_SHARED_LIBRARIES using #if, not #ifdef. + + * Makefile.in (collect2): Now uses cplus-dem.o and underscore.o. + (collect2.o): Pass MAYBE_USE_COLLECT2 to compile. + (underscore.c): Rules for creation. + + * cplus-dem.c, demangle.h: Copy from libiberty. + +Thu May 4 14:12:35 1995 Jim Wilson + + * sdbout.c (plain_type): Pass additional argument to plain_type_1. + (plain_type_1): New parameter level. Increment it when making + recursive calls. Force the type to void_type_mode before starting + a 7th level of recursion. + + * sh.c (general_movsrc_operand, general_movdst_operand): Delete + references to POST_DEC and PRE_INC. + * sh.h: Clean up whitespace, comments, etc. + (TARGET_SH, RTL_BIT, DT_BIT, C_BIT, R_BIT, TARGET_DUMP_RTL, + TARGET_DUMP_R, TARGET_CDUMP): Delete. + (TARGET_SWITCHES): Delete -mR, -mc, -mr options. + (CONST_DOUBLE_OK_FOR_LETTER_P): Delete 'G' contraint. + (FUNCTION_VALUE): Simplify. + (REG_OK_FOR_PRE_POST_P, IS_INDEX): Delete. + (BASE_REGISTER_RTX_P, INDEX_REGISTER_RTX_P): Rewrite to allow + SUBREGs. + (GO_IF_LEGITIMATE_INDEX): Delete unused REGNO argument. + (GO_IF_LEGITIMATE_ADDRESS): Use BASE_REGISTER_RTX_P instead of + REG_OK_FOR_PRE_POST_P. Don't accept PRE_INC or POST_DEC addresses. + (PREDICATE_CODES, PROMOTE_MODE): Define. + +Wed May 3 09:57:55 1995 Michael Meissner + + * rs6000/rs6000.md (non power abs insns): If not powerpc, use + sf/subfc instructions, not subf. + +Wed May 3 08:49:06 1995 Alan Modra + + * protoize.c (gen_aux_info_file): Use strerror #ifdef HAVE_STRERROR. + +Wed May 3 01:06:01 1995 Jeffrey A. Law + + * pa.c (output_call): Fix typo/thinko in last change. + (output_function_epilogue): Align the data section before + emitting deferred plabels. + + From Torbjorn: + * pa.c (before functions): Declare deferred_plabels and + n_deferred_plabels. + (output_call): When generating pic, don't use LP and RP. Use 32 bit + plabel instead. + (output_function_epilogue): Output plabels accumulated in output_call. + +Tue May 2 17:15:08 1995 Jeffrey A. Law + + * pa.c (hppa_expand_epilogue): Fix thinko in last change. + +Tue May 2 16:54:35 1995 Doug Evans + + * jump.c (jump_optimize, can_reach_end determination): A barrier can + follow the return insn. + +Tue May 2 12:39:55 1995 Mike Stump + + * fold-const.c (fold): Ensure that we don't alter the expression's + type when folding CLEANUP_POINT_EXPRs. + +Tue May 2 13:36:08 1995 Michael Meissner + + * expmed.c (emit_store_flag): When creating store flag + instructions from simpler parts, such as XOR, ABS, etc. do not + reuse pseudo registers if expensive optimizations, instead create new + pseudos for each insn result. + +Tue May 2 01:25:29 1995 Jeffrey A. Law + + * pa.c (hppa_expand_epilogue): Correctly handle restore of %rp + for functions with a stack size of exactly 8kbytes and no frame + pointer. + +Mon May 1 19:27:08 1995 Jim Wilson + + * sdbout.c (sdbout_one_type): Don't switch to text section if + in function with section attribute. + + * combine.c (combine_instrutions): Set subst_prev_insn to zero. + (try_combine, undo_all): Likewise. + (get_last_value): Return zero if subst_prev_insn set. + + * sparc.h (INIT_TARGET_OPTABS): Move INIT_SUBTARGET_OPTABS to end. + + * Makefile.in (install-dir): chmod a+rx all newly created directories. + + * expr.c (expand_expr, case SAVE_EXPR): Handle the case where + mode is VOIDmode. + +Fri Apr 28 15:39:38 1995 Per Bothner + + * cpplib.h (cpp_buffer): Note new escape combination "@ ". + * cpplib.c (macroexpand): Delete "@ " if stringifying. + (cpp_skip_hspace): Also skip "@ " if input buffer has_escapes. + (collect_expansion): Cleanup white-space handling. + (create_definition): Remove all leading spaces, not just first one. + (cpp_expand_to_buffer): Set has_escapes on resulting input buffer. + (macroexpand): Set output_escapes during whole function (and + specifically during calls of macarg). + (macroexpand): Set "@ " before and after expansion result. + (push_macro_expansion): Remove unneeded initial "@ ", not " ". + (cpp_get_token): Remove unneeded "@ " (not " ") at end of expansion. + (cpp_get_token): Handle "@ ". + + * cpplib.c (read_name_map): Add cpp_reader parameter. Access + map_list from former (instead of having it be static). + (open_include_file): Extra parameter (because of above changes). + (do_include, lookup_import): Update calls of open_include_file. + + * cpplib.c (do_include): Fix memory leak. + + * cpplib.c (delete_assertion): Also delete tokenlist. + (do_unassert): Don't delete tokenlist (handled by delete_assertion). + (cpp_cleanup): New function. Frees resources used by a cpp_reader. + * cpphash.c (cpp_hash_cleanup): New function. + (delete_macro): Enable commented-out code. + (file_cleanup): Free actual buffer. + + * cpplib.c (cpp_options): Add map_list. + + * cpplib.h (PARSE_GETC): Removed. Bogus and unused. + * cppmain.c (main): Remove commented-out code that used PARSE_GETC. + + * cpplib.c: Don't #include . Causes clashes + on Nextstep (when index/rindex are macros). + (cpp_grow_buffer, int_parse_file): Cast to U_CHAR*, rather than char*. + +Sun Apr 30 08:11:23 1995 Alan Modra (alan@spri.levels.unisa.edu.au) + + * stdarg.h, varargs.h (va_arg): Don't assume __va_rounded_size (char) + has the value of 4. + +Sun Apr 30 07:13:43 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * vax.h (NOTICE_UPDATE_CC): Correctly handle aob insns. + + * expr.c (expand_expr, case CONSTRUCTOR): Don't set target to + zero if more then one word. + Pass size and alignment to move_by_pieces_ninsns in bytes, not bits. + + * cse.c (cse_insn): Properly set IN_MEMORY for SET_DEST. + + * tree.c (substitute_in_expr): Preserve TREE_READONLY. + + * c-common.c (enum attrs): Add A_UNUSED. + (init_attributes): Initialize it. + (decl_attributes, case A_UNUSED): New case. + +Sat Apr 29 15:42:03 1995 Paul Eggert + + * cccp.c (do_include): Re-fix minor memory leak by using + alloca instead of xmalloc and free. + + * cccp.c (macarg): Except for reporting error, treat unterminated + macro call as if it were terminated, since `macroexpand' relies + on *argptr being filled in. + +Sat Apr 29 06:09:35 1995 Torbjorn Granlund + + * pa.c (output_mul_insn): Simplify, it is never called with + UNSIGNEDP set. + + * pa.md (divsi3, udivsi3, modsi3, umodsi3): Simplify. + (ashlsi3): Clean up indentation and commentary. + +Fri Apr 28 12:48:01 1995 Jason Merrill + + * integrate.c (expand_inline_function): Don't emit any notes until + after we've expanded the actual parameters. + +Fri Apr 28 11:51:06 1995 Stan Cox (gcc@dg-rtp.dg.com) + + * m88k/dgux.h: (ENDFILE_SPEC, LIB_SPEC) Fix crtbegin and crtend + (SELECT_RTX_SECTION) Put relocatable pic constants in data section + + * m88k/dguxbcs.h: (LIB_SPEC) Likewise + + * m88k/m88k.c: (symbolic_operand) Put relocatable pic constants in data + + * m88k/m88k.h: (FRAME_POINTER_REQUIRED) Add -momit-leaf-frame-pointer + + * m88k/m88k.md: (umulsidi3) Doesn't work for 88110 with mod/div changes + + * m88k/x-dgux: (GCC_FOR_TARGET) tdesc gets mixed up for crtbegin/crtend + +Fri Apr 28 06:36:47 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-typeck.c (pop_init_level, output_init_element): Pass + require_constant_* to digest_init. + + * alpha.c (alpha_emit_set_const): Now returns rtx and take MODE arg. + Rework to use a new pseudo for intermediate values if high opt level. + Also use expand_{bin,un}op. + * alpha.h (alpha_emit_set_const): Add declaration. + * alpha.md (mov[sd]i and splits): Change call to alpha_emit_set_const. + + * reg-stack.c (stack_result): Fix bug in last change. + +Fri Apr 28 01:08:43 1995 Doug Evans + + * objc-act.c: Update calls to start_decl, finish_struct, + pass NULLs for attributes. + +Thu Apr 27 21:13:14 1995 Doug Evans + + * sparc.md (tablejump): Only if ! TARGET_MEDANY. + (casesi): New pattern for TARGET_MEDANY case. + + * c-common.c (decl_attributes): Always continue if attribute not found. + * c-typeck.c (common_type): Call lookup_attribute instead of + value_member. + * tree.c (attribute_hash_list): New function. + (build_type_attribute_variant): Call it. + (valid_machine_attribute): Handle attributes with arguments. + (is_attribute_p): New function. + (lookup_attribute): New function. + (attribute_in_list): Deleted. + (attribute_list_contained): Check TREE_PURPOSE and TREE_VALUE. + * tree.h (valid_machine_attribute): Add prototype. + (is_attribute_p, lookup_attribute): Likewise. + * i386/winnt.h (RETURN_POPS_ARGS): Call lookup_attribute. + (ENCODE_SECTION_INFO): Likewise. + (CPP_PREDEFINES): Use __stdcall__, __cdecl__. + (VALID_MACHINE_DECL_ATTRIBUTE): Call is_attribute_p. + `args' must be NULL. + +Thu Apr 27 21:10:41 1995 David Edelsohn + + * rs6000.md (insv): New anonymous patterns to combine insert with + arbitrary ashift, ashiftrt, lshiftrt, or zero_extract. (Based on + patch from John Brooks .) + (ashlsi3): Remove extraneous operand processing. + +Thu Apr 27 18:47:24 1995 Jim Wilson + + * sh/ashlsi3.c, sh/ashrsi3.c, sh/lshrsi3.c: Delete. + * sh/lib1funcs.asm (ashiftrt_r4_*): Rewrite for efficiency. + (ashrsi3, lshrsi3, lshrsi3): Add. + * t-sh (LIB1ASMFUNCS): Add new functions. + (LIBGCC2_CFLAGS): Delete. + (LIB2FUNCS_EXTRA): Remove deleted files. + (ashlsi3.c, ashrsi3.c, lshrsi3.c): Remove rules for deleted files. + + * stmt.c (expand_return): When returning BLKmode structure, use + operand_subword instead of doing arithmetic on the register number. + Also, for structures smaller than word_mode, copy it into a word_mode + temporary and then subreg it. + + * sparc.md: Delete two define_peepholes which print `bad peephole'. + +Thu Apr 27 16:17:01 1995 Torbjorn Granlund + + * toplev.c (rest_of_compilation): Call shorten_branches even when + !optimize. + * final.c (shorten_branches): For non-optimizing compiles, break + after first pass. + +Thu Apr 27 14:22:50 1995 Michael Meissner + + * i386/linux-oldld.h: New file, that is cloned from linux-aout.h, + except that it does not pass -m i386linux to the linker. This is + to support the original Linux ld that is on most distributions. + + * configure (i[345]86-*-linux*oldld*): Use i386/linux-oldld.h as + the target file. + +Thu Apr 27 08:56:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (valid_machine_attribute): Update last change. + +Thu Apr 27 08:06:33 1995 Philippe De Muyter (phdm@info.ucl.ac.be) + + * fix-header.c, cpplib.c: Don't include twice. + * cpplib.c (cpp_grow_buffer, init_parse_file): Cast {xmalloc,xrealloc} + for token_buffer to U_CHAR* instead of char*. + + * m68k/x-mot3300: New file. + * configure (m68k-motorola-sysv*): Use x-mot3300 instead of x-alloca. + +Thu Apr 27 07:04:09 1995 Paul Eggert + + * cccp.c (do_include): Fix minor memory leak. + + * cccp.c (struct argdata): Remove unused `comments' member. + (macarg): Don't set `comments' member. + + * cccp.c (collect_expansion): Assume leading white space + already removed. + Don't allocate unnecessary space for expansion. + + * cccp.c (deps_output): Don't generate overly long output lines. + Do not invoke self recursively with spacer == 0; this simplifies + the code a bit. + +Wed Apr 26 19:20:02 1995 Andrew McCallum + + * objc/Object.h: Changed Class * to Class in order to match NEXTSTEP + and OpenStep runtime. + * objc/Object.m, objc/Object.h, objc/archive.c, objc/class.c: Likewise. + * objc/encoding.c, objc/init.c, objc/objc-api.h, objc/objc.h: Likewise. + * objc/objects.c, objc/runtime.h, objc/selector.c: Likewise. + * objc/sendmsg.c, objc/typedstream.h: Likewise. + +Wed Apr 26 19:18:52 1995 Pieter Schoenmakers + + * objc/objc-api.h (objc_static_instances): New struct to record + static instances of a certain class. + (objc_module): New tag STATICS to point to the table of + objc_statics_instances. + + * objc/init.c (OBJC_VERSION): Version 7. + (objc_init_statics): New function. + (__objc_exec_class): Invoke objc_init_statics if needed. + + * objc/NXConstantString.m, objc/NXConstantString.h: New files. + * objc/Makefile (OBJC_O): Added bare-bones implementation of + NXConstantString. + + * objc-act.c (OBJC_VERSION): Version 7. + (build_objc_string_object): Build a full declaration if not using + the next runtime. + (objc_add_static_instance): New function. + (init_module_descriptor): Add reference to static instances table. + (build_module_descriptor): Add field for static instances table. + (get_objc_string_decl): New function. + (generate_static_references): New function. + (finish_objc): Call generate_static_references if needed. + + * c-tree.h (finish_decl_top_level): New declaration. + * c-decl.c (finish_decl_top_level): New function. + +Wed Apr 26 18:04:32 1995 Dirk Steinberg (Dirk.Steinberg@gmd.de) + + * stddef.h: Treat _MACHINE_ANSI_H_ like _ANSI_H_. + +Wed Apr 26 14:09:59 1995 Jim Wilson + + * sparc.h (NEGTF2_LIBCALL): Define. + (INIT_TARGET_OPTABS): Add support for all TFmode *_LIBCALL macros. + * optabs.c (init_optabs): Delete all uses of undocumented TImode and + TFmode *_LIBCALL macros. + + * combine.c (simplify_rtx, case TRUNCATE): Add. Use force_to_mode. + (force_to_mode, case AND): Allow some simplifications when GET_MODE (x) + has more bits than HOST_BITS_PER_WIDE_INT. + * mips/mips.md (truncdiqi2+[456]): Add patterns to simplify ZERO_EXTEND + of a TRUNCATE. + +Wed Apr 26 13:01:22 1995 Doug Evans + + * sparc.md (memop define_splits): Rewrite to not use memop. + Preserve MEM_IN_STRUCT_P, MEM_VOLATILE_P, RTX_UNCHANGING_P bits. + * sparc.c (memop): Deleted. + (splittable_symbolic_memory_operand): New function. + (splittable_immediate_memory_operand): New function. + +Wed Apr 26 12:54:26 1995 Jeffrey A. Law + + * configure: Add hppa1.1-hp-lites support. + +Wed Apr 26 08:04:46 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sh.md (ashrsi2_31): Don't use dead_or_set_p after reload. + * pyr.md: Remove bad peepholes that improperly use dead_or_set_p. + + * function.c (expand_function_end): Warn about unused parms + if both -Wunused and -W. + + * tree.h (TYPE_PARSE_INFO): Delete unused field. + (TYPE_PACKED): Add new macro. + (struct tree_type): Delete unused field `parse_info'. + Add new field `packed_flag'. + * c-tree.h (finish_enum, finish_struct): Add ATTRIBUTES argument. + * c-common.c (init_attributes): Don't require decl for A_PACKED. + (decl_attributes, case A_PACKED): Set TYPE_PACKED for type. + * c-parse.in: Update number of shift/reduce conflicts. + (structsp): Pass attribute arg to finish_struct. + Support attributes on enums and pass to finish_enum. + * c-decl.c (finish_struct): Add ATTRIBUTES argument, call + decl_attributes and set DECL_PACKED from TYPE_PACKED. + (finish_enum): Add ATTRIBUTES argument, call decl_attributes, + and make enum narrow if TYPE_PACKED. + * print-tree.c (print_node): Print TYPE_PACKED. + + * c-decl.c (init_decl_processing): Don't give builtin__constant_p an + argument type. + * expr.c (expand_builtin, case BUILT_IN_CONSTANT_P): A pointer to a + string constant is a constant. + + * c-typeck.c (output_init_element): Constructor is not simple if + a bitfield is being assigned a non-integer. + + * c-typeck.c (push_init_level): Update constructor_depth when we + push spelling level. + +Tue Apr 25 19:50:06 1995 Jeffrey A. Law + + * pa.c (emit_move_sequence): Handle function label arithmetic for + PIC code generation too. + +Tue Apr 25 18:52:43 1995 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de) + + * reg-stack.c (current_function_returns_real): Deleted (unused). + (FP_mode_reg): Trimmed to a smaller size, less overhead. + (FP_MODE_REG): New macro over which FP_mode_reg will be accessed. + (mark_regs_pat, straighten_stack): New functions. + (reg_to_stack): Amend initialisation of FP_mode_reg. + Mark FP registers mentioned in USE insns before NOTE_INSN_FUNCTION_BEG. + (get_true_reg): Eliminate FP subreg accesses in favour of the + actual FP register in use. + (record_reg_life_pat): Make it work on SUBREGs as well. Make use of + the new mark_regs_pat function. Handle USE insns if called unnested. + (record_reg_life): Don't check for QImode again, we know that it + is there. Process CALL_INSNs like all other insns, they might `use' + some FP argument registers if register passing. + (stack_result_p): Changed in stack_result and returning an rtx. + (stack_reg_life_analysis): Take a new stackentry state argument. + Use stack_result and the rtx to mark using mark_regs_pat. This ensures + that types that need multiple FP registers are handled correctly. + Delete the no_live_regs shortcut to save space. + Use stackentry state to determine filled registers. + (replace_reg): Accept COMPLEX_FLOAT as well. + (move_for_stack_reg): Optimise away some pointer dereferencing. + (subst_stack_regs): Make sure the stack is in the right order + and of the right size for register passing. + (goto_block_pat): Make sure the stack is in the right order + to return possible multi-register values from the function. + (convert_regs): Fix comment about CALL_INSN, it's no longer valid. + Make sure the stack is of the right size and in the right order + to return possible multi-register values from the function. + + * function.c (assign_parms): If STACK_REGS is defined, generate USE + insns before the function body, thus showing which registers are filled + with parameters. + * expr.c (expand_builtin_apply_args): Likewise. + Reverse order of saving registers, more compact code for i387. + (expand_builtin_apply): Likewise. + * emit-rtl.c (gen_highpart): Add comment about broken implementation. + * i386.md (untyped_call): Make it return a complex double. + + * c-parse.in (attrib): Permit null-length argument list to attributes. + + * tree.c (valid_machine_attribute): Use new function attribute_in_list, + makes sure type_attribute_variants are reused even when attributes have + parameters. + Assign any new type to TREE_TYPE (decl). + (attribute_in_list): New function. + (attribute_list_contained): Use it. + * tree.h (attribute_in_list): New declaration. + +Tue Apr 25 18:25:53 1995 Jim Wilson + + * expr.c (struct move_by_pieces): Add to_struct and from_struct fields. + (move_by_pieces): Set to_struct and from_struct fields. + (move_by_pieces_1): Set MEM_IN_STRUCT_P of to1 and from1. + (expand_builtin, case BUILT_IN_MEMCPY): New variable type. + Set MEM_IN_STRUCT_P of src_mem and dest_mem. + + * Makefile.in (clean): Delete libgcc1-asm.a. + + * m68k/vxm68k.h (CPP_SPEC): Define. + + * c-decl.c (pushdecl): Don't test DECL_EXTERNAL when deciding whether + to register a duplicate decl in the current block. + + * cross64.h (INIT_ENVIRONMENT): Define as string not putenv call. + * gcc.c (main): Pass INIT_ENVIRONMENT to putenv. + + * stmt.c (expand_return): When returning BLKmode structure in + registers, copy it to a psuedo-reg instead of to hard registers. + +Tue Apr 25 15:14:58 1995 Michael Meissner + + * rs6000.h (LEGITIMIZE_ADDRESS): Don't create a DF address using two + regs if -msoft-float or -mcpu=403. + +Tue Apr 25 15:45:44 1995 Richard Henderson (richard@atheist.tamu.edu) + + * m68k.md (divhi3, udivhi3, modhi3, umodhi3): Deleted + these insns plus some surrounding trash. + (divmodhi4, udivmodhi4): Added these insns. + +Tue Apr 25 10:12:40 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (alpha_builtin_saveregs): Refine last change to work + for both stdarg and varargs. + + * tree.c (chain_member_purpose): Make similar to chain_member_value. + + * Makefile.in, configure: Change "realclean" to "maintainer-clean". + + * protoize.c: Removed __NetBSD__ from conditional. + Declare strerror if HAVE_STRERROR is defined; otherwise + declare sys_errlist and sys_nerr. + (my_strerror): New function. + (errno): Don't define if already defined as a macro. + + * alpha.c (current_file_function_operand): Return false if profiling. + + * expr.c (convert_move): Don't access a hard reg in an invalid + mode when doing a truncation. + + * alpha.c (add_operand): Test for exactly the constants allowed by + the constraints. + * alpha.h (CONST_OK_FOR_LETTER_P, case 'L'): Reject 0x80000000. + + * c-parse.in (initdcl, notype_initdcl): Pass attributes to + start_decl; delete call to decl_attributes. + * c-tree.h (start_decl): Two new tree parameters. + * c-decl.c (start_decl): New args for attributes; call decl_attributes. + + * c-decl.c (duplicate_decls): Don't look at TYPE_ACTUAL_ARG_TYPES + if it is not set. + + * xm-1750a.h: New file. + + * alpha.c (alpha_builtin_saveregs): Add to incoming args addr + if less than 6 named args, not less than or equal to. + +Mon Apr 24 15:25:19 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * mips-tfile.c (fatal, error): Make first arg const to avoid warning. + + * stmt.c (expand_end_bindings): Write a BARRIER after call + to abort in nonlocal handler. + + * stmt.c (expand_decl_init): Call preserve_temp_slots to keep + around any temp whose address was taken. + +Fri Apr 21 16:26:15 1995 Torbjorn Granlund + + * pa.md (call_internal_reg): Fix typos in length calculation. + (call_value_internal_reg): Likewise. + +Fri Apr 21 13:17:15 1995 Roland McGrath + + * config/gnu.h (STANDARD_INCLUDE_DIR): New macro. + * config/mips/gnu.h (STANDARD_INCLUDE_DIR): Macro moved there. + +Fri Apr 21 08:23:58 1995 Tom Quiggle (quiggle@lovelace.engr.sgi.com) + + * toplev.c (lang_options): Add -I for GNAT. + * gcc.c (default_compilers): Pass -I to gnat1. + +Fri Apr 21 07:58:06 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * tree.c (integer_all_onesp): Test to size of mode, not TYPE_PRECISION. + + * toplev.c (main): Turn on -fforce-mem for -O2. + + * fold-const.c ([lr]rotate_double): Replace; old versions were bogus. + (fold, shift and rotate): Don't call tree_int_cst_sgn on non-integer. + (fold, case LROTATE_EXPR): If constant count, convert to RROTATE_EXPR. + (fold, case RROTATE_EXPR): Sometimes commute logical op with rotate. + Delete pair of counteracting shifts. + + * combine.c (simplify_logical, case AND): If still an AND, get + new values for op0 and op1. + +Thu Apr 20 17:52:10 1995 Jim Wilson + + * sh.c: Completely rewritten. + * sh.h (FAST_BIT, CONSTLEN_2_BIT, CONSTLEN_3_BIT, CONSTLEN_0_BIT, + TARGET_FASTCODE, TARGET_CLEN3, TARGET_CLEN0, TARGET_OPTIONS): Delete. + (TARGET_SWITCHES): Delete -mclen3 and -mclen0 options. + (TARGET_DEFAULT): Is zero. + (OVERRIDE_OPTIONS): Delete code to set max_count_si and max_count_hi. + (SPECIAL_REG): New macro. + (HARD_REGNO_MODE_OK): Allow any mode in any general register. + (GO_IF_LEGITIMATE_ADDRESS): Delete constant + reg address case. + (MOVE_RATIO): Define to 2 when TARGET_SMALLCODE. + (max_si, max_hi, max_count_si, max_count_hi): Delete. + * sh.md: Delete spurious constraints from all define_expands. + (rotlsi3_1): Set T reg instead of clobbering it. + (ashrsi3): Use expand_ashiftrt instead of gen_shifty_op. + (movsi_i, movhi_i, movsf_i): Add conditions to reject patterns + needing a reload. + (movdi-2, movdf_k): Correct conditions to reject patterns needing + a reload. + ([inverse_]branch_{true,false}): Pass operands to output_branch. + (jump): Delete unnecessary braces. + (call, call_value): Don't use expand_acall. Force operand0 into + a register. + +Thu Apr 20 12:57:16 1995 Jason Merrill + + * function.c (assign_parms): Use TREE_ADDRESSABLE rather than + TYPE_NEEDS_CONSTRUCTING to decide whether a parameter needs to be + passed by invisible reference. + + * calls.c (expand_call): Ditto. Abort if we try to pre-evaluate a + parameter of TREE_ADDRESSABLE type. + +Wed Apr 19 17:50:24 1995 Torbjorn Granlund + + * pa.h (TARGET_SWITCHES): Fix typo. + +Tue Apr 18 18:06:03 1995 Per Bothner + + * expr.c (store_constructor): Use BYTES_BIG_ENDIAN rather + than BITS_BIG_ENDIAN to layout bits within bitstring. + * tree.c (get_set_constructor_bytes): Likewise. + +Tue Apr 18 17:22:46 1995 Per Bothner (bothner@wombat.gnu.ai.mit.edu) + + * config/m68k/{x-hp320,x-hp320g} (FIXPROTO_DEFINES): + Define _HPUX_SOURCE so putenv and other functions get seen. + +Tue Apr 18 03:57:35 1995 Michael Meissner (meissner@cygnus.com) + + * varasm.c (weak_decls): Make this a unique structure, instead of + a tree structure. + (handle_pragma_weak): Don't redeclare asm_out_file. Use new weak + structure to copy name and value to. Protect name and value by + copying them to the permanent obstack. + (declare_weak): Call handle_pragma_weak, instead of duplicating + the code. + (finish_weak): Rewrite to use new weak symbols list structure. + + * c-pragma.h: New file to define the c-pragma.c interfaces. + * c-pragma.c: Include it. + * varasm.c: Include it. + * c-lex.c: Include it. + * cp/lex.c: Include it. + + * varasm.c (handle_pragma_weak): No longer pass output file + stream, since weak pragmas are delayed until the end of the + compilation. + * c-pragma.c (handle_pragma_token): Call handle_pragma_weak + without file stream argument. + + * Makefile.in (varasm.o, c-lex.o, c-pragma.o): Add dependencies on + c-pragma.h. + + * config/rs6000.md (movdf): If -msoft-float, do not generate + memory to memory references, like is already done for the + -mhard-float case. Remove an extra test for -mhard-float inside + of -mhard-float code. + +Tue Apr 18 06:19:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (size_int): Arg is unsigned HOST_WIDE_INT. + * tree.h (size_int): Likewise. + +Mon Apr 17 23:36:57 1995 Jason Merrill + + * rs6000/aix41.h: Restore March 11th changes, plus + (ASM_OUTPUT_EXTERNAL): Do add [DS] or [RW], just don't emit + anything. + * rs6000/aix3newas.h (ASM_OUTPUT_EXTERNAL): Ditto. + +Mon Apr 17 15:58:52 1995 Per Bothner + + * config/mips/x-iris (FIXPROTO_DEFINES): Add -D_LANGUAGE_C_PLUS_PLUS. + * config/mips/x-iris6: Likewise. + + * cpplib.c: Rename make_definition to cpp_define. + * cpplib.h (cpp_define): New declaration. + + * cpplib.c (special_symbol): For T_SPECLINE, calculate __LINE__ + in enclosing file buffer, not current buffer (if macro expanding). + (cpp_get_token): Fix thinko (in code for chopping unneeded space). + +Mon Apr 17 11:36:07 1995 Jim Wilson + + * abi64.h (CPP_SPECS): Define and use _ABI64 instead of + _MIPS_SIM_ABI64. + (SETUP_INCOMING_VARARGS): Set MEM_IN_STRUCT_P if big endian target. + * iris6.h (ASM_IDENTIFY_GCC, ASM_IDENTIFY_LANGUAGE): Define. + + * combine.c (get_last_value): Ignore BARRIER when scanning backwards. + (move_deaths): New variables before_dead and after_dead. Set them + to instructions that have valid INSN_CUID values and use in test. + + * combine.c (subst_prev_insn): New variable. + (try_combine): Set it. + (get_last_value): Use it. + + * reload.c (find_reloads): Recompute reg_equiv_address from + reg_equiv_memory_loc before using it. + (find_reloads_toplev, make_memloc): Likewise. + + * expr.c (expand_builtin, case BUILT_IN_MEMCPY): Call force_operand + on dest_rtx before returning it. + + * function.c (instantiate_decls): Use temporary allocation if + DECL_DEFER_OUTPUT is set. + +Sat Apr 15 23:19:03 1995 Jason Merrill + + * aoutos.h (ASM_OUTPUT_DEF): Define instead of SET_ASM_OP. + * sparc/sunos4.h (ASM_OUTPUT_DEF): Ditto. + + * varasm.c (weak_finish): Don't handle aliases. + (declare_weak): Ditto. + (assemble_alias): Handle aliases. + + * c-common.c (enum attrs): Add A_ALIAS. + (init_attributes): Ditto. + (decl_attributes): Ditto. + +Sat Apr 15 13:26:34 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * calls.c (expand_call): Call preserve_temp_slots on temps + made for BLKmode args returned in registers. + + * pa.c (override_options): Fix typo. + +Sat Apr 15 12:11:46 1995 Brendan Kehoe + + * alpha/alpha.c (output_epilog): Initialize fp_offset to 0, and + make sure it's non-zero before we try to use it to restore the + frame pointer. + +Fri Apr 14 19:45:05 1995 Jason Merrill + + * ginclude/va-{clipper,pa,pyr,sparc,spur}.h (va_arg): Reorganize + to avoid BIND_EXPRs and COND_EXPRs of aggregate type. + +Fri Apr 14 19:31:14 1995 Roland McGrath + + * config/svr4.h (ASM_OUTPUT_SECTION_NAME): Make the section + read-only executable "ax" if DECL is a FUNCTION_DECL; read-only + "a" (previously the case always) if DECL is TREE_READONLY; + otherwise writable "aw". + +Fri Apr 14 18:49:11 1995 Linus Torvalds + + * alpha.md (probe_stack): Probe with write, not read. + (allocate_stack): Update and correct stack probe code. + * alpha.c (output_prolog): Changed stack probe at function entry. + +Fri Apr 14 18:42:34 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * jump.c (delete_insn): When deleting after label, delete + a BARRIER as well. + +Fri Apr 14 14:40:48 1995 Jason Merrill + + * toplev.c (compile_file): Call weak_finish. + + * c-common.c (enum attrs): Add A_WEAK. + (init_attributes): Ditto. + (decl_attributes): Support __attribute__ ((weak)) by + calling declare_weak. + + * sparc/sunos4.h (HANDLE_PRAGMA_WEAK, WEAK_ASM_OP, SET_ASM_OP): + Define to support weak symbols with -fgnu-linker. + * aoutos.h: Ditto. + + * varasm.c (handle_pragma_weak): Add declared weak symbols to + weak_decls rather than emitting them immediately. + (declare_weak): Add the indicated declaration to weak_decls. + (weak_finish): Emit .weak directives for any weak symbols. + + * libgcc2.c: The C++ free-store management functions are weak. + +Fri Apr 14 13:00:29 1995 Michael Meissner (meissner@cygnus.com) + + * rs6000/rs6000.c (output_prolog): For eabi systems, emit main's + call to __eabi before setting up the minimal TOC used with the + -mrelocatable support. + + * rs6000/eabi.h (INVOKE__main): Don't define any more, + output_prolog will emit the call. + +Fri Apr 14 09:09:03 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * alpha.c (call_operand): Any reg is valid for NT. + (output_prologue): Never need GP for Windows/NT. + Set SYMBOL_REF_FLAG in current function decl. + +Thu Apr 13 20:19:30 1995 Jason Merrill + + * alpha/xm-alpha.h (HAVE_VPRINTF): Define. + (HAVE_PUTENV): Define. + (POSIX): Define. + +Thu Apr 13 19:57:44 1995 Doug Evans + + * emit-rtl.c (gen_sequence): If the insn has a non-null + CALL_INSN_FUNCTION_USAGE field, output it as a sequence so the + latter isn't discarded. + + * c-parse.in: Update expected conflict count. + +Thu Apr 13 08:10:20 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * configure.bat: Arg 2 is which machine (i386 or alpha). + * configure (alpha-*-winnt3*): New configuration. + * alpha.c: Don't #include stamp.h for WINNT. + (input_operand, case CONST): Allow ptr_mode and DImode. + * alpha.h (WINDOWS_NT): Provide default definition. + (ASM_OUTPUT_INT): Use output_addr_const. + (ASM_OUTPUT_ADDR_DIFF_ELT): Use .long for NT. + * alpha.md (calll, tablejump, movsi): New variants for NT. + * alpha/winnt.h, alpha/xm-winnt.h, alpha/x-winnt: New files. + * alpha/config-nt.bat, alpha/config-nt.sed: New files. + * i386/config-nt.bat: Add Ada fragments to Makefile. + * i386/config-nt.sed: Adjust for deletion of config.run in Makefile.in + Change version to 2.6.3. + Add some missing tabs. + * winnt/winnt.h (TARGET_MEM_FUNCTIONS): Define. + (LINK_SPEC): Delete "align:0x1000". + * winnt/xm-winnt.h (OBJECT_SUFFIX): Define. + * ginclude/stdarg.h, ginclude/varargs.h: Clean up code that + defines *DEFINED* symbols. + + * configure (a29k-*-sym1*): Same as a29k-*-bsd*. + * a29k.h (ASM_OUTPUT_SECTION_NAME): New macro. + +Wed Apr 12 14:36:03 1995 Jim Wilson + + * dbxout.c (dbxout_type_fields): Correct arguments to CHARS macro + in flag_minimal_debug case. + (dbxout_symbol_name): Use DECL_ASSEMBLER_NAME unconditionally. + * sdbout.c (sdbout_record_type_name): Correct indentation. + (sdbout_symbol): Use DECL_ASSEMBLER_NAME unconditionally. + (sdbout_one_type): Likewise. + +Tue Apr 11 13:24:13 1995 Per Bothner + + * fix-header.c (main): Fix loop over required_functions_list. + (fatal): Also print inc_filename. + + * cpplib.c (cpp_push_buffer): Added missing initializatuon of buf. + (cpp_file_buffer): Compare against CPP_NULL_BUFFER, not NULL. + (finclude): No longer call cpp_push_buffer - let callers do it. + (do_include): Add call to cpp_push_buffer. + (push_parse_file): Call cpp_push_buffer early, so initial + defines can use file and line from a valid cpp_buffer. + (nreverse_pending): New function. + (push_parse_file): Use nreverse_pending. + (push_parse_file): For -include files, just push them in reverse + order - we don't need to scan them now. + (cpp_error_from_errno, cpp_perror_with_name): Don't emit extra '\n'. + +Tue Apr 11 13:36:44 1995 Jim Wilson + + * configure (mips-dec-mach3): Add. + + * sh.c (shiftby_operand): Delete. + * sh.h (TARGET_SWITCHES): -m3 and -m3l also set SH2_BIT. + (OVERRIDE_OPTIONS): Don't add CPU_SH2 to CPU_SH3 when TARGET_SH3. + * sh.md (ashlsi3): Use nonmemory_operand as a predicate instead of + shiftby_operand. Don't use shiftby_operand in the output statement. + (lshrsi3): Likewise. + + * c-decl.c (poplevel): Do output inline function if + DECL_ABSTRACT_ORIGIN points to itself. + + * varasm.c (output_constant): Cast assemble_string argument to char *. + +Mon Apr 10 14:29:28 1995 Torbjorn Granlund + + * recog.c (constrain_operands, case 'E'): Make this work like + constraint character `F' when REAL_ARITHMETIC is defined. + * regclass.c (record_reg_classes, case 'E'): Likewise. + * reload.c (find_reloads, case 'E'): Likewise. + +Mon Apr 10 14:30:31 1995 Michael Meissner + + * rs6000/aix3newas.h, rs6000/aix41.h: Eliminate March 11th changes + to undefine ASM_OUTPUT_EXTERNAL{,_LIBCALL}, since this causes the + compiler not to bootstrap. + +Mon Apr 10 07:17:39 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cppalloc.c: #include config.h. + * cppexp.c: Add declarations of xmalloc and xrealloc. + (cpp_parse_expr): Cast args to bcopy to char *. + * cpphash.c: Add declaration of xmalloc. + * cpplib.c (init_parse_options, cpp_reader): Cast args to bcopy, + bcmp, and bzero to char *. + (add_import, push_parse_file, init_parse_file): Likewise. + + * c-common.c (enum attrs): New attribute, A_NOCOMMON. + (init_attribute): Initialize it. + (decl_attributes): Implement it. + * varasm.c (make_decl_rtl): Allow section attribute if -fno-common + or variable is not to be placed in common for some other reason. + + * combine.c (simplify_set): Don't move a SUBREG to dest if it + is changing the size of a hard reg in CLASS_CANNOT_CHANGE_SIZE. + + * reload.c (find_equiv_reg): If goal is a pseudo that got memory, + a store into memory makes it invalid. + * reload1.c (reload_as_needed): Call forget_old_reloads_1 on + pattern before reg elimination. + +Mon Apr 10 00:26:14 1995 Jeffrey A. Law + + * pa.c (pa_reorg): Bump label use count for each entry in an + exploded ADDR_VEC. + +Sun Apr 9 09:22:51 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * i386.md (adddi3, subdi3): Need scratch reg whenever operand 0 in + mem and operands 1 not '0'. + (subdi3): Don't treat two non-equal MEMs as non-aliasing. + +Sat Apr 8 22:53:38 1995 Jeffrey A. Law + + * pa.c (pa_reorg): Fix typo. + +Sat Apr 8 19:36:36 1995 Michael Meissner + + * rs6000/rs6000.h (SELECT_SECTION): TREE_CODE_CLASS must be called + with a tree code, not a tree value. + +Sat Apr 8 12:41:01 1995 Mike Stump + + * cpphash.c: Don't use const on compilers that don't support it. + +Sat Apr 8 16:32:22 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * expr.c (expand_increment): Handle case where INCREMENTED + has a non-trivial conversion. + +Fri Apr 7 19:33:21 1995 Phil Nelson (phil@cs.wwu.edu) + + * ns32k.h (TRAMPOLINE_TEMPLATE, TRANSFER_FROM_TRAMPOLINE): + Fix assembler syntax errors. + +Fri Apr 7 19:27:23 1995 Pat Rankin (rankin@eql.caltech.edu) + + * cccp.c (VMS_fstat, VMS_stat): New functions. + +Fri Apr 7 19:25:21 1995 Paul Eggert + + * cccp.c (collect_expansion): If traditional, set stringify + member to SHARP_TOKEN regardless of the value of + stringify_sharp_token_type. + +Fri Apr 7 07:48:35 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cse.c (simplify_unary_operation): #ifdef POINTERS_EXTEND_UNSIGNED, + handle sign- or zero-extending addresses. + + * optabs.c (init{,_integral,_floating,_complex}_libfuncs): + Change SUFFIX to "char" to avoid confusion with prototype. + + * explow.c (convert_memory_address): No longer static. + New arg, TO_MODE. + Do something special for SYMBOL_REF, LABEL_REF, and CONST. + (memory_address): Add extra arg to call to convert_memory_address. + * rtl.h (convert_memory_address): Add extra arg. + * expr.c (expand_expr, case ADDR_EXPR): Always call + convert_memory_address when converting; add extra arg. + * stmt.c (expand_computed_goto): Convert from ptr_mode to Pmode. + + * gcc.c (OBJECT_SUFFIX): Default now ".o", not "o". + (all specs): Remove "." before %O; use %O in a few missing cases. + * i386/os2.h (OBJECT_SUFFIX): Delete from here. + * i386/xm-os2.h (OBJECT_SUFFIX): Move to here; now has period. + + * Makefile.in (STAGESTUFF): Use $(exeext) for executables. + +Fri Apr 7 03:32:29 1995 Richard Stallman + + * config.sub: Accept -lites* as op sys. + +Thu Apr 6 23:08:50 1995 Per Bothner + + * cpplib.c (bcopy, bzero, bcmp): Remove #undefs. + * cppalloc.c (xcalloc): Re-implement using calloc, + rather than malloc+bzero. + * cpplib.c (SELF_DIR_DUMMY): New macro. + (do_include): Don't pass searchptr to finclude if it is dsp, + since that is on the stack, and would cause a dangling pointer. + If handling #include_next, recognize SELF_DIR_DUMMY. + +Fri Apr 7 00:54:24 1995 Jeffrey A. Law + + * pa.h (MACHINE_DEPENDENT_REORG): Define. + * pa.md (switch_jump): New pattern for jumps which implement + a switch table. + * pa.c (pa_reorg): New function to explode jump tables. + (pa_adjust_insn_length): Account for jumps in switch tables with + unfilled delay slots. + +Thu Apr 6 14:31:10 1995 Jason Merrill + + * c-typeck.c (build_binary_op): Don't call common_type for + uncommon pointer types. + +Wed Apr 5 13:53:17 1995 Per Bothner + + Re-write fixproto/fix-header/etc to use cpplib: + * fix-header.c: Comment out support for adding missing extern "C" + using #ifdef ADD_MISSING_EXTERN_C instead of #if 0. + * fixproto: Removed case of required functions. Instead use ... + * fix-header.c (std_include_table): ... new required-functions table. + (cpp_file_line_for_message, cpp_print_containing_files, cpp_message): + New stub functions, to intercept cpplib error message. + * fixproto: Don't call $CPP, since fix-header now incorporates cpplib. + * gen-protos.c (fatal, hashf): New functions. + (main): Use hashf, instead of hash. + * scan-decls.c (scan_decls, skip_to_closing_brace): Re-write to + take a cpp_reader* as argument, not a FILE*. + * scan.h (hash): Make parameter const. + * scan.c (hash): Removed. + * scan.c (memory_full, xmalloc, xrealloc): Removed. + Use functions from cppalloc.c instead. + * Makefile.in (gen-prtos, fix-header, stmp-fixproto): Update. + +Wed Apr 5 13:24:14 1995 Per Bothner + + * cpplib.c (cpp_get_token): If traditional, return after comment, + instead of reading more, so end-of-line can be peeked at. + * cpperror.c (cpp_file_line_for_message, cpp_message): New + functions, that do the actual printing of error messages. + (cpp_print_file_and_line, cpp_error, cpp_warning, cpp_pedwarn, + cpp_error_with_line, cpp_warning_with_line, cpp_pedwarn_with_line, + cpp_pedwarn_with_file_and_line, cpp_error_from_errno, my_strerror, + cpp_perror_with_name): Re-write to use cpp_file_line_for_message + and cpp_message, and move to cpplib.c. + +Tue Apr 4 23:35:49 1995 Roland McGrath + + * config/gnu.h (GNU_CPP_PREDEFINES): Remove -D__HURD__. + +Tue Apr 4 17:15:54 1995 Jeffrey A. Law + + * pa.h (DO_GLOBAL_DTORS_BODY): Fix pointer -> integer assignment + problem. + + * reorg.c (fill_simple_delay_slots): Don't use a JUMP_INSN + a the target of another JUMP_INSN to fill a delay slot. + +Mon Apr 3 19:03:48 1995 Torbjorn Granlund + + * cse.c (simplify_unary_operation): Sign-extend constants when + they have the most significant bit set for the target. + + * m68k.md (umulsi3_highpart): Test for CONST_INT and CONST_DOUBLE, + not CONSTANT_P. + (smulsi3_highpart): Likewise. + * m68k.c (const_uint32_operand): New function. + (const_sint32_operand): New function. + * m68k.md (const_umulsi3_highpart): Use const_uint32_operand instead + of immediate_operand for op3. Delete mode. + (const_smulsi3_highpart): Analogous change. + +Mon Apr 3 19:03:48 1995 Jim Wilson + + * cse.c (simplify_binary_operation): Sign-extend constants when + they have the most significant bit set for the target. + + * combine.c (force_to_mode, case PLUS): Sign extend masks that are + negative in OP_MODE. + (simplify_and_const_int): Sign-extend constants when they have the + most significant bit set for the target. + (merge_outer_ops): Likewise. + (simplify_shift_const): Likewise. + +Mon Apr 3 18:23:48 1995 Jason Merrill + + * toplev.c (lang_options): Add -f{no-,}repo. + +Mon Apr 3 18:13:15 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (nonzero_bits, case REG): Check POINTERS_EXTEND_UNSIGNED. + (num_sign_bit_copies, case REG): Likewise. + * explow.c (convert_memory_address): New function. + (memory_address): Call if it needed. + (promote_mode, case POINTER_TYPE): Use Pmode and pointer extension. + (allocate_dynamic_stack_space): Convert size from ptr_mode. + * expr.c (clear_storage, expand_assignment, store_{expr,constructor}): + Use ptr_mode instead of Pmode in some places. + (expand_expr, expand_builtin): Likewise. + (push_block, store_expr): Convert size to Pmode. + (expand_expr, case ADDR_EXPR): Convert from Pmode to ptr_mode. + +Mon Apr 3 18:00:52 1995 Jim Wilson + + * explow.c (allocate_dynamic_stack_space): Correct typo in last + change. + + * sh.c (gen_shifty_op, case ASHIFTRT): Return 0 if shift count is not + a constant. + +Mon Apr 3 12:17:10 1995 Michael Meissner (meissner@cygnus.com) + + * expmed.c (extract_bit_field): When converting a SUBREG into a + REG, if the system is big endian, adjust the bit offset + appropriately. + +Mon Apr 3 00:08:45 1995 Roland McGrath + + * config/i386/linux.h: Include "config/linux.h" instead of + "linux.h", to avoid recursion. + +Sun Apr 2 23:50:27 1995 Roland McGrath + + * config/i386/gnuelf.h: Include i386/linux.h instead of + i386/linuxelf.h. + +Sun Apr 2 17:35:10 1995 Jim Wilson + + * cse.c (simplify_relational_operation): Don't simplify A-B for + compare of A and B when the compare is unsigned. + +Sun Apr 2 08:23:38 1995 Paul Eggert + + * fixincludes (stdio.h): BSDI 2.0 changed the spelling of _VA_LIST_ + to _BSD_VA_LIST_. + +Sun Apr 2 07:57:28 1995 Richard Kenner + + * i386/xm-bsd386.h: New file. + * configure (i[345]86-*-bsd*): Add xm_file. + + * gcc.c (default_compilers): Pass -W and -w to gnat1. + + * winnt/winnt.h (STDC_VALUE): Add #undef. + * i386/winnt.h (LIB_SPEC): Likewise. + +Sun Apr 2 07:55:25 1995 Douglas Rupp (drupp@cs.washington.edu) + + * i386/winnt.h (RETURN_POPS_ARGS, ENCODE_SECTION_INFO): Call + chain_member_purpose, not chain_member_value. + (ASM_FILE_START, LIB_SPEC): Move to here. + * winnt/winnt.h (ASM_FILE_START, LIB_SPEC): Delete from here. + * tree.c (chain_member_purpose): New function. + +Sat Apr 1 12:19:14 1995 Jason Merrill + + * c-typeck.c (build_binary_op): New variable build_type controls + type given to expression when created. Set to integer_type_node for + comparison ops instead of result_type so result_type still holds type + in which comparison is done. When checking for comparison between + signed and unsigned, use result_type rather than (possibly shortened) + type of op0. Don't warn about equality comparison of signed operand + to unsigned constant that fits in signed type. + +Sat Apr 1 09:47:02 1995 Douglas Rupp (drupp@cs.washington.edu) + + * i386/winnt.h (CPP_PREDEFINES): Add definitions for __stdcall + and __cdecl. + * winnt/winnt.h (LIB_SPEC): Add OLDNAMES.LIB. + * winnt/xm-winnt.h: Remove unneeded #define's for non-ANSI functions. + * fixinc.winnt: Remove unneeded fixes relating to __stdcall. + + * objc/Makefile (SHELL): New definition. + +Sat Apr 1 08:25:26 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * cse.c (cse_insn): When emitting a BARRIER, don't put it after + a deleted insn. + + * reload.c (push_reload): Initialize secondary_{in,out}_icode. + + * gcc.c (print_multilib_info): Don't use LAST_PATH if not set. + +Sat Apr 1 08:15:59 1995 Pat Rankin (rankin@eql.caltech.edu) + + * vax.md (extv, extzv): Don't use immediate value for operand 1. + +Sat Apr 1 07:48:29 1995 Yury Shevchuk (sizif@botik.yaroslavl.su) + + * stmt.c (expand_asm_operands): Properly ignore invalid reg in clobber. + +Sat Apr 1 07:02:24 1995 Paul Eggert + + * cccp.c: General code cleanup. + Add prototypes for static functions. + Remove unnecessary casts to (char *); add casts to (U_CHAR *). + Add parentheses suggested by `gcc -Wparentheses'. + Rename local variables as suggested by `gcc -Wshadow'. + , , , : New includes. + , : Include only if defined(RLIMIT_STACK). + : Include, unless already does. + (HAVE_FCNTL_H, HAVE_STDLIB_H, HAVE_SYS_TIME_H): New symbols. + (HAVE_UNISTD_H, STDC_HEADERS, TIME_WITH_SYS_TIME): Likewise. + (__attribute__, PROTO, VA_START, PRINTF_ALIST, PRINTF_DCL): New macros. + (PRINTF_PROTO{,_1,_2,_3}, DO_PROTO): Likewise. + (bcopy, bzero, bcmp): If #defined by configuration file, use that. + If STDC_HEADERS is defined, use standard C functions. + If BSTRING is defined, or USG and VMS are not defined, use + the C library. Otherwise, use my_bcopy, my_bzero, my_bcmp. + (localtime): Remove no-longer-necessary explicit declaration. + (getenv, index, rindex): Don't declare explicitly if the + appropriate system header should declare it. + (fdopen): Remove no-longer-used declaration. + (vprintf): Define a subsitute macro if !defined(HAVE_VPRINTF). + (main): Replace `fdopen (dup (fileno (stdout)), "w"))' + with `stdout'. + (get_lintcmd, rescan, create_definition): Use bcmp instead of strncmp + when both operands are known to be free of null bytes. + (check_macro_name, compare_defs, collect_expansion): Likewise. + (do_assert, compare_token_lists, assertion_lookup, do_line): Likewise. + (skip_if_group, lookup): Likewise. + (rescan): Remove unused label `startagain'. + Abort instead of printing nonsense if the stack is corrupted + when there was an unterminated successful conditional. + (pcfinclude): Include explicit double-cast through GENERICPTR + to identify particularly egregious type puns. + (create_definition, do_define, check_macro_name): Use %.*s + printf format to avoid painful copying-and-casting. + (do_once): Return void, not (unused) int. + (do_ident, do_pragma, do_sccs): Accept extra arguments so that + all directive-handler's types match. + (do_sccs): Define only if SCCS_DIRECTIVE is defined. + (skip_if_group, dump_single_macro): Add `default: break;' to + keep -Wswitch happy. + (error, warning, error_with_line, vwarning_with_line, pedwarn): Use + stdarg/vararg/vfprintf instead of passing bogus char * args around. + (pedwarn_with_line, pedwarn_with_file_and_line, fatal): Likewise. + (verror, vwarning, verror_with_line, vwarning_with_line): New fcns. + (dump_single_macro): Abort if ap points to garbage. + (make_definition, make_undef, make_assertion): Parameter now char *. + (xmalloc, xrealloc, xcalloc, savestring, index0): Make sizes size_t + instead of unsigned; make pointer parameters GENERICPTR, not char *. + (xcalloc): Use bzero to clear memory instead of using own loop. + +Fri Mar 31 08:33:07 1995 Ken Raeburn (raeburn@wombat.gnu.ai.mit.edu) + + * longlong.h (umul_ppmm mc68000): Use %# instead of #. + +Fri Mar 31 06:37:54 1995 Michael Meissner (meissner@cygnus.com) + + * stor-layout.c (layout_decl): Implment -fpack-struct. + (layout_record): Ditto. + + * flags.h (flag_pack_struct): New flag variable. + + * toplev.c (flag_pack_struct): New flag variable. + (f_options): Add -fpack-struct support. + + * Makefile.in (stor-layout.o): Add flags.h dependency. + +Fri Mar 31 08:40:16 1995 Douglas Rupp (drupp@cs.washington.edu) + + * configure (i[345]86-*-winnt3*): Add tmake_file. + * i386/x-winnt (winnt.o): Deleted. + * i386/t-winnt: New file. + +Fri Mar 31 07:26:37 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * m68k/netbsd.h, m68k/hp3bsd44.h: Remove #include of machine/ansi.h. + + * configure (a29k-*-bsd): Set tmake_file to t-libc-ok. + + * stmt.c (expand_asm_operands): Properly handle output that can't + be directly written into. + + * c-parse.in (structsp): Correct error in last change. + * c-common.c (init_attributes): A_FORMAT is only for decls. + +Thu Mar 30 18:27:34 1995 Jason Merrill + + * libgcc2.c: Remove explicit 0-initializations of static variables. + +Thu Mar 30 18:22:39 1995 Fergus Henderson + + * c-typeck.c (internal_build_compound_expr): Warn if LHS of comma + expression has no side effects, or computes value which is not used. + * stmt.c (make warn_if_unused_value): No longer static. + * tree.h (warn_if_unused_value): Add declaration. + +Thu Mar 30 18:15:11 1995 Jim Wilson + + * combine.c (get_last_value): Revert back to use prev_nonnote_insn + instead of prev_real_insn. Modify test that ignores USE insns. + + * rs6000.h (SELECT_SECTION): Apply constant DECL_INITIAL test + only to DECLs. + + * explow.c (allocate_dynamic_stack_space): Test STACK_BOUNDARY against + BIGGEST_ALIGNMENT at run time instead of at compile time. + Give MUST_ALIGN macro a value, and test this value in if statements. + +Thu Mar 30 08:59:56 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-parse.in: Now have 27 shift/reduce conflicts. + (attribute_list): Just make chain of all attributes. + (attrib): Consistently put name as PURPOSE, args, if any, as VALUE. + (structsp): Allow attributes on any struct or union. + * c-common.c (enum attrs): New enum class. + (attrtab, attrtab_idx): New variables. + (add_attribute, init_attributes): New functions. + (decl_attributes): Major rewrite. + * tree.c (valid_machine_attribute): Now receive name and args. + +Thu Mar 30 07:20:14 1995 Paul Eggert + + * protoize.c: Use the phrase `preprocessing directive' consistently. + * cccp.c (handle_directive, do_line, skip_if_group): Likewise. + (output_line_directive): Renamed from output_line_command. + (no_line_directives): Renamed from no_line_commands. + + * cccp.c (rescan): Don't recognize preprocessing directives + within macro args. Warn if one is found. + +Thu Mar 30 06:20:36 1995 H.J. Lu (hjl@nynexst.com) + + * configure (i[345]86-*-linux*): Set xmake_file=x-linux, + tm_file=i386/linux.h, and don't set extra_parts. + (i[345]86-*-linux*aout*): New configuration. + (i[345]86-*-linuxelf): Deleted. + * config/linux{,-aout}.h, config/x-linux, config/xm-linux.h: New files. + * config/i386/linux-aout.h: New file. + * config/i386/linux.h: Extensive modifications to use ELF format + as default. + (LIB_SPEC): Don't use libc_p.a for -p. don't use libg.a + unless for -ggdb. + (LINUX_DEFAULT_ELF): Defined. + * config/i386/linuxelf.h,config/i386/x-linux: Files deleted. + * config/i386/xm-linux.h: Just include xm-i386.h and xm-linux.h. + +Wed Mar 29 19:09:36 1995 Mike Stump + + * libgcc2.c (__throw_type_match): Update to use new calling convention. + +Wed Mar 29 14:53:23 1995 Jim Wilson + + * gcc.c (process_command): Delete code modifying gcc_exec_prefix. + (main): Put it here after last use of gcc_exec_prefix. For cross + compiler, set startfile_prefixes if gcc_exec_prefix is set and + standard_startfile_prefix is a relative path. + + * combine.c (make_compound_operation, AND case): Undo July 7, 1994 + change. + + * mips/mips.md (call_internal1, call_value_internal1): Move %* from + start of assembler output to immediately before the jal. + + * mips/mips.c (function_prologue): Put SDB_DEBUGGING_INFO ifdef around + code for SDB_DEBUG support. + (mips_select_rtx_section, mips_select_section): Change rdata_section + to READONLY_DATA_SECTION and sdata_section to SMALL_DATA_SECTION. + * mips/mips.h (SMALL_DATA_SECTION): Define. + + * reorg.c (mark_referenced_resources): Make setjmp use all registers. + + * flow.c (mark_used_regs, case SUBREG): Only fall through to REG case + if operand is a REG. + + * i960/i960.h (TARGET_SWITCHES): Make -mold-align set + TARGET_FLAG_STRICT_ALIGN. + (STRICT_ALIGNMENT): Test TARGET_STRICT_ALIGN. + + * sh/sh.c (andcosts): Modify costs to match the hardware, and add + explanatory comments. + + * sparc/sol2.h (CPP_PREDEFINES): Add -D__SVR4. + +Wed Mar 29 14:30:30 1995 Michael Meissner + + * rs6000/rs6000.md (movsf): When moving to/from integer registers, + don't move floating point to memory if it is being simulated with + -msoft-float. + +Wed Mar 29 06:47:36 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-parse.in (initdcl): Only call decl_attributes once. + * c-common.c (decl_attributes): Clean up test for __mode__. + +Tue Mar 28 08:34:37 1995 John Hassey (hassey@dg-rtp.dg.com) + + * i386.md (adddi3): Don't treat two non-equal MEMs as non-aliasing. + +Tue Mar 28 08:20:49 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * a29k.h (CONSTANT_ADDRESS_P): Provide consistent definition. + +Tue Mar 28 07:26:41 1995 Paul Eggert + + * cccp.c (do_xifdef, do_endif): Remove unnecessary pointer comparisons. + +Mon Mar 27 20:45:15 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * calls.c (expand_call, store_one_arg): Don't set KEEP in calls + to assign_stack_temp. + * function.c (preserve_temp_slots): Clear ADDR_TAKEN on item + that we are preserving. + +Mon Mar 27 14:39:35 1995 Ian Lance Taylor + + * mips/mips.h (FIRST_PSEUDO_REGISTER): Increment. + (FIXED_REGISTERS, CALL_USED_REGISTERS): Add new register. + (MD_REG_LAST): Increment. + (ST_REG_FIRST, ST_REG_LAST): Increment. + (HILO_REGNUM): Define. + (enum reg_class): Add HILO_REG. + (REG_CLASS_NAMES): Add "HILO_REG". + (REG_CLASS_CONTENTS): Add HILO_REG initializer, and adjust ST_REGS + and ALL_REGS initializers. + (SECONDARY_RELOAD_CLASS): Remove. + (SECONDARY_INPUT_RELOAD_CLASS): Define. + (SECONDARY_OUTPUT_RELOAD_CLASS): Define. + (REGISTER_MOVE_COST): Treat HILO_REG as MD_REGS. + (REGISTER_NAMES): Add initialization line. + (DEBUG_REGISTER_NAMES): Add "accum". + * mips/mips.md: For each instruction which sets HI or LO, clobber + HILO_REGNUM with (clobber (match_scratch:MODE N "=a")). Change + each explicit reference to register 66 to register 67. + (mulsidi3): Change to define_expand. + (mulsidi3_internal): New name of old mulsidi3. + (mulsidi3_64bit): New insn. + (umulsidi3): Change to define_expand. + (umulsidi3_internal): New name of old umulsidi3. + (umulsidi3_64bit): New insn. + (madddi_64bit, umaddi_64bit): New insns. + (movdi_internal2): Add case for setting HILO_REG to zero. + (reload_indi, reload_outdi): New define_expands. + (movsi_internal1, movsi_internal2): Add cases for setting MD_REGS + to zero, and for setting a general reg to HILO_REG. + (reload_outsi): New define_expand. + * mips/mips.c (mips_reg_names): Add "accum". + (mips_sw_reg_names): Likewise. + (mips_regno_to_class): Map HILO_REGNUM to HILO_REG. + (mips_move_1word): Handle moving HILO_REGNUM to a general + register. Make sure that the normal MD_REG cases aren't used for + HILO_REGNUM. Handle moving zero to a MD_REG. + (mips_move_2words): Make sure that the normal MD_REG cases aren't + used for HILO_REGNUM. Handle moving zero to a MD_REG. + (override_options): Set mips_char_to_class for 'a' and 'b'. + (mips_secondary_reload_class): Add in_p argument. Handle + HILO_REGNUM. + +Mon Mar 27 07:16:05 1995 Warner Losh + + * gcc.c: Removed __NetBSD__ from conditional. + Declare strerror if HAVE_STRERROR is defined; otherwise + declare sys_errlist and sys_nerr. + (my_strerror): New function. + +Fri Mar 24 18:08:14 1995 Jason Merrill + + * i386/linux.h (LIB_SPEC): Don't try to link with libraries we + know only exist in archive form unless -static. + +Fri Mar 24 16:12:16 1995 Doug Evans + + * Makefile.in (multilib.h): Depend on Makefile, not config.status. + +Fri Mar 24 15:01:17 1995 Michael Meissner + + * rs6000/rs6000.h (TARGET_MULTIPLE_SET): New target_flags bit that + indicates -mmultiple or -mno-multiple was explicitly passed by the + user, and not set as part of the cpu defaults. + (TARGET_SWITCHES): Set TARGET_MULTIPLE_SET bit for both -mmultiple + and -mno-multiple. + + * rs6000/rs6000.c (rs6000_override_options): If -mmultiple or + -mno-multiple was explicitly used, don't override the setting with + the processor default. + +Wed Mar 22 21:42:13 1995 Doug Evans + + * i960/i960.c (i960_function_arg_advance): Ensure all regs marked + as used if stack is also used (for va_start). + (i960_setup_incoming_varargs): Rewrite to be similar to Intel's + version, but don't allocate reg block unless necessary. + * ginclude/va-i960.h (varargs va_start): Save g14 explicitly. + Account for arguments preceding va_alist. + +Wed Mar 22 13:24:55 1995 Torbjorn Granlund + + * pa.c (singlemove_string): Handle SFmode constants again. Simplify. + (zdepi_cint_p): Make some variables HOST_WIDE_INT. + (lhs_lshift_cint_operand): Likewise. + (output_and): Likewise. + (output_ior): Likewise. + +Wed Mar 22 12:40:09 1995 Jim Wilson + + * sh.md (udivsi3): Don't clobber register 6. + (udivsi3, divsi3, mulsi3_call): Use a pseudo-reg with regclass 'z' + for output rather than hard register 0. + (block_move_real): Don't clobber registers 4 and 5. + + * mips.c (mips_select_section): Apply constant DEC_INITIAL tests + only to VAR_DECLs. + +Wed Mar 22 03:53:17 1995 Richard Stallman + + * config.sub (rm400, rm600): New machine names. + (sinix5.*, sinix): New os aliases. + (mips-siemens): Default os to sysv4. + +Mon Mar 20 21:56:47 1995 Per Bothner + + Merged Paul Eggert's patch to cccp.c of Wed Mar 8 18:21:51 1995: + * cpplib.c (do_include): Fix type typo: pcfbuflimit is char *, not int. + + Merged Doug Evans' patch to cccp.c of Mon Feb 27 17:06:47 1995: + * cpplib.c (do_include): Check for redundant file before opening in + relative path case. Don't call fstat unnecessarily. + + Merged J.T. Conklin's patch to cccp.c of Wed Feb 22 20:29:31 1995: + * cpperror.c: Removed __NetBSD__ from conditional. + + Merged Kenner's patch to cccp.c & cexp.y of Tue Sep 20 17:49:47 1994: + * cppexp.c (struct operation): Make value by HOST_WIDE_INT. + (cpp_parse_expr): Change return type to HOST_WIDE_INT. + * cpplib (eval_if_expr): Likewise. + (do_if, do_elif): Update appropriately. + * cpplib.h (cpp_parse_expr): Removed, to avoid defining HOST_WIDE_INT. + + Merged Paul Eggert's patch to cccp.c of Mon Aug 8 19:42:09 1994: + * cpplib.c (create_definition): Warn about `#define a@', since a + diagnostic is now required (see ISO TC1's addition to subclause 6.8). + Also warn about `#define is-empty(x) (!x)'. + +Tue Mar 21 00:10:50 1995 Jeffrey A. Law + + * x-pa (CC): Add "-Dbsd4_4". + +Mon Mar 20 18:40:31 1995 Per Bothner + + * toplev.c (print_error_function): New function hook. + (default_print_error_function): New function. Default value + of print_error_function. Code moved here from report_error_function. + (report_error_function): Use print_error_function hook. + +Mon Mar 20 20:27:43 1995 Doug Evans + + * cccp.c (do_xifdef): Handle c++ comments. + (do_endif): Likewise. + +Mon Mar 20 15:31:45 1995 Jason Merrill + + * configure (i386 configurations): Prepend i386/ to t-crt*. + +Mon Mar 20 07:58:04 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * stmt.c (fixup_gotos): Add missing call from last change. + + * objc/misc.c: Put Alpha-specific decls before #include of runtime.h. + + * alpha.h (EXTRA_SECTIONS): Write zeros first time in .rdata. + +Sat Mar 18 16:37:24 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * flow.c (mark_used_regs, case SUBREG): Set reg_changes_size even + for integer modes. + (mark_used_regs): Set reg_changes_size for RHS, if necessary. + * combine.c (gen_lowpart_for_combine): Set reg_changes_size, if needed. + * reload.c (push_reload): Reload a SUBREG if paradoxical and + class is CLASS_CANNOT_CHANGE_SIZE. + * reload1.c (gen_reload): Handle paradoxical SUBREGs. + * alpha.h (SECONDARY_{INPUT,OUTPUT}_RELOAD_CLASS): Need GENERAL_REGS + for paradoxical SUBREG and FLOAT_REGS. + (SECONDARY_NEEDED_MODE): Use actual mode for 4 bytes or wider. + * alpha.md (movsi): Allow FP regs and add case for store of FP reg. + Remove cvtlq from MEM to FP reg case. + + * rtl.h (emit_insns_after): Add declaration. + * stmt.c (fixup_gotos): Do a cleanup for a block when it is exited + even if label if not defined yet. + + * function.c (pop_function_context): Fix error in last change; + reference old value of current_function_decl before we modify it. + +Fri Mar 17 21:57:44 1995 Jason Merrill + + * toplev.c (rest_of_compilation): Handle -Wreturn-type properly + for inlines we aren't compiling yet. + +Fri Mar 17 21:26:48 1995 Mike Stump + + * libgcc2.c (__register_exceptions): Handle empty tables. + +Fri Mar 17 11:48:31 1995 Douglas Rupp (drupp@cs.washington.edu) + + * i386/winnt.c (winnt_function_prologue): Deleted. + (gen_stdcall_suffix): New function. + +Thu Mar 16 17:36:52 1995 Jason Merrill + + * svr4.h (LINK_SPEC): If the user did not specify -h name, use the + output file name, if any. + * sparc/sol2.h (LINK_SPEC): Ditto. Also, if the user did not + specify -R path, add an -R for each -L. + + Move SunOS 4-specific assembler switches into the appropriate place. + * m68k/sun[23].h (ASM_SPEC): Add %{R} %{j} %{J} %{h} %{d2} + %{keep-local-as-symbols:-L}. + * i386/sun.h (ASM_SPEC): Add %{R} %{keep-local-as-symbols:-L}. + * sparc/sparc.h (ASM_SPEC): Ditto. + * gcc.c (default_compilers): Remove %{R} %{j} %{J} %{h} %{d2} + %{keep-local-as-symbols:-L} from assembler rules. + +Thu Mar 16 16:58:09 1995 Michael Meissner + + * rs6000/eabi-ctors.c: New file, handle C++ static constructors + and destructors without requiring anything else from a libc. + + * rs6000/t-eabi (LIB2FUNCS_EXTRA): Build eabi-ctors.c. + + * rs6000/eabi.asm: Do not load up register 2 if there is no .got + section. Jump to the __do_global_ctors function at the end of + processing to call C++ static constructors, and it will return to + __eabi's caller. Use normal volatile registers, instead of saving + and restoring registers 30 and 31. + + * rs6000/eabi.h (STARTFILE_SPEC): Define as null. + (LIB_SPEC): Ditto. + (ENDFILE_SPEC): Ditto. + (LIBGCC_SPEC): Always look for libgcc.a. + +Thu Mar 16 17:05:14 1995 Richard Kenner + + * stmt.c (warn_if_unused_value, case SAVE_EXPR): New case. + (warn_if_unused_value, case NOP_EXPR): OK if CALL_EXPR inside. + + * c-common.c (decl_attributes): Allow alignment for TYPE_DECLs. + + * Makefile.in (xsys-protos.h): Fix typo in -U operand. + +Thu Mar 16 13:49:10 1995 Per Bothner + + * cpplib.c, cpplib.h: New files - a C PreProcessor library. + * cpphash.c, cpphash.h, cppalloc.c, cpperror.c, cppexp.c: + New files - utility features used by cpplib. + * cppmain.c: New file - cpp replacement main program for cpplib. + * Makefile.in: New rules to build cppmain. + +Thu Mar 16 16:11:05 1995 Douglas Rupp (drupp@cs.washington.edu) + + * i386/winnt.h (FUNCTION_PROLOGUE, HAVE_probe, gen_probe): Deleted. + (ENCODE_SECTION_INFO, VALID_MACHINE_DECL_ATTRIBUTE): New macro. + +Thu Mar 16 15:58:24 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (apply_distributive_law, case SUBREG): Fix typo when + checking for paradoxical SUBREG. + +Wed Mar 15 18:45:08 1995 Doug Evans + + * libgcc1-test.c: Renamed from cross-test.c. + * Makefile.in (LIBGCC1_TEST): Renamed from CROSS_TEST. + (all.cross): Delete $(ENQUIRE) dependency. + (libgcc1-test): Renamed from cross-test. + Delete unnecessary gcc-cross and $(LIBGCC) dependencies. + Link with -nostartfiles -nostdlib + `$(GCC_FOR_TARGET) --print-libgcc-file-name`. + (libgcc1-test.o): Renamed from cross-test.o. + Change gcc-cross dependency to xgcc since the latter is used. + +Wed Mar 15 13:49:21 1995 Jason Merrill + + * tree.c (save_tree_status): Now takes a tree 'context' instead of + a boolean 'toplevel' as an argument. If 'context' is not + current_function_decl, create a new obstack for the new function. + Also save inline_obstacks. + (restore_tree_status): No longer takes a second argument. Also + restore inline_obstacks. + (temporary_allocation): Clear inline_obstacks. + (permanent_allocation): Free up the obstacks in inline_obstacks. + + * function.h (struct function): New fields contains_functions and + inline_obstacks. + + * function.c (push_function_context_to): Now takes a tree + 'context' instead of a boolean 'toplevel' as an argument. + Also save current_function_contains_functions. + (push_function_context): Pass current_function_decl to it. + (pop_function_context_from): Takes 'context' instead of 'toplevel'. + Set current_function_contains_functions properly. + (pop_function_context): Pass current_function_decl to it. + +Wed Mar 15 14:53:09 1995 Michael Meissner + + * rs6000/rs6000.md (abssi2): Turn into a define_expand. If + TARGET_POWER, do old code that uses the abs instruction. If not, + do abs in three instructions, using a temporary register, which + enables generating more reasonable code for sne. Add a recognizer + for negative of the absolute value. Add define_splits for the + PowerPC. + (sne insn): Add a recognizer for sne on the PowerPc to use two + instructions, compared to the four generated using the absolute + value insn. + +Tue Mar 14 18:38:40 1995 J.T. Conklin + + * m68k.md ({add,sub,mul,div}[sdx]f3): Add new patterns for recognizing + SImode, HImode, and QImode operands. + +Mon Mar 13 18:59:36 EST 1995 David Edelsohn + + * rs6000.h (CPP_SPEC): Add PPC403. + (processor_type): Add PPC403. + (RTX_COSTS): Add PPC403. + * powerpc.h (CPP_SPEC): Add PPC403. + * sysv4.h (CPP_SPEC): Add PPC403. + * rs6000.c (processor_target_table): Add PPC403. + * rs6000.md (define_attr cpu and function units): Add PPC403. + +Mon Mar 13 14:40:23 1995 Michael Meissner + + * rs6000/rs6000.md (call, call_value insns): Do not put a nop + after a bl instruction on System V.4 and eABI. + + * rs6000/sysv.4 (SUBTARGET_SWITCHES): Add support for + -mno-traceback to suppress the V.4 traceback word. + (ASM_DECLARE_FUNCTION_NAME): Don't put out a traceback work if + -mno-traceback. + +Mon Mar 13 13:36:37 1995 Jason Merrill + + * t-svr4, i386/t-{crtpic,sol2}, m88k/t-svr4, sparc/t-sol2: + Use -fPIC, rather than -fpic, for building crtstuff. + +Sat Mar 11 17:27:08 1995 Jason Merrill + + * configure: Use aix3newas.h for AIX 3.2.4 and 5. + * rs6000/aix41.h: Undefine ASM_OUTPUT_EXTERNAL{,_LIBCALL}. + * rs6000/aix3newas.h: New file. Define ASM_SPEC to -u, and + undefine ASM_OUTPUT_EXTERNAL{,_LIBCALL}. + +Sat Mar 11 06:42:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * dbxout.c (dbxout_symbol): Properly handle decl whose DECL_NAME + points to a TYPE_DECL with a zero TYPE_NAME. + +Fri Mar 10 18:18:33 1995 Torbjorn Granlund + + * pa.h (PROMOTE_MODE): Define. + +Fri Mar 10 14:37:58 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * sdbout.c (sdbout_record_type_name): If TYPE_NAME is + a TYPE_DECL, get name from DECL_NAME. + +Fri Mar 10 14:09:26 1995 Doug Evans + + * arm/riscix.h (SUBTARGET_SWITCHES): Renamed from + ARM_EXTRA_TARGET_SWITCHES. + * arm/riscix1-1.h (SUBTARGET_SWITCHES): Likewise. + * arm.h (SUBTARGET_SWITCHES): Likewise. + (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define. + (TARGET_SWITCHES): Add -msoft-float, -mhard-float. + (BYTES_BIG_ENDIAN): Delete #ifndef/#endif. + (CONDITIONAL_REGISTER_USAGE): If -msoft-float, disable fp regs. + (FUNCTION_VALUE): R16 is return reg only if !-msoft-float. + (LIBCALL_VALUE): Likewise. + * arm.md (all fp patterns): Conditionalize on TARGET_HARD_FLOAT. + (*movsf_soft_insn, *movdf_soft_insn): New patterns. + +Fri Mar 10 13:53:46 1995 Jim Wilson + + * reorg.c (steal_delay_list_from_target): Exit at the top if the + branch in SEQ is not a single set. + + * sh.md (movdi define_split, movdf define_split): Correct indentation + and formatting. Make the condition fail if an operand is a MEM + with an auto-inc address. + + * varasm.c (copy_constant): Copy operand of ADDR_EXPR if it is a + constant. + + * mips/abi64.h (SETUP_INCOMING_VARARGS): Correct arguments to + move_block_from_reg call. + + * expr.c (expand_assignment): When offset is zero, make new MEM + before setting MEM_VOLATILE_P. + + * reload.c (find_reloads, case 'o'): Accept a fully reloaded + auto-increment address. + + * combine.c (max_uid_cuid): New static variable. + (INSN_CUID): Call abort if INSN is out of range. + (combine_instructions): Set max_uid_cuid. Set uid_cuid directly + instead of through INSN_CUID. + (get_last_value): Use prev_real_insn instead of prev_nonnote_insn. + Ignore USE insns generated by combine. + +Fri Mar 10 13:47:08 1995 Rod Barman + + * m68k/fpgnulib.c (__fixdfsi): Catch values < 0.5 in magnitude. + +Fri Mar 10 12:02:33 1995 Ian Lance Taylor + + * fixincludes: Fix `typedef struct term;' on hppa1.1-hp-hpux9. + +Fri Mar 10 05:50:11 1995 Oliver Kellogg (Oliver.Kellogg@RST13.DASA.DBMAIL.d400.de) + + * 1750a.c (sectname): Reverse Init and Normal. + (print_operand_address, case PLUS): Add case for LABEL_REF. + (print_operand_address, case LABEL_REF): Split fom SYMBOL_REF. + (print_operand_address, case CODE_LABEL): New case. + (ASM_FILE_END): Delete. + * 1750a.h (FUNCTION_EPILOGUE): Restore stack before freeing local vars. + (DEFAULT_SIGNED_CHAR): Now 1. + (DATA_SECTION_ASM_OP): Use pseudo-op for read-only data (later copied). + (JUMP_TABLES_IN_TEXT_SECTION): Define. + (ASM_OUTPUT_ASCII): Split into multiple lines if long. + (ASM_OUTPUT_{CHAR,SHORT,INT,LONG_INT}): Split up. + (ASM_OUTPUT_COMMON): Call check_section. + +Thu Mar 9 12:46:53 1995 Michael Meissner + + * rs6000.md (movsf): Do not call truncdfsf2 for non PowerPC + when expanding a store to memory and -msoft-float was used. + +Thu Mar 9 08:51:35 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * c-decl.c (start_function): Handle new parameter ATTRIBUTES. + * c-tree.h (start_function): Add new parameter. + * c-lang.c (finish_file): Pass new parm to start_function. + * objc-act.c (build_module_descriptor, really_start_method): Likewise. + * c-parse.in (fndef, nested_function): Pass prefix_attributes + to start_function. + (setspecs): Save prefix_attributes in declspec_stack. + (decl rules): Restore prefix_attributes along with current_declspecs. + (setattrs): Concatenate prefix_attributes to previous value. + * c-common.c (decl_attributes): Handle prefix and suffix attributes + the same way. + + * print-tree.c (print_node): Fix typo in printing large INTEGER_CST. + + * varasm.c (assemble_variable): Consistently use DECL_SIZE for + everything. + + * c-typeck.c (convert_for_assignment): Fix typo in testing for + pointer to function type. + + * varasm.c (record_constant_1): Handle NON_LVALUE_EXPR. + Rewrite to use switch instead of if/then/elseif/else. + +Wed Mar 8 18:21:51 1995 Paul Eggert + + * cccp.c (do_include): Fix type typo: pcfbuflimit is char *, not int. + +Wed Mar 8 17:30:29 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * fold-const.c (force_fit_type): Always propagate OVERFLOW. + + * rtl.def (INLINE_HEADER): Add new "e" field. + * rtl.h (FORCED_LABELS): New field; other fields adjusted. + (gen_inline_header_rtx): New parm FORCED_LABELS. + * emit-rtl.c (gen_inline_header): Add new parm FORCED_LABELS. + * integrate.c (initialize_for_inline, output_inline_function): + Handle FORCED_LABELS. + +Wed Mar 8 13:47:20 1995 Jason Merrill (jason@cygnus.com) + + * alpha.h (WORD_SWITCH_TAKES_ARG): Add -rpath. + (LINK_SPEC): Pass through -taso and -rpath. + * alpha/osf12.h (LINK_SPEC): Ditto. + +Wed Mar 8 09:59:56 1995 Michael Meissner + + * rs6000/eabi.asm: Rewrite so that the initialized pointers go + into the .got2 section, which allows eabi.asm to be assembled with + the -mrelocatable option. Move the data picked up from the bl + instruction to before the traceback tag. + + * rs6000/sysv4.h (CPP_SPEC): Define _RELOCATABLE if -mrelocatable + switch is used. + + * libgcc2.c (__new_handler): Don't initialize the pointer variable + with the address of __default_new_handler, which may not work in + some shared library mechanisms. + (__builtin_new): If __new_handler is NULL, call the function + __default_new_handler. + +Tue Mar 7 17:34:59 1995 Ian Lance Taylor + + * i960.h (PROCESS_PRAGMA): Define. + (ROUND_TYPE_ALIGN): Pass maximum of COMPUTED and SPECIFIED to + i960_round_align. + (ROUND_TYPE_SIZE): Delete. + * i960.c (process_pragma): Uncomment, and rewrite for gcc 2. + (i960_round_size): Delete. + (i960_round_align): Don't adjust suggested alignment downward. + Restrict alignment to value set by #pragma align. + +Tue Mar 7 12:14:46 1995 Doug Evans + + * configure (sparc64-*-elf): Add crtbegin.o, crtend.o to extra_parts. + * sparc/sp64-elf.h (TARGET_VERSION): Define. + (CPP_PREDEFINES): Delete sun, sparc, unix. Delete OS assertions. + (ASM_SPEC): Define. + (LINK_SPEC): Delete solaris stuff, this is an embedded target. + (STARTFILE_SPEC, ENDFILE_SPEC): Define. + +Mon Mar 6 17:54:01 1995 Doug Evans + + * Makefile.in (install-common): Fix typo in installation of cpp. + Likewise with gcc-cross. + +Mon Mar 6 02:29:05 1995 Jeffrey A. Law + + * pa.md (movsicc): New expander. + +Fri Mar 3 13:34:20 1995 Michael Meissner (meissner@cygnus.com) + + * rs6000/sysv4.h (ASM_SPEC): If -mrelocatable was passed to + compiler, pass it on to the assembler. + +Fri Mar 3 12:11:28 1995 Ian Lance Taylor + + * fixincludes: Add fixes for VxWorks header files. + * ginclude/stddef.h: If VxWorks typedef macros are defined, invoke + them as appropriate. + +Fri Mar 3 05:48:54 1995 Paul Eggert + + * cccp.c (dump_single_macro): Fix typo: % wasn't properly + doubled in printf formats. + +Thu Mar 2 19:44:02 1995 Jason Merrill + + * expr.c (expand_expr, CLEANUP_POINT_EXPR): Force the operand out + of memory before running cleanups. + +Thu Mar 2 19:15:24 1995 Paul Eggert + + * cccp.c (rescan): Prevent accidental token-pasting to + get !=, *=, /=, ==, or ^=. + +Thu Mar 2 15:37:13 1995 Jason Merrill + + * c-typeck.c (build_binary_op): Avoid spurious warning + comparing enumerator to unsigned variable. + +Thu Mar 2 18:18:38 1995 J.T. Conklin + + * m68k.md (sqrtsf2,sqrtdf2): Use fp precision specifiers. + +Thu Mar 2 18:09:01 1995 Stephen L Moshier (moshier@world.std.com) + + * c-lex.c (yylex, case !NOT_FLOAT): Remove previous change. + +Thu Mar 2 15:26:50 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * Makefile.in (bootstrap*): Pass new STAGE_PREFIX to recursive makes. + +Wed Mar 1 14:52:16 1995 Ian Lance Taylor + + * i960/i960-coff.h (ASM_FILE_START): Define. + (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP): Define. + (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Define. + (CTORS_SECTION_FUNCTION, DTORS_SECTION_FUNCTION): Define. + (INT_ASM_OP): Define. + (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR): Define. + * i960/vx960-coff.h (CPP_PREDEFINES): Define. + (CPP_SPEC): Define. + (CC1_SPEC): Default to -mca. + +Wed Mar 1 11:10:54 1995 Michael Meissner (meissner@cygnus.com) + + * rs6000/rs6000.c (output_prologue): Do not emit the word that + gives the PC relative location to the local GOT table for the + -mrelocatable option here. + * rs6000/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Emit it here. + + * t-eabi (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Build -msoft-float + and -mrelocatable versions of the library. + + * rs6000/powerpc.h (CPP_PREDEFINES): Define the cpu and machine as + powerpc, not rs6000. + + * libgcc2.c (_unwind_function): Clone for powerpc, using the + PowerPC mnemonics. + + * rs6000/rs6000.md (uminsi3, umaxsi3): Silence warnings that + -2147483648 is too large to fit in a signed integer on 32-bit + hosts. + +Wed Mar 1 06:48:31 1995 Richard Kenner + + * fold-const.c (decode_field_reference): Don't check TREE_CODE + of EXP; let get_inner_reference decide if have reference. + Allow no bit reference if have AND_MASK. + (all_ones_mask_p): Use tree_int_cst_equal, not operand_equal_p. + (unextend): New function. + (fold_truthop): For constant cases, use new function, rework + conversion, and warn if comparison can never be true. + + * expr.c (store_expr): Do conversion in two steps for promoted lhs. + +See ChangeLog.9 for earlier changes. diff --git a/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 is used. + +Fri Dec 14 14:39:10 1990 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (increment and test peephole): Updated so it would apply + with the new method for doing cmpsi/bxx. + * m88k.md (function units): Replace decode with alu and update + accordingly. + * out-m88k.c (emit_test): Add a mode parameter. + * tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Constrain how the arg + pointer can be used. + +Fri Dec 14 06:48:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (convert_move): Add missing argument to some recursive calls. + + * jump.c (invert_jump): Pass new label to recursive call. + + * expr.h (setcc_gen_code): Replaces setcc_gen_fctn; stores insn_code. + (expand_and, emit_store_flag, label_rtx): Add definitions. + (get_condition, compare_from_rtx): Likewise. + * rtl.h (STORE_FLAG_VALUE): Provide a default value of 1. + (reg_set_last): Add definition. + (const_true_rtx): New variable. + * cse.c: Remove defaulting of STORE_FLAG_VALUE from here. + (const_true_rtx): Remove static version; now global. + * emit-rtl.c (const_true_rtx): Define here. + (gen_rtx): Return const_true_rtx for CONST_INT of STORE_FLAG_VALUE. + (init_emit_once): Initialize const_true_rtx. + * expmed.c (emit_store_flag): Rewritten. Is passed the operands + to compare in addition to the compare operation and emits both the + comparison and the store-flag insn. + Handles special-case of testing for A < 0 and A >= 0. + If result is constant, just return it. + Accepts an argument saying how to normalize the result and does + appropriate normalization. + Give preference to using the sign bit rather than the low-order bit. + Allow sxx insns to fail. + If don't have seq or sne insns, can sometimes do with abs. + * expr.c (expand_expr, case COND_EXPR): For X ? A + 1 : A, only + do store_flag if it is cheap. + (do_jump): True comparisons return STORE_FLAG_VALUE, not 1. + (compare_constants): Correctly handle unsigned comparisons. + Return STORE_FLAG_VALUE, not 1, for true comparison. + (compare_from_rtx): New name for compare1. + Accept size and alignment, for BLKmode. + No longer statuc. + (compare, compare_from_rtx): No need to pass forward and reverse codes; + can trivially derive the reverse code from the forward one. + All callers changed. + If one operand is constant, make it the second one. + (compare): Let compare1 do most of the work. + (do_store_flag): Rewritten, now lets emit_store_flag do most of + the work. + Handles the special-case of comparing a single bit with zero., + Add additional argument ONLY_CHEAP; if non-zero, fail if it looks like + this will be an expensive operation; all callers changed. + If it looks like it will be possible to do a store-flag operation, + call emit_store_flag; if it can't do it, emit as assignments and a + jump. If it doesn't look possible to do a store-flag operation, return + zero before expanding anything. + * final.c: (final_scan_insn): Don't check STORE_FLAG_VALUE; if the + insn doesn't exist, we won't try to change it. + * genemit.c (gen_exp): Use const_true_rtx when appropriate. + * genrecog.c (add_to_sequence): Likewise. + (try_merge_1): Two nodes aren't identical if they are to test + different modes or if they have different values of EXACT. + * integrate.c: Don't supply a default value for STORE_FLAG_VALUE here. + * jump.c: Now includes expr.h (for emit_store_flag and get_condition). + (jump_optimize): Split optimization that made store-flag insn + into three separate optimizations, the first two of which are useful + even in the absence of store-flag operations. + (can_reverse_comparison): Set and use of cc0 must be immediately + adjacent. + (mark_jump_label): Abort if LABEL_REF codesn't contain a CODE_LABEL. + Consider two labels adjacent after reload if separated by just USE or + CLOBBER insns. + * loop.c: Now includes real.h. + (get_condition_for_loop): New function. All callers of get_condition + in this file now call this function. + (strength_reduce): no_labels_between_p now skips FROM. + (get_condition): No longer static. + Refine cases when we can't reverse a comparison operation. + * optabs.c (init_optabs): Initialize and define setcc_gen_code + instead of setcc_gen_fctn. + * rtlanal.c (no_labels_between_p): Skip FROM, like as ..._between_... + functions do. + (no_labels_between): Deleted. + (reg_set_last, reg_set_last_1): New functions. + * Makefile.in (jump.o): Now include expr.h. + (loop.o): Now includes real.h. + + * c-tree.h (int_ftype_cptr_cptr_sizet, ptr_ftype_ptr_cptr_sizet): + New names. + + * alliant.md, i386.md, m68k.md, m88k.md, ns32k.md, sparc.md: Add mode + to comparison operators (EQ, NE, etc.) to agree with the mode of the + destination. + * out-m88k.c (emit_test): Likewise. + +Fri Dec 14 00:12:46 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (finish_struct): Strip NON_LVALUE_EXPR from field width. + +Thu Dec 13 13:10:47 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cplus-init.c (expand_vec_init): Add missing arg to + expand_exit_loop_if_false. + + * config.gcc (tron): Alias for gmicro. + + * c-decl.c (int_ftype_cptr_cptr_sizet): Variable renamed. + (ptr_ftype_ptr_cptr_sizet): Likewise. + + * gcc.c (default_compilers): Handle .C. + + * Makefile.in (enquire.o): Add -I. so can find stddef.h. + (install-cross): Install cc1obj like the others. + + * Makefile.in (gnulib.target): Renamed from gnulib. + (gnulib): Renamed from tmpgnulib. Rename that file in this rule. + Also delete stamp-gnulib2 here. + (gnulib.portable, gnulib.convert): Input now is named gnulib. + (GNULIB_TARGET, GNULIB2_TARGET): Define these vars (already in use). + (gnulib2.target): Renamed from gnulib2. + (gnulib2): New rule, alias for gnulib2.target. + + * local-alloc.c (local_alloc): Cast an enum used as index. + * optabs.c (emit_indirect_jump): Likewise. + * reload1.c (choose_reload_regs): Likewise. + +Thu Dec 13 12:38:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expmed.c (store_bit_field): Verify that operand 1 of movstrict + satisfies its predicate. + +Wed Dec 12 17:26:21 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gvarargs.h: Avoid duplicate inclusion using _VARARGS_H. + +Wed Dec 12 14:11:30 1990 Tom Wood (wood at dg-rtp.dg.com) + + * tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed condition + code register. As a temporary measure, NOTICE_UPDATE_CC is used + to track swapped cmpsi cases. + + * m88k.md (shift patterns): Deal with TARGET_*_LARGE_SHIFT + uniformly with define_expand. Make gen_lshlsi3 generate ASHIFT + and eliminate the optimization patterns using ASHIFT. Eliminate + other optimization patterns that will be handled by combine. + +Tue Dec 11 22:13:48 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * expr.c (convert_move): With slt, handle dest that's invalid. + + * stmt.c, tree.h (stmt_nesting): + Typedef deleted; use `struct nesting *'. + * stmt.c (expand_start_cond): If exitable, make an exit label. + +Tue Dec 11 21:28:56 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (subst, case SUBREG): Update TO for earlier + changes so we can always detect (subreg (mem ...)). + +Tue Dec 11 10:56:53 1990 Craig Burley (burley at pogo.ai.mit.edu) + + * stmt.c (expand_start_loop{,_continue_elsewhere}): Return pointer + to nesting structure (new type stmt_nesting). + (expand_exit_loop{,_if_false},expand_continue_loop): Accept pointer + to nesting structure, substitute loop_stack if 0 (same behavior as + before when there was no argument), so F90 CYCLE and EXIT statements + (like C's continue and break stmts) can refer to other than the + innermost loop. + (expand_start_cond): Uses new names for if-related labels that + reflect addition of "elseif" call, and sets endif_label to whatever + exit_label gets set to (so we don't generate two identical labels + for languages from which if is exitable via expand_exit_something). + (expand_start_elseif): New function, used by Fortran. + (expand_start_else): Moved above _end_cond so these four functions + appear in the order they get called; uses new names, and fills in + only endif_label if needed, not exit_label. + (expand_end_cond): Handles end of any if, not just if-without-else. + Generates both labels for next else/elseif pending (there was none) + and the endif itself, if they exist (and there will always be at least + one). + (expand_end_else): Gone, call expand_end_cond instead. + * c-parse.y, cplus-parse.y, objc-parse.y: Pass new 0 argument to + expand_..._loop_... to indicate the innermost loop; call + expand_end_cond instead of expand_end_else. + * tree.h: Typedef for stmt_nesting returned by expand_start_loop... + and change their return types accordingly. + +Mon Dec 10 06:59:14 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (check_asm_operands): Delete from here. + * recog.c (check_asm_operands): Move to here; no longer static. + (validate_change): Don't assume change is valid is asm_noperands >= 0. + If recog_memoized returns < 0, accept change if asm_noperands >= 0 + and check_asm_operands returns non-zero. + (apply_change_group): Likewise. + (validate_replace_rtx_1): Swap operands on commutative operation + if first is constant. + Use plus_constant to simplify a PLUS with CONST_INT as second operand. + + * reload.c (find_equiv_reg): We must have a stable SP if GOAL is + a MEM that uses SP. + + * combine.c (try_combine): Don't do anything if I2 or I1 + has an ASM_OPERANDS and CLOBBERS; we'll need those clobbers + and it is too messy to try to get things set up correctly. + +Sun Dec 9 22:07:41 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (collect_expansion): Don't check for /* */ concat here. + (macroexpand): Always use raw arg if traditional. + + * c-parse.y (unary): Mark address of label as constant. + +Sun Dec 9 14:45:34 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-class.c (propagate_basetype_offsets): Take effect on ASSOC + before recursive calling. + (finish_struct): Call `layout_decl' with zero for KNOWN_ALIGN + when laying out TYPE_DECL. + * cplus-tree.c (assoc_value): Change recursion condition to compare + ASSOC_VALUE (assoc) against TYPE_MAIN_VARIANT (type) instead of just + against type. + +Sat Dec 8 10:40:00 1990 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (attributes): Reorganize and include a block diagram. + Make better use of defaults. + * m88k.md (peephole), out-m88k.c, tm-m88k.h (short_branch): Add + the sparc peepholes for changing bsr/br into bsr.n/addu or + bsr.n/subu. Install the length attribute for this. Requires the + use of `def' to accomodate broken assemblers in the bsr.n/addu + case. + +Fri Dec 7 06:12:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c (find_end_label): Increment usage count of label we return + so we know it won't go away. + (dbr_schedule): Decrement count of end label and delete it if dead. + +Wed Dec 5 17:36:23 1990 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md: Add instruction attributes for scheduling and delay + slot information. + * m88k.md (addsi pattern): Adding large constants does arise. + (udivsi pattern): Wrong predicate. + * tm-m88k.h, out-m88k.c (NOTICE_UPDATE_CC): Do so using + attributes. + + * make-m88k, make-m88kdgux: Say how to create m88k-trace.asm. + +Wed Dec 5 13:52:16 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * optabs.c (expand_binop): Support insn_before == 0. + + * function.c (optimize_bit_field): Fix wrong arg to validate_change. + + * Makefile (includes): Export LIB. + +Wed Dec 5 13:31:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): Don't discard CLOBBERs from an insn + with ASM_OPERANDS. + +Tue Dec 4 16:12:21 1990 Tom Wood (wood at dg-rtp.dg.com) + + * tm-m88k.h, out-m88k.c, m88k.md: More cleanups: introduce + POWER_OF_2 for tests (x && (x & (x-1) == 0); rename predicate + functions *_p instead of *_operand; cleanup addsi3 insns; simplify + udivsi3 insns; simplify memory shift insns; make LOW_SUM and HIGH + SImode instead of VOIDmode; add a predicate to the increment and + test peephole insn; deal with setting SFmode to zero; delete bogus + pattern for divide-by-power-of-2. + * make-m88k, make-m88kdgux: dg88k-trace.asm is now m88k-trace.asm. + Move movstr-m88k.sh to config/m88k-movstr.sh. + +Mon Dec 3 19:08:03 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile.in (gnulib2.ready): New target. + (stamp-gnulib2): Depend on that. + Avoids recompiling gnulib2 each time cc1 changes. + +Mon Dec 3 16:17:56 1990 Tom Wood (wood at dg-rtp.dg.com) + + * tm-m88kdgux.h, xm-m88kdgux.h (SEPARATE_AUX_OUTPUT): Should be in + xm-m88kdgux.h. + * tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed literal + synthesis register. Reworked the addressing method to be like the + sparc (uses HIGH and LO_SUM). Numerous cleanups. These changes + are based on work done by Steve Chamberlain (steve@cygnus). + * tm-m88k.h, out-m88k.c (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): + Implemented. + +Mon Dec 3 15:19:04 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (special_symbol): Use time_t as type of t. + + * m88k-movstr.sh, m88k-trace.asm, va-m88k.h: New files. + + * gcc.c: Don't define R_OK, etc. if already defined. + + * out-sparc.c (finalize_pic, emit_move_sequence, output_arc_profiler): + Finish change to emit HIGH and LO_SUM as Pmode instead of VOIDmode. + +Sun Dec 2 22:13:53 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * config.gcc (tower): New alternative. + (mips-news): Adapt for version 2. + + * tm-tower.h, tm-tower-as.h, xm-tower.h: New files. + +Sun Dec 2 17:47:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (eliminate_regs, case ASM_OPERANDS): Fix typo in testing + for changed vector. + + * out-rs6000.c (output_epilogue): Fix typo restoring general registers. + (print_operand): Add new option %H. + * rs6000.md: Add (clobber (reg:SI 64)) to many patterns even though + they don't clobber MQ to allow combining to work well. This will be + removed once combine knows how to add clobbers when required. + Change patterns to reflect new canonicalization rules. + Where we have (and (xshift)), add patterns for (zero_extend (xshift)). + (andsi3, xorsi3): Fix bug in case where two insns are needed. + (moveti): Don't call change_address when in reload. + (sign_extend): Add patterns for sign extend preceeded or followed by + one of the shifts it will do. Use %H to output the merged shift. + + * out-romp.c (print_operand): Allow exact_log2 result to be zero. + * romp.md: Likewise. + * tm-romp.h (CONST_OK_FOR_LETTER): Likewise. + + * a29k.md (type attribute): Add types for floating-point insns. + (in_delay_slot attribute): Update to allow for new types. + (function_unit definitions): Add definitions for floating-point units. + (andcb*3): Delete obsolete names. + (convert insn): Use register_operand instead of gen_reg_operand for + floating-point operand. + (cpeq, feq, deq, etc): New patterns. + (floating-point arithmetic): Add support for 29050 insns and + accumulators; indicate function unit usage. + (ior/and patterns): Put NOT as second operand. + (orn insn): New, for 29050. + (load patterns): If using match_operator, make it the highest operand + number. + (loadm insns): Add workaround for rev A1 bug on 29050. + (negsf2, negdf2): Don't use XOR to negate on 29050. + (movsf, movdf): Add support for accumulators on 29050. + (movsi, movhi, movqi): No need to support special->special copies. + Support consthz insn on 29050. + (compare, scc, and branch insns): Rework to not use cc0. Use a pseudo + register instead. Compare doesn't generate any code, but merely + saves the operands. scc and branch then emit the appropriate compare + and jump (if branch) insns. + (tstsi): Delete pattern; not used when no cc0. + (peepholes): Remove peepholes to convert jumps to scc insns; now + done in jump.c. + * out-a29k.c (a29k_compare_*): New variables. + (long_const_operand): Anything with low-order 16 bits zero is not a + long constant on the 29050. + (accum_reg_operand): New function. + (gen_reg_operand): Returns false for accumulator registers. + (output_operand): Allow accumulators. + (ne_comparison_p, fp_comparison_p, return_peep_operand): Deleted. + (fp_comparison_operator, branch_operator): New functions. + (output_compare): Deleted. + (print_operand): Change meaning of %b and %B. + Add new code %J. + * tm-a29k.h (TARGET_VERSION): Say if compiling for 29050. + (TARGET_FLAGS): Add -29000 to turn off support for 29050; this is + still the default. + (various register macros): Add support for the floating-point + accumulators on the 29050. + (CONST_OK_FOR_LETTER): Use 'O' for a constant that can be set using + conthz on the 29050; keep old definition for 29000. + (STORE_FLAG_VALUE): Now 0x80000000. + (ASM_FILE_START): Write ".cputype 29050" when compiling for 29050. + + * combine.c (subst): Put NOT, NEG, MULT, PLUS, and MINUS as the + first operand of commutative operations. Note that NOT used to be + put as the second operand but it has always been assumed that + MULT would be the first operand in address expressions, so we have + to change the previous canonicalization. This is possible now that we + have eliminated the andcbm3 operations. + * i860.md (andnot): Remove obsolete andcbsi3 name and place NOT + as first operand. + * m68k.md (fpm*): Delete patterns with MULT as second operand and + use "@" construct when possible. + * m88k.md (and.c, ior.c): Remove obsolete andcbsi3 and iorcbsi3 names. + Delete patterns with NOT as second operand. + (xor.c): Rewrite in new canonical form. + * mips.md (nor): Rewrite in new canonical form. + * pyr.md (bicw): Remove pattern with NOT as first operand, removing + obsolete name andcbsi3 in the process. + * sparc.md: Remove patterns with NOT as first operand. + Remove obsolete names andcbsi3, iorcb3, and xorcbsi3. + Rewrite xnor into new canonicalized form. + Add mode to HIGH and LO_SUM operations. + * vax.md (bic*): Remove obsolete andcbm3 names. + Put NOT as first operand when both generating and recognizing RTL. + (jlbc): Rewrite with NOT as first operand. + +Sun Dec 2 17:08:16 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * m68k.md (recognizer for casesi_2): Handle ASM_RETURN_CASE_JUMP. + + * stddef.h (ptrdiff_t): Prevent definition, as with size_t. + +Sat Dec 1 16:31:30 1990 Ron Guilmette (rfg at ncd.com) + + * dwarfout.c (lookup_filename, dwarfout_finalize): changed from + maintaining a linked list of filename entries to maintaining an + (expandable) array of filename entries instead. Also, changed + code so that *all* filename strings are output (to the .files + section of the asm file) in one swell foop just as the asm file is + being finalized rather than writing out new filenames one-by-one + as they arise (as previously). This circumvents a problem caused + by rfg's naive assumption that assemblers kept a stack of prior + section names (of depth > 1) which could be successively popped + via multiple `previous' directives. For some assemblers, the + depth of the stack is only 1 and they can get confused if you do + two (or more) `previous' directives in a row. Anyway, it is no + longer either necessary or useful to do that, so who cares. + + * dwarfout.c: added code to output newlines to the asm file just + prior to each and every change of section (for better readability + of the asm files). + + * dwarfout.c: changed code so that if DWARF_DESCRIBE_USED_EXTERNS + is defined, it forces DWARF_LOCATION_ATTRIBUTES to also be defined. + + * dwarfout.c: changed code so that if DWARF_LOCATION_ATTRIBUTES + is defined, it forces DWARF_DESCRIBE_FILES to be defined (to `1'). + + * dwarfout.c: changed code so that if DWARF_DESCRIBE_FILES is not + already defined (in the user's tm.h file) it will automatically be + defined (by default) to `1'. Also changed all instances of + `#ifdef DWARF_DESCRIBE_FILES' to `#if DWARF_DESCRIBE_FILES'. + The user must now intentionally *disable* this feature (by + defining DWARF_DESCRIBE_FILES to `0' in his tm.h file) if he + wishes to have the additional information about files suppressed. + + * dwarfout.c: changed comments relating to optional defines for + extended GNU DWARF features to include more information and to + add some additional clarity. + +Sat Dec 1 16:00:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (subst): Call reverse_condition instead of + reverse_comparison. + We are allowed to reverse floating-point EQ and NE comparisons. + + * combine.c (subst): Call simplify_and_const_int for all AND + and ZERO_EXTEND cases and all cases where we make one of them. + Remove all other code in AND and ZERO_EXTEND cases. + (simplify_and_const_int): Rewritten to follow a consistent model + of tracking what AND's need to be done and which bits are not + significant. Consistently try a ZERO_EXTEND for all cases where + the result is an AND with a mode-wide mask. Move all remaining + cases from AND any ZERO_EXTEND cases from subst. + +Sat Dec 1 09:13:17 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-tree.h (lang_type): Remove any_assigns_this, + none_assigns_this from type_flags. + * cplus-decl2.c (get_temp_name): If the initializer is a + pointer to zero, cache it in EMPTY_TABLE. + (finish_builtin_type): New function, to factor common code + arising from building internal structures. + * cplus-decl.c (init_decl_processing): Call it. + +Fri Nov 30 10:39:04 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-decl.c (finish_function): Use CLASSTYPE_ASM_WRITTEN instead + of TREE_USED to indicate that we need debugging info for + TTYPE. + Note that nobody ever sets EXTENDED_DBX_DEBUG. For now, + change to test DBX_DEBUG. For later, change everything to + key off of EXTENDED_DBX_DEBUG. + Also, set `warn_return_type' to one always, since this warning + is too valuable to lose. + * cplus-tree.c (lang_output_debug_info): Don't test TREE_USED. That + field is already used by other routines, and we have all we need now + in CLASSTYPE_ASM_WRITTEN. + * cplus-dbxout.c (dbxout_type_method_1): Handle const, + volatile, and const/volatile member functions. + +Fri Nov 30 04:51:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (reg_last_set_value): New variable. + (combine_instructions): Allocate and initialize it. + (record_dead_and_set_regs): Set reg_last_value to source + of assignment; clear it for a CLOBBER or partial assignment. + (subst): Use reg_last_set_value instead of interpreting the + insn in reg_last_set as if it was a single SET. + + * combine.c (gen_lowpart_for_combine): Call gen_lowpart for CONST_INT. + When making a new MEM, copy MEM_VOLATILE_P and MEM_IN_STRUCT_P. + If cannot recognize the argument, just form a SUBREG; usually, + it won't be recognized, but sometimes will allow further + simplifications. + + * regclass.c (reg_scan): Save size of uid map; reallocate if + we have more registers than we allocated. + Leave some extra room in map. + + * stmt.c (emit_case_nodes): Supply missing argument to emit_cmp_insn. + + * fold-const.c (decode_field_reference): Add missing arg declaration. + + * expmed.c (store_bit_field): Add missing last argument to + recursive call. + + * cse.c (cse_insn): Remove extra arg passed to rtx_equal_p. + + * Makefile.in (proto): Make protoize.1 and unprotoize.1. + (protoize.1, unprotoize.1): New targets. + (install_man): Install protoize.1 and unprotoize.1./ + * proto-unproto.1: New file. + + * loop.c (scan_loop): Properly set SET_SRC in movables entry for + MOVE_INSN == 1 and CONSEC > 0 case. + (force_movables): Don't look at SET_SRC when CONSEC > 0. + + * expr.c (expand_expr, case ARRAY_REF): Ensure TYPE_POINTER_TO + gets initialized after we build a variant type. + +Fri Nov 30 00:35:06 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * m68k.md (ashr of 16 to 24 bits): Use extl, not extw. + +Thu Nov 29 21:41:03 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-vax.h (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): New macros. + + * gcc.c (add_prefix): Add new element, don't replace old first elt. + + * dwarfout.c (dwarfout_finalize): Go to DEBUG_SECTION first thing. + +Thu Nov 29 17:50:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu) + + * stmt.c (expand_end_loop): Stop looking for branch to the loop + exit when we hit a NOTE_INSN_BLOCK_{BEG,END}. + * jump.c (duplicate_loop_exit_test): Likewise. + Also, only copy line-number notes. + + * integrate.c (expand_inline_function): Call expand_expr for the + arguments before allocating maps that are based on register numbers. + + * loop.c (loop_reg_used_before_p): Accept new argument, SET, to + indicate which part of INSN is setting the relevant register. + (scan_loop): Pass new arg to loop_reg_used_before_p. + + * function.c (optimize_bit_field): Don't assume ZERO_EXTRACT can + be replaced by MEM; use validate_change to check. + + * reload.c (find_reloads_toplev): Add missing arg to recursive call. + + * calls.c (expand_call): Correct two cases of missing mode to gen_rtx. + +Thu Nov 29 02:42:35 1990 Michael Tiemann (tiemann at cygnus.com) + + * version.c: Bump version number to 1.90.04. + + * toplev.c (rest_of_compilation): If FLAG_PIC is nonzero, emit any + special PIC code once we start really compiling a function (i.e., we + are not in an inline function). Inline functions cannot + meaningfully hold PIC code because there is no notion of position + independence in code that isn't really being written down. + + * Makefile.in: Don't build cplus-cadillac.o by default. Build + cplus-edsel.o instead. Until Lucid frees their programming + environment, their Cadillac will always be an Edsel to GNUsers. + + * stmt.c (fixup_gotos): Change loop to run in two passes so that + cleanups don't experience a race condition. + (expand_cleanups): Replace Nov 5 word-around with consistency check. + The same cleanups should never be run twice. + + * cplus-decl.c (lang_{init,finish}): Move these functions... + cplus-lex.c: ...to here. Also, make change to lang_init analogous + to Nov 27 change for C compiler. + + * cplus-decl.c (pushdecl): Don't warn about static/extern conflicts + if X is a TYPE_DECL. + (build_enumerator): Certain CONST_INT nodes cannot be coopted to be + the constant for enumerator. Mark them as non-shareable and don't + coopt them. + + * cplus-decl.c (lang_{init,finish}): Declare these to be void + functions to match new tree.h. + +Wed Nov 28 18:48:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (eliminate_regs): Convert (subreg (mem)) to (mem) when + not a paradoxical SUBREG. + +Wed Nov 28 17:15:43 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * emit-rtl.c (gen_label_rtx): Clear LABEL_NAME via gen_rtx. + +Tue Nov 27 21:54:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * varasm.c (assemble_external): Never write a .extern for a static + name. + + * recog.c (validate_replace_rtx_1): Handle making a SUBREG of a MEM + by trying a new MEM. + +Tue Nov 27 11:54:28 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-lang.c, objc-action.c: Include input.h. + (lang_init): Call check_newline here. + * toplev.c (compile_file): Not here. + Call lang_init after setting input_filename. + + * tree.h: Declare numerous functions that the front end must provide. + + * rtl.h (LABEL_REFS): Use operand 5, same as LABEL_NUSES. + + * toplev.c (warn_return_type, W_options): Handle -Wreturn-type here. + * c-decl.c: Not here. + * flags.h: Declare it here, not in c-tree.h. + + * gcc.c (pexecute): Wait and retry if fork fails. + + * expr.c (do_jump): Pass all args to get_inner_reference. + (expand_assignment): Fix typo in arg to get_inner_reference. + + * tm-hp9k320.h (STANDARD_STARTFILE_PREFIX): Don't alter if already set. + +Mon Nov 26 18:28:51 1990 Michael I Bushnell (mib at churchy.ai.mit.edu) + + * cccp.c (handle_directive): Do backslash-newlines inside of + strings. + +Mon Nov 26 15:39:29 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (main): Handle -w. + (warning): Do nothing if -w. + * gcc.c (compilers): Pass -w to cpp. + + * c-decl.c (grokdeclarator): Don't discard arg types + for prototype even if traditional. + +Sun Nov 25 20:52:31 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * protoize.c: Undef CHAR_BIT, etc, before including limits.h. + + * reload1.c (old_asm_operands_vec, new_asm_operands_vec): + Type should point to a vector. + (Eliminate_regs): For asm_operands, copy the vector properly. + +Sun Nov 25 20:35:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu) + + * jump.c (jump_optimize): Fix typo in stack push combining code. + + * reload1.c (eliminate_regs): Ensure we share operands 3 and 4 + of ASM_OPERANDS operations if they were originally shared. + Copy all rtx flags when making a new MEM. + (eliminate_regs_in_insn): Initialize for ASM_OPERANDS sharing check. + +Sun Nov 25 16:37:10 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile.in (stamp-gnulib2): Don't depend on gnulib2-indirect. + + * gcc.c (do_spec_1): Handle %W{...}. + (default_compilers): Use %W{...} when passing -o option. + +Sat Nov 24 16:39:56 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cplus-lex.c (init_lex, do_pending_inlines, reinit_lang_specific): + Add conditionals for __GNU_LIBRARY__. + +Thu Nov 22 13:48:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * fold-const.c (optimize_bit_field_compare): Pass additional + arg to get_inner_reference; it gets set if something was volatile. + (decode_field_reference): New arg PVOLATILEP; passed to + get_inner_reference. + (merge_component_references): Add pointer to place to store if + something is volatile to calls to decode_field_reference; don't + do anything if it gets set (this may be very conservative). + + * stmt.c (expand_end_loop): Skip initial CODE_LABEL at start of + loop when looking for qualified conditional exit. + + * reload.c (push_reload): If (subreg:M1 (reg:M2 ....)) and we + have trouble access the register in M1, reload the reg, not subreg. + Fix typo in testing for memory. + (reload): Force reload of the operand in the above cases. + +Wed Nov 21 17:39:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (strength_reduce, combine_givs): Don't penalize + non-replaceable givs unless they are user variables; temporaries + are probably dead even though we can't prove it. + + * integrate.c (save_constants): Don't get confused by looking + inside CONST_DOUBLE_MEM. + Call recursively on what get_pool_constant returned, in case it + was itself the address of a pool constant. + (copy_for_inline, copy_rtx_and_substitute, restore_constants): + Remake CONST_DOUBLE so it gets chained in correctly and we don't use + obsolete CONST_DOUBLE_MEM values. Call recusively on operand we are + about to pass to force_const_mem; it might have been a case of a + constant value being an address of another constant. + + * loop.c (find_mem_givs): Don't make a DEST_ADDR giv with mult_val == 1 + and add_val == 0. + (maybe_eliminate_biv_1): Turn off elimination in (compare biv1 biv2) + cases; they have problems. + +Wed Nov 21 16:06:14 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * dwarfout.c (location_attribute): Offset for bitfields is special. + + * expr.c (get_inner_reference): New arg pvolatilep. + (expand_expr, expand_assignment): Use to set MEM_VOLATILE_P. + +Wed Nov 21 10:34:25 1990 Tom Wood (wood at dg-rtp.dg.com) + + * stor-layout.c (layout_decl): Record whether a FIELD_DECL is a + bit-field and if so its original type. + * tree.h (DECL_BIT_FIELD_TYPE): New. + * dbxout.c (dbxout_type): Use DECL_BIT_FIELD_TYPE. + * dwarfout.c (output_member_die, bit_offset_attribute, + bit_size_attribute, member_declared_type): Use DECL_BIT_FIELD_TYPE. + * sdbout.c (sdbout_one_type): Use DECL_BIT_FIELD_TYPE. + + * sdbout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): New + interfaces to compute the location of arguments and automatic + variables. + * dbxout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Likewise. + + * dbxout.c (dbxout_parms): Describe a parameter passed in + registers but living on the stack as N_PSYM rather than N_LSYM. + These are typically arg_pointer based locations. + + * out-m88k.c (m88k_debugger_offset): New function. + * tm-m88k.h (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Replaces + SDB_AUTO_NORMALIZE_OFFSET. + * tm-m88k.h (STACK_BOUNDARY): Update to 16 byte aligned stacks. + +Tue Nov 20 23:48:57 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * dwarfout.c (dwarfout_init): Set stack depth to 1 at start. + (output_padded_null_die): New function. + (dwarfout_finalize): Use that to ensure length divisible by 4. + + * ns32k.md (addsi3): Don't use `addr' for very large displacements. + +Tue Nov 20 05:48:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (can_reverse_comparison_p): It is safe to reverse an EQ + or NE comparison, even if IEEE floating-point. + + * integrate.h (struct inline_remap): const_*_map now maps registers + in calling function, not called function. + Add fields to save values recorded from SETs. + * integrate.c: Now includes insn-config.h and real.h. + (expand_inline_function): New meaning for const_*_map. + Don't fill in constant equivalences here; now done in try_constants. + Show CALL_INSNs potentialy clobber all hard registers since we + now record equivalences for hard registers. + (try_constants): No longer need original RTL; all callers changed. + Call note_stores to kill any known equivalences for registers changed. + Record equivalences for PC, CC0, and registers set by this insn. + (subst_constants): No longer need original RTL; all callers changed. + Reflect new meaning of const_*_map. + Perform more extensive constant folding, basically a subset of + fold_rtx in cse.c; specifically, fold the result of comparison + operations and IF_THEN_ELSE operations. + Record the constant equivalences of SETs, if any. + (try_fold_condition, const_equiv, fold_out_const_cc0): Deleted. + * Makefile.in (integrate.o): Now includes insn-config.h and real.h. + +Sat Nov 17 07:48:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (local_alloc): Don't allocate a reg that wants a + class that has only one register; let global-alloc do it so that it + can be given a GENERAL_REG if reload needs a spill reg of that class. + + * regclass.c (regclass, reg_class_record): Count savings in loops as + being greater the same way we adjust reg_n_refs for loops in flow.c. + + * expmed.c (store_bit_field, extract_bit_field): Remove change of + Oct 16; it causes problems with long long bit fields. + + * rtlanal.c (reg_overlap_mentioned_p): If called with a constant, + return zero. If called with a MEM, return 1 iff the second arg + contains a MEM. + * reload.c (push_reload): Call reg_overlap_mentioned_p only if OUT + is a MEM and then pass it the address of OUT. + + * cse.c (cse_insn): Refine when SRC_EQV, SRC, and DEST are added + to the hash table. SRC_EQV is not added to the hash table if it + is volatile or equal to DEST and similarly for SRC. DEST is not + added to the hash table unless either SRC_EQV or SRC is. + +Thu Nov 15 23:43:20 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-typeck.c (convert_for_assignment): Change warning message. + +Thu Nov 15 18:44:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * stmt.c (expand_end_loop): Generalize code to look for more + than one branch to the exit and include unconditional branches + to the exit; move the whole range to the end of the loop. + * jump.c (duplicate_loop_exit_test): New function. + (jump_optimize): Call it. + Don't allocate jump_chain until we have finished deleting dead code. + Leave some more room in jump_chain. + (simplejump_p): Reject if not JUMP_INSN. + (delete_insn): If simplejump_p, remove from jump chain. + * loop.c (loop_skip_over): Deleted. + (scan_loop): No longer call it. + * cse.c (predecide_loop_entry): Deleted. + (cse_basic_block): No longer call it. + +Thu Nov 15 18:00:20 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * math-68881.h (HUGE_VAL): Add extra braces for Sun. + + * stor-layout.c (layout_type): Don't let array have less + alignment than its mode calls for. + +Thu Nov 15 13:05:30 1990 Tom Wood (wood at dg-rtp.dg.com) + + * sdbout.c (sdbout_parms, sdbout_reg_parms): Reimplemented based + on dbxout_parms and dbxout_reg_parms. + +Wed Nov 14 08:48:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (emit_...): All of these now return the last insn + emitted; previously some of them returned void. + (emit_barrier_before): New function, similar to others. + * rtl.h: All emit_... functions now return an rtx; reorder so + declarations are in the same order as definitions in emit-rtl.c. + + * reorg.c (steal_delay_list_from_{target,fallthrough}): Add missing + test when checking candidate insn for resource conflicts. + +Wed Nov 14 07:08:19 1990 Tom Wood (wood at dg-rtp.dg.com) + + * c-parse.y (pushlevel, compstmt): Place a line note at the first + token beginning a block and at the close brace ending a block. + These are the conventional locations for SDB and DWARF debugging + information. + +Tue Nov 13 18:16:47 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * function.c (assign_stack_local): If alignment not specified + and not BLKmode, use at least word alignment. + (assign_outer_stack_local): Likewise. + + * sparc.md: Turn off patterns that specify no_ov or CC_NO_OVERFLOW. + + * dwarfout.c (file_attribute): Fix arg to ASM_OUTPUT_DWARF_ATTRIBUTE. + (AT_line, AT_file): New definitions. + + * out-i860.c (output_block_move): Move .Lm%3 down one insn. + + * c-decl.c (grokdeclarator): -funsigned-bit-field doesn't affect enums. + +Tue Nov 13 09:28:27 1990 Tom Wood (wood at dg-rtp.dg.com) + + * gcc.c (default_compilers): Report an error if -C is used without + -E. Pass -H to cpp. + + * sdbout.c (plain_type, plain_type1): save and output the + rightmost array dimensions. + + * syms.h (enum sdb_type): Add T_VOID, equal in value to T_ARG. + * sdbout.c (plain_type_1): Use T_VOID for VOID_TYPE and define it + to be T_INT if not present in . + + * sdbout.c (sdbout_toplevel_data): Use abort rather than fatal. + +Mon Nov 12 08:49:33 1990 Michael Tiemann (tiemann at cygnus.com) + + * expr.c (compare): Fix use of GET_MODE_CLASS so we don't abort if + MODE is VOIDmode. + * optabs.c (init_optab): Call `xmalloc' instead of `malloc'. + + * out-sparc.c (hard_regno_mode_ok): Change initialization of array + to match behavior of Nov 11 change for complex modes. + + * jump.c (delete_labelref_insn): Chase all LOG_LINKS of insn to try + to delete references to LABEL. This is needed for machines like + SPARC which use multiple insns to get the value of LABEL into a + register. + +Mon Nov 12 16:07:27 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * machmode.def (SCmode, ...): Class is MODE_COMPLEX_FLOAT. + +Sun Nov 11 00:27:34 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-i860.h (HARD_REGNO_MODE_OK): Handle values more than 2 regs long. + * tm-m68k.h (HARD_REGNO_MODE_OK): Likewise, for d7/a0 boundary. + * tm-spur.h (HARD_REGNO_MODE_OK): Likewise, for 31/32 boundary. + * tm-*.h (HARD_REGNO_NREGS): Use GET_MODE_NUNITS to handle + complex values in fp registers on machines where one reg holds a DF. + + * sdbout.c (sdbout_one_type): Do nothing for incomplete type. + + * c-decl.c (duplicate_decls): Warning only when redefining built-in fn. + + * c-decl.c (init_decl_processing): Use sizetype, not unsigned long, + in prototypes for memcpy and memcmp. + + * c-parse.y (component_decl): Don't read the semicolon here. + + * toplev.c (compile_file): Reverse top-level decls before output. + +Sat Nov 10 22:27:47 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * stor-layout.c (layout_type): Use MODE_COMPLEX_{INT,FLOAT}. + +Sat Nov 10 20:34:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload.c: Provide a default definition of REGISTER_MOVE_COST. + +Sat Nov 10 01:43:09 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-init.c (emit_base_init): Don't use CLASSTYPE_ASSOC as a list + of only immediate basetypes anymore. Use `get_base_distance' to + check whether a type is an immediate basetype or not. + + * stmt.c (expand_return): Don't emit a USE if VAL is a + pseudo-register. + + * integrate.c (function_cannot_inline_p): Call to strcmp for + "__builtin_va_alist" must use IDENTIFIER_POINTER not + DECL_NAME. + + * genattrtab.c (check_attr_test): Use XSTR macro instead of + XEXP macro in places where strings are used. + + * tree.c (type_hash_lookup): Have to check TYPE_DOMAIN for non-zero + before comparing the equality of the possible lists. + + * cplus-typeck.c (build_c_cast): Check TREE_TYPE before checking + that the TREE_TYPE is an OFFSET_TYPE. + + * cplus-typeck.c (c_expand_return): Use DECL_RESULT of + current_function_decl instead of `result' since `result' might be + set to zero. + + * cplus-decl.c (xref_tag): Fixed typo in setting + TYPE_USES_COMPLEX_INHERITANCE. + + * cplus-tree.c (assoc_value): Changed interface to take COPYING + parameter. + * cplus-{class,init,search,tree}.c All callers changed. + + * cplus-typeck.c (build_c_cast): Resolve OFFSET_REFs if the type we + are converting to is not an OFFSET_TYPE. + +Thu Nov 8 15:26:27 1990 Craig Burley (burley at pogo.ai.mit.edu) + + * tm-*.h: Try to change HARD_REGNO_NREGS, HARD_REGNO_OK, and other + macro defs to handle new complex type stuff. Mostly guesswork; needs + checking by people who really know each machine. + * machmode.def (SCmode, DCmode, XCmode, TCmode): New complex modes. + * machmode.h (GET_MODE_ALIGNMENT): New macro from stor-layout.c. + * tree.c (build_complex_type): New function. + * stor-layout.c (layout_type): Handle COMPLEX_TYPE. + * expr.c (compare1, compare, move_block_to_reg, emit_push_insn): + Change uses of GET_MODE_CLASS. + * optabs.c (expand_binop, expand_twoval_binop, expand_unop): + (emit_cmp_insn): Likewise. + +Thu Nov 8 06:19:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (no_conflict_p): Initialize *WHERE_DEAD; previously + uninitialized. + +Thu Nov 8 01:08:45 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (yylex): Size of wide STRING_CST counted terminator wrong. + +Wed Nov 7 14:55:38 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gnulib2.c (L_trampoline): Put it inside a dummy function. + + * enquire.c: Renamed from hard-params.c; new vers from steven@cwi.nl. + Modified to undef CHAR_BIT, etc. if defined in stdio.h. + * Makefile.in (enquire): Targets renamed. + (enquire.o): Define NO_MEM. + +Wed Nov 7 14:18:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (invert_jump): If it is going to fail (i.e., redirect_jump + fails), don't invert the jump. + + * expr.c (expand_expr, case COND_EXPR): Don't accept a hard register + as a target if we are going to store into it before testing the + condition because that evaluation may involve a subroutine call + which might clobber it. + + * jump.c (delete_jump): reg_set_p should be called with PATTERN (insn). + (thread_jumps): Add omitted last argument to rtx_equal_for_thread_p. + + * reload.c (find_reloads): Only skip insns which set one hard register + to another if the cost of doing so is low; if not, there may not be + a single insn to do the copy and we may need a reload register. + +Wed Nov 7 00:01:18 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (component_decl_list): Allow missing semi at end. + + * loop.c (move_movables): When moving and deleting library call, + don't be confused if an insn is deleted. + +Tue Nov 6 20:49:57 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-m68k.h (TRANSFER_TO_TRAMPOLINE): Fix asm syntax. + + * xm-iris.h (alloca): Delete redundant definition. + * tm-iris.h (CPP_SPEC): Define variant symbols starting with _. + Define __EXTENSIONS__. + + * config.gcc (editing .gdbinit): Search current dir, not just srcdir. + +Tue Nov 6 22:24:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case COND_EXPR): Generate efficient code for + A ? A : FOO and similar. + + * combine.c (subst): If we have, e.g., (lt CONST FOO), convert it + to (gt FOO CONST). + + * recog.c (comparison_operand): Use comparison_code_p. + + * genconfig.c (walk_insn_part): Add operand to indicate if PART is + going to be used to recognize an insn (as opposed to emitting rtl). + If not, ignore CC0. + (gen_insn, gen_expand, gen_split, gen_peephole): Add new operand to + walk_insn_part calls. + + * cse.c (find_comparison_args): Correctly compute rtx_code of + comparison; if we find another comparison code inside, use it. + * loop.c (get_condition): Likewise. + + * expr.c (expand_builtin): For ffs, don't pass VOIDmode to expand_unop. + +Mon Nov 5 12:55:00 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * final.c (output_addr_const): Don't print parens for CONST. + + * reload1.c (choose_reload_regs): Handle case where find_equiv_reg + returns a SUBREG. Also, use variable `regno' uniformly throughout + code that finds equivalent register. + + * gnulib2.c (__floatdisf, __fixunssfsi): New functions. + (__fixsfdi, __fixunssfdi): New functions. + * gnulib.c (__floatsisf, __fixsfsi): New functions. + +Mon Nov 5 06:37:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * fold-const.c (fold, case EQ_EXPR and NE_EXPR): Convert, e.g., + (A & 2) == 2 to (A & 2) != 0. This eliminates the need for these + patterns in MD files. + Detect more general cases of comparing something with itself. + +Mon Nov 5 00:09:55 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * stmt.c (expand_cleanups): Don't run any cleanup twice. + +Sun Nov 4 23:49:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (convert_move): Use emit_no_conflict_block when converting + SImode to DImode. + If have slt insn, emit a compare insn; we must not have a use of + cc0 without a set; normally, the compare will be deleted as + redundant in final.c. + Use shift rather than clear/test/negate for high-order word when + doing sign extension. + + * optabs.c (emit_no_conflict_block): Don't put REG_NO_CONFLICT + notes on the trailing copy insn; nobody looks there. + + * combine.c (try_combine): Don't combine a reg-reg copy if the + destination is used in a REG_NO_CONFLICT note. + + * reload.c (find_equiv_reg): Use true_regnum to support SUBREGs + as well as REGs. + +Sun Nov 4 12:55:03 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * i386.md (extend*): Take out last change. + Unix assembler rejects movsx... + + * expr.c (expand_expr): Special case for ignored volatile + failed to return. + +Sat Nov 3 14:42:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (do_jump, case PLUS_EXPR): Turn off this case; it was a + pessimization. + +Fri Nov 2 01:51:31 1990 Michael Tiemann (tiemann at cygnus.com) + + * stmt.c (expand_return): Don't emit a USE if VAL is a + pseudo-register. + +Fri Nov 2 15:30:48 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gnulib2.c (__builtin_saveregs): Add version for i860. + + * out-i860.c (output_block_move): Rearrange the copy loop. + Now uses two labels and a more complicated lead-in. + +Fri Nov 2 14:17:24 1990 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md (extendsidi2): New define_expand. + + * out-m88k.c: Converted various constructs to use conventinal + formatting. + + * m88k.md (ext pattern): Must have parens. + * m88k.md (mul/div patterns): Added better documentation. Removed + unfounded restriction on immediate values. + * m88k.md (increment and test peephole): Don't use %L. + + * out-m88k.c (m88k_layout_frame): Must allocate space for the + addressing base register (-mpic). + * out-m88k.c (output_tdesc): Use version 2 tdesc with PIC. + + * tm-m88k.h, tm-m88kdgux.h,: Don't predefine memcpy and others. + * tm-m88k.h: Fixes for dwarf. + * tm-m88ksvr4.h: Dwarf changes. + * xm-m88k.h xm-m88kdgux.h xm-v88r32.h: Update comments. + +Fri Nov 2 12:30:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (comparison_dominates_p): Return 1 if codes are the same. + (thread_jumps): Use get_label_after. + + * a29k.md (movdi): Handle CONST_INT as well as CONST_DOUBLE. + (comparisons): Fix typo in define_split for floating-point NE. + + * reorg.c (fill_slots_from_thread): Don't mark as annulled if no + delay list. + + * loop.c: Allow use of any register to store comparison results. + (loop_skip_over): Don't treat comparison specially; copy all insns + preceeding the jump. + (check_for_endtest, other_reg_use_p): Deleted. + (can_eliminate_biv_p, eliminate_biv): Deleted; code merged and + placed into new maybe_eliminate_p_1. + (may_eliminate_biv, may_eliminate_biv_1): New functions; recursively + look at all rtx to see if every occurrence of a biv can be + eliminated. + (check_eliminate_biv): Deleted; callers changed to call + may_eliminate_biv. + (get_condition): Rework to look into previous insns to find insns + that set the first operand of comparison insns. + +Thu Nov 1 22:07:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (fold_rtx, case COMPARE): Only convert compare to test if + HAVE_cc0 is defined. + * combine.c (subst): Copy COMPARE case from fold_rtx. + Simplify things like (ne (eq FOO BAR) (const_int 0)). + +Thu Nov 1 18:06:56 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * math-68881.h (HUGE_VAL): Alternate definition for Suns. + + * config.gcc (sun3, etc.): Assume os4 as default for Sun 3 and Sun 4. + + * tm-i386v.h (STARTFILE_SPEC, LIB_SPEC): Handle -posix. + (CPP_SPEC): New macro. + (LIB_SPEC): Handle -shlib. + + * c-decl.c (init_decl_processing): Make last arg to memcpy and memcmp + an unsigned long, to be like size_t. + + * Makefile.in (hard-params): Depend on gnulib2, not gnulib. + +Wed Oct 31 22:12:33 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * config.gcc (ultrix): New alternative. + + * i386.md (extend*): Change opcode to movsx. Was movs. + +Wed Oct 31 09:41:27 1990 Tom Wood (wood at dg-rtp.dg.com) + + * m88k.md: Deleted an old pattern for subtracting 0. + * m88k.md: Deleted patterns for aligned bit-field insns. + * m88k.md: Changed define_expand to define_insn for mulsi3 and + umulsi3. + * m88k.md: Converted various constructs to use conventional + formatting. + * m88k.md (mak patterns): Fixed transcription errors. + +Wed Oct 31 00:05:54 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (init_decl_processing): Predefine the ordinary names + of alloca, abs, memcpy, etc. + + * c-decl.c (duplicate_decls): Allow redefining built-in as static, + but optionally warn. + +Tue Oct 30 14:39:17 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (finish_function): Use DEFAULT_MAIN_RETURN in `main'. + * tm-vms.h (DEFAULT_MAIN_RETURN): Define this. + + * c-parse.y (yylex): Base is not 8 for just `0'. + + * cccp.c (do_define): Invert test of compare_defs. + + * cccp.c (make_definition): Convert newline to newline-newline. + + * Makefile.in (hard-params): Depend on gnulib. + + * m88k.md (divsi3): Delete declarations of gen_... functions. + +Tue Oct 30 14:26:20 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c: Rework handling of comparisons to generalize better to + machines that use registers to hold condition code information. + (prev_insn_cc0*): Just store last rtx assigned to cc0 in prev_insn_cc0. + (find_comparison_args): New function. + (fold_rtx): Folded value of cc0 is the value previously stored into it. + Rework handling of comparisons: use find_comparison_args to see what + is being compared. If they are constants, compute the result of the + comparison. If not, see if the two operands are equivalent (only for + non FP or non-IEEE FP). Then see if we have already seen a comparison + involving these operands that lets us give a value to this comparison. + True comparisons return STORE_FLAG_VALUE, not 1. + (fold_cc0): Deleted. + (predecide_loop_entry): Call cse_insn on a copy of each insn at the + loop test to propagate the values of items at the start of the loop. + Then use fold_rtx to see if we know the result of the jump. + (record_jump_equiv): Use new function find_comparison_args. + (cse_insn): Just record value of CC0 if set; don't call fold_cc0. + Don't modify PREV_INSN (insn) if INSN is a copy. + (cse_main): Initialize const_true_rtx to rtx for STORE_FLAG_VALUE. + + * jump.c (comparison_code_p, comparison_dominates_p): New functions. + (thread_jumps): Use comparison_dominates_p. + Remove debugging code. + * reorg.c (condition_dominates_p): Use new function + comparison_dominates_p. + + * emit-rtl.c (next_cc0_user): Don't get confused by being call with a + copy of an insn; use INSN_UID to check for an insn in a delay slot. + + * rtl.c (reg_note_name): Add name for new REG_LABEL note. + + * emit-rtl.c (make_insn_raw): No longer have JUMP_LABEL for INSN. + +Tue Oct 30 09:26:15 1990 Tom Wood (wood at dg-rtp.dg.com) + + * Update what strings in files edited so far. + * tm-m88k.h, tm-m88kdgux.h, tm-m88ksv4r.h: Introduce VERSION_STRING + and VERSION_INFO to more appropriately identify the compiler. + + * tm-m88k.h (ASM_OUTPUT_OPCODE): Stop processing the opcode if `%' + is encountered. + * out-m88k.c (print_operand): Add a tab to %L output. Delete + unused cases. + + * m88k.md: Rework the movstrsi pattern and provide call_block_move + and call_block_move_loop to support expand_block_move. + * out-m88k.c: Rework the block move functions. + * make-m88k, make-m88kdgux: Eliminate movstr.h. + + * m88k.md, out-m88k.c: Eliminate assembler comments. + + * m88k.md (ashlsi3 ashrsi3 lshlsi3 lshrsi3): Eliminate warnings + about out of range shifts. + + * tm-m88k.h, out-m88k.c: Rename CONDITION_CODE_REGNUM CC0_REGNUM. + +Mon Oct 29 18:06:54 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * final.c (final_end_function): Handle dwarf output. + (final_scan_insn): Likewise. + (output_source_line): Likewise, using ASM_OUTPUT_DWARF_LINE. + * toplev.c (rest_of_decl_compilation): Likewise. + (rest_of_compilation, main): Likewise. + * varasm.c (assemble_variable): Likewise. + * flags.h (enum debugger): Define DWARF_DEBUG. + + * cccp.c (do_define): Rewrite criterion for warning. + Don't warn if -D redefining symbol with constant numeric value. + + * toplev.c (output_file_directive): New function. + * sdbout.c (sdbout_filename): Deleted. + * tm-3b1.h, tm-att386.h, tm-encore.h, tm-m88k.h, + tm-mot3300.h, tm-tahoe.h, tm-vaxv.h (ASM_FILE_START): Use that. + + * c-decl.c (named_labels): No longer static. + (pushlevel): Clear named_labels. + (poplevel): Don't clear it here. + +Mon Oct 29 13:32:57 1990 Michael Tiemann (tiemann at cygnus.com) + + * Makefile.in: Update dependencies for various files, mostly cplus-* + files. + + * rtl.def: Remove Sep 26 that added JUMP_LABELs to INSN and + CALL_INSN. + * rtl.h: Add REG_LABEL register note. For INSN and CALL_INSN, the + presence of this register note has the same meaning that a non-NULL + JUMP_LABEL would have with the Sep 26 change. + * jump.c (jump_optimize): Revert to clearing JUMP_LABEL field of + JUMP_INSNs only. + (mark_jump_label): If INSN is an INSN or a CALL_INSN, add a + REG_LABEL note if a LABEL appears (and no such note already exists). + ??? Once recorded, this information appears never to be used. + + * jump.c (delete_jump): The deletion of INSN must take place when + INSN is a simple jump. Also, don't try to optimize if we come + across an insn with the reorg-generated pattern (USE (INSN ...)). + + * cplus-lex.c, cplus-dbxout.c: Remove vestigial support for dumping + and undumping the compiler. + + * Merge cplus diffs from Kenner. + * cplus-cvt.c (convert_to_integer): Fold the COND_EXPR we construct. + * cplus-typeck.c (build_conditional_expr): Ditto in three places. + * cplus-lex.c (yylex,do_pending_inlines): Add conditionals for + _IBMR2. This hair will disappear when pcccp support is merged, but + needed for now. + * cplus-tree.h: Conditionalize use of non-int bitfield types on + ONLY_INT_FIELDS. Also, remove duplication declarations of + get_temp_name, get_temp_aggr, and get_temp_regvar; add declaration + of build_decl_list. + +Mon Oct 29 11:45:03 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * fixincludes: Fix missing semi in rusers.h. + +Mon Oct 29 07:07:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * flow.c (mark_used_regs): When converting "...*p...; q = p + size" + to "q = p, ...*q..., q = q + size", show that Q is needed after INSN. + + * romp.md (negdi): Directly generate assembly code rather than + converting this into a MINUS. + + * fold-const.c (fold, case COND_EXPR): Add missing condition in test + for (A ? 0 : A). + +Sun Oct 28 15:01:19 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * flow.c (find_basic_blocks): An indirect jump can go + to any label whose address is used as data. + + * m68k.md (zero-extend QI): Use gen_rtx, not change_address. + + * Makefile.in (USER_H): List va-*.h explicitly. + (toplev.o): Depend on RTL_H. + (stamp-*): Depend on move-if-change. + (install-headers): Depend on various header files. + (install-man): Depend on gcc.1. + (gcc.o): Depend on gvarargs.h and obstack.h. + + * Makefile.in: Make sure every `if' has an `else'. + + * c-typeck.c (build_binary_op_nodefault): Prevent warning for + variable shift count. + + * i860.md (movsf): Handle moving from CONST_DOUBLE to reg or mem. + +Sun Oct 28 09:39:14 1990 Michael Tiemann (tiemann at cygnus.com) + + * jump.c (delete_jump): The deletion of INSN must take place when + INSN is a simple jump. Also, don't try to optimize if we come + across an insn with the reorg-generated pattern (USE (INSN ...)). + + * sparc.md, tm-sparc.h, out-sparc.c: Significantly rewritten to take + advantage of new 2.0 optimization capabilities. + * old-sparc.md, tm-old-sparc.h, out-old-sparc.c: These are copies of + the above files before the rewrite. They may be interesting for + measuring performance of old vs. new machine description idioms. + +Sun Oct 28 00:22:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (scan_loop): Don't think that a branch to an end-test of + a containing look is actually the branch to the end-test of the + outer loop. + + * reload.c (indirect_ok): Deleted. + (find_reloads): Accept new arg IND_LEVELS instead of old IND_OK; + pass this to find_reloads_address and find_reloads_toplev. + (find_reloads_toplev): Accept IND_LEVELS and pass to + find_reloads_address. + (find_reloads_address): Accept IND_LEVELS and pass it on to + find_reloads_address_1. + When calling ourself recursively for a MEM as an address, show + one indirect level has been used. + (find_reloads_address_1): Accept IND_LEVELS and pass it to ourselves + in recursive calls and to find_reloads_address. + * reload1.c (spill_indirect_levels): New var; used to be + spill_indirect_ok. + (reload): Compute number of levels of indirection and set it into + spill_indirect_levels. + (reload, reload_as_needed): Pass spill_indirect_levels not + spill_indirect_ok. + + * reload.c (find_reloads): Make similar change to "V" as "O". + + * reload1.c (eliminate_regs): For binary operations, don't call + recursively on second arg if null (for EXPR_LIST). + (eliminate_regs_in_insn): Perform register elmination in the + REG_NOTES of an insn when we are doing it for the last time. + + * vax.md (call_value_pop): Use correct operand number for number + of bytes popped. + + * tm-romp.h (EXTRA_CONSTRAINT): Ensure we ignore reg_renumber if + register allocation hasn't been done yet. + + * function.c (init_function_start): Initialize reg_renumber to zero; + it is checked in rtx_renumbered_equal_p. + + * loop.c (loop_optimize): Ensure we assign a new LUID to all + special notes, including NOTE_INSN_FUNCTION_BEG (0). + +Sat Oct 27 12:22:46 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * out-a29k.c (print_operand, output_prolog): Don't try to fill delay + slots with parts of epilogue or prologue unless -O -fdelayed-branch. + + * tm-rs6000.h (STRUCTURE_SIZE_BOUNDARY): Should be 8. + + * reorg.c (mark_target_live_regs): Ignore REG_DEAD notes for pseudos; + they must not have gotten hard registers. + +Fri Oct 26 11:30:28 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gcc.c (main): Set machine_suffix before reading specs file. + + * c-typeck.c (build_binary_op_nodefault): Warn for bad shift counts. + + * stor-layout.c (layout_record): + BITFIELD_NBYTES_LIMITED affects bitfields only. + + * loop.c (note_addr_stored): Don't assume PLUS in address is aggregate. + +Fri Oct 26 00:46:09 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-tree.h: Declare `build_type_conversion' once instead of + three times. + + * loop.c (loop_skip_over): Handle machines without cc0. + (labels_in_range_p): Fixed typo where this function returned 0 when + it meant to return 1. + (check_for_endtest): New function. Returns non-zero when + argument is a simple conditional test insn (suitable for being the + endtest of a loop). + (strength_reduce): Use `check_for_endtest' to identify the endtest. + Also fixed some typos in comments. + (can_eliminate_biv): Use `check_for_endtest' here, too. + (get_condition): Generalized to handle machines without cc0. Now + THIS_CC_RTX is the value of the cc rtx. + + * integrate.c (expand_inline_function): Conditionalize away + cc0-specific code with HAVE_cc0. + (try_constants): Add appropriate declaration for ORIG. + (try_fold_condition): Generalized to work for non-cc0 condition + values. + + * cplus-type2.c (digest_init): Add missing declaration of FIELD. + * rtl.h: Add missing declaration of plus_constant_for_output. + * jump.c (can_reverse_comparison): Fixed typo. + (delete_jump): Made to work without cc0_rtx. + +Fri Oct 26 00:01:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c: Conditionalize references to CC0_RTX on HAVE_cc0. + + * reload.c (find_reloads): For the `o' constraint, if IND_OK is + true, use offsettable_memref_p instead of the nonstrict version. + + * jump.c (delete_jump): If HAVE_cc0 is not defined, it is not safe to + delete previous insn that sets a condition code register, because it + might not be dead. Rework to look at all registers dying in this insn + and delete the first previous insn that sets any such register if that + is all it does. + + * jump.c (jump_optimize): Remove extraneous call to next_active_insn + in optimization of "if (...) x = 1; else ...; if (x) ...". + + * cse.c (predecide_loop_entry): Don't set cc_value to null and then + stick it in the rtl. + + * rtlanal.c (find_next_ref): Deleted from here. + * explow.c: Include hard-reg-set.h for find_next_ref. + (find_next_ref): Moved to here. + * Makefile.in (explow.o): Includes hard-reg-set.h. + +Thu Oct 25 21:37:15 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * va-mips.h (va_list): Put __ in member names. + (va_dcl): Rename _va_alist to __va1_alist. + * va-i860.h (__va_struct): Put __ in member names. + * gvarargs.h, va-*.h: (__va_ellipsis): New macro. + (va_dcl): Use that. + + * c-typeck.c (convert_for_assignment): For functions, reverse the + usual criterion for warning about const vs non-const. Volatile also. + + * m88k.md, tm-m88k.h, out-m88k.c: Rewrites by wood@dg-rtp.dg.com. + * tm-m88kdgux.h, tm-v88r32.h, tm-m88ksvr4.h: New files. + * xm-m88kdgux.h, xm-v88r32.h, xm-m88ksvr4.h: New files. + * make-m88k, make-m88kdgux: New files. + * config.gcc (m88k-dgux, m88k-v88r32, m88k-svr4): New alternatives. + + * gvarargs.h, gstdarg.h: Include alternate file for m88k. + + * expr.c (expand_expr): For ARRAY_REF, preserve const and volatile. + + * expr.c (expand_builtin): Handle strcmp and memcmp with function calls + if can't be open coded. + + * function.c (expand_function_end): Round trampoline addr to init. + (round_trampoline_addr): Fix braino in alignment. + +Thu Oct 25 14:54:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c: Now includes insn-config.h. + (jump_optimize): inequality_comparisons_p takes only one operand again. + (can_reverse_comparison_p): Handle case where a register is used + for the condition code; if we can't easily find the COMPARE that + was used to set the register, say we can't reverse the comparison. + * Makefile.in (jump.o): Now includes insn-config.h. + + * jump.c (jump_optimize): Put back change removed on Oct 21st; + emit_store_flag has now been updated. + + * rtlanal.c (inequality_comparisons_p): Reject any ordered + comparison; we need not just reject when comparing against + cc0_rtx. + * recog.c (next_insn{,s}_test_no_inequality): inequality_comparisons_p + again has only one operand. + * genattrtab.c (cc0_rtx): No longer needed; remove change of Oct 21. + + * genconfig.c (have_cc0_flag): New variable. + (walk_insn_part): Set it when we see CC0. + (main): Write #define HAVE_cc0 when it is set. + * flow.c: Now includes insn-config.h. + * Makefile.in (flow.o): Likewise. + + * combine.c (subst): If X and FROM are the same register number, + but in different modes, force the combine not to be done. + Add missing initialization of undobuf.storage. + +Thu Oct 25 11:34:35 1990 Michael Tiemann (tiemann at cygnus.com) + + * sched.c (new_sometimes_live): Protect this function in case it is + called with (OFFSET,BIT) that evaluates to >= MAX_REGNO. + + * jump.c (sets_cc0_p): Conditionalized to abort if called when + machine does not support cc0. + + * rtlanal.c (reg_set_p): Now non-static. + * rtlanal.c (rtx_varies_p): Handle LO_SUM more accurately. + * rtlanal.c (find_next_ref): New function. Returns the insn that + next references REG after INSN, or 0 if REG is clobbered before next + referenced or it cannot easily find a reference to REG. + + * recog.c (next_insn_tests_no_inequality): Conditionalized on + HAVE_cc0. + + * rtlanal.c (inequality_comparisons_p): Takes new argument + THIS_CC0_RTX which is the rtl for the condition code value we are + concerned about testing. All callers changed. + + * flow.c (propagate_block,mark_used_regs): Conditionalize + specialized cc0 handling only if HAVE_cc0 is defined. + + * genemit.c (gen_exp): In REG case, If CC0_REGNUM is defined, + save space by using REG_CC0_RTX instead of allocating a new + (REG, mode, CC0_REGNUM) rtx if the mode is SImode. + + * final.c (output_addr_const): Handle PC for P.I.C. code generation. + Also, put parens around CONST expressions so that precedence can be + maintained. + * final.c (final_scan_insn): Don't look for redunant compares + except when HAVE_cc0 is defined. + Also, use `find_cc' to locate the rtx functioning as the + condition code register in order to perform appropriate calls + to `alter_cond'. + + * expr.c (expand_expr): Supply missing arg in calls to `store_expr'. + + * expmed.c (emit_store_flag): New argument COMPARISON is the + comparison operation whose result we store. + + * recog.c (offsettable_address_p,adj_offsettable_operand): Use + `plus_constant_for_output' instead of `plus_constant' since we + are testing conditions which rely on being able to add small + offsets to e.g. LO_SUM operands. + * explow.c (plus_constant): No special handling for LO_SUM. It is + not valid to add a constant to a term with LO_SUM, since the + constant may need to be added to the high bits that form the sum, + and those high bits are not readily available. + * explow.c (plus_constant_for_output): Same as `plus_constant' + except that we do allow adding constants to LO_SUM terms. This + function works only in special cases such as for + `adj_offsettable_operand' and `offsettable_address_p'. + + * emit-rtl.c: Declare reg_cc0_rtx which is like cc0_rtx, but + is a register instead of a special form. reg_cc0_rtx should + be used when representing the condition code register on a + machine where condition codes are only set if explicitly set. + For machines which allow arbitrary registers to be used as + condition code registers (such as the MIPS and 88k), normal + pseudo registers should be used instead. + * emit-rtl.c (next_cc0_user,prev_cc0_setter): Conditionalized + on HAVE_cc0. + * emit-rtl.c (find_cc): New function. Given INSN, returns + the rtx of what functions as the condition code register for + INSN. On machines which use cc0_rtx, this is always cc0_rtx. + On machines which have a dedicated register for cc0, this is + that register. On machines which allocate pseudos for holding + condition codes, this is the pseudo found in a REG_CC0 note. + Otherwise, this function returns 0. + * emit-rtl.c (init_emit_once): Allocate `reg_cc0_rtx' if + CC0_REGNUM is defined. + + * cse.c (make_regs_equiv): Don't consider making a reg + equivalent to another reg whose class is NO_REGS. + * cse.c (canon_reg): Don't canonicalize a register to + one whose class is NO_REGS. + * cse.c (fold_rtx): Conditionalize code for handling cc0_rtx + with HAVE_cc0. + * cse.c (predecide_loop_entry): Generalize code to use either + a register or cc0_rtx. + * cse.c (cse_insn): Conditionalize code for handling cc0_rtx + with HAVE_cc0. + + * combine.c (combine_instructions,try_combine,subst): + Conditionalize code handling cc0_rtx with HAVE_cc0. + * combine.c (simplify_set_cc0_and): Abort if HAVE_cc0 is not + defined. + * combine.c (try_distrib): Add break at end of switch cases. It is + dangerous to leave the last cases of a switch statement to fall + through since new cases added after will get fallen into. + + * recog.c (validate_change): Always succeed for an asm insn, + since recog always fails to recognize asm insns. This is + needed for virtual register instantiation in asm insns. + + * cse.c (cse_main): When following jumps, notice whether a + particular basic block causes CSE_JUMPS_ALTERED to become set. When + this happens, repeat the scan. + * cse.c (refers_to_mem_p): Changed parameter name REG to BASE, + which is more accurate. Also, taught it how to cope with + LO_SUM rtl constructs. + +Wed Oct 24 15:36:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * calls.c (store_one_arg): Accept additional arg, FNDECL. + Don't save argument area if it is within the REG_PARM_STACK_SPACE + area, but mark the area in use. + (expand_call): If ACCUMULATE_OUTGOING_ARGS and REG_PARM_STACK_SPACE, + treat the stack area for the registers as be clobbered by the called + routine (e.g., if it was compiled without -O) and save and restore + it if it was previously used for arguments in a similar manner to + the remainder of the argument area (done by store_one_arg). + + * calls.c (expand_call): Support new description macro, + STACK_PARMS_IN_REG_PARM_AREA. + * function.c (assign_parms): Likewise. + +Wed Oct 24 12:47:21 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-typeck.c (build_array_ref): Use main variant for value type. + + * genoutput.c (output_prologue): Let SEPARATE_AUX_OUTPUT + cause aux-output.c not to be included. + Makefile.in (aux-output2.c): Copy aux-output.c and then compile it. + + * reload.c (subst_reg_equivs): Treat HIGH like other constants. + + * reload.c (push_reload): When testing hard reg for validity, + test subsequent regs only against class, not for HARD_REGNO_MODE_OK. + +Tue Oct 23 22:49:33 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (collect_expansion): Skip ## at start after the error. + + * gcc.c (default_compilers): Handle - as suffix. + (main): Make that a special case; it matches only exactly `-'. + +Tue Oct 23 22:40:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * romp.md (store{s,h,q}i pattern): Allow "b" for clobbered pseudo + in addition to "d" in first alternative. + + * reload1.c (eliminate_regs): IF_THEN_ELSE isn't a unary operation. + +Tue Oct 23 20:35:13 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * m68k.md (zero-extend QI): When pushing, store value at 1(sp). + +Mon Oct 22 12:27:08 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (rescan): In the loop that handles numbers, discard \newline. + Also make `..' terminate a preprocessing number. + + * Makefile.in (tmpgnulib, stamp-gnulib2): Do `set -e'. + + * gcc.c (default_compilers): Give __GNUC__ value 2. + Don't define it for .S files. + +Mon Oct 22 07:33:42 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (emit_indirect_jump): New function; now checks predicate + of indirect_jump. + * stmt.c (expand_computed_goto, expand_goto): Use new function instead + of directly emitting indirect jump. + + * flow.c (mark_set_1): Make LOG_LINKS for hard registers. + * combine.c (subst): Make new macro COMBINE_RTX_EQUAL_P which + considers things equal if they are the identical RTX or the same + register with the same mode; use to see if something changed and + if we have a match. + + * cccp.c (S_ISREG): Use argument instead of global. + (main): Correct sense of S_ISREG usage. + (check_precompiled): Use S_ISREG. + + * flow.c (mark_used_regs): Don't allow reg_next_use to point to + a NOTE; either point it to replacement insn or invalidate it. + +Mon Oct 22 00:13:12 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (xdecls): No warning unless -pedantic. + +Sun Oct 21 17:49:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genattrtab.c (cc0_rtx): Define, referenced in rtlanal.c. + + * jump.c (jump_optimize): Remove code that depends on changes to + emit_store_flag that haven't been made yet. + + * expmed.c (extract_bit_field): Correctly check for bitfield + completely filling a mode. + + * out-romp.c (output_epilogue): Correctly write number of words of + arguments into trace table. + + * calls.c (store_one_arg): Fix error in change of Oct 19th. + + * reorg.c (mark_target_live_regs): Revert back to old behavior + of scanning all insns, even those in delay slots. + (fill_simple_delay_slots): Need only call update_block if we move + an insn across a label. + + * Makefile.in (LIBFUNCS): Use consistent naming convention for + comparison routines; gnulib.c was always correct. + + * function.c (assign_parms): Don't overwrite DECL_INCOMING_RTL when + we are called for the second time. + + * integrate.c (initialize_for_inline): Don't make a new return label + here; the maximum label number has already been computed. + (save_for_inline_copying, save_for_inline_no_copy): Do it here instead. + + * reload.c (find_reloads_address): For indirect address where the + underlying address is also invalid, ensure that we substitute into + the MEM that we will use. + +Sun Oct 21 14:12:47 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * reload.c (find_equiv_regs): Reject reg that overlaps goal. + + * expmed.c (extract_bit_field): For big fields, make sure + value really goes in the target. + + * expr.c (expand_builtin): Delete __builtin_varargs. + (EXPAND_BUILTIN_SAVEREGS): New macro says how to do __builtin_saveregs. + + * calls.c (expand_call): No "can't inline" warning if -fno-inline. + + * stddef.h: Add missing #endif. + +Sat Oct 20 14:33:14 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * function.c (round_trampoline_addr): New function. + (trampoline_address): Use that. + +Fri Oct 19 15:13:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * calls.c (store_one_arg): Don't mark stack area used until after + we have written into it; if we do it before, the restore might + clobber a function result being put into that stack area. + + * objc-actions.c (print_lang_statistics): Add empty function. + + * recog.c (inequality_comparisons_p): Deleted from here. + * rtlanal.c (inequality_comparisons_p): Moved to here; not static. + + * a29k.md (extendhisi2): Fix typo in define_split. + + * Makefile.in (integrate.o): Includes integrate.h. + (reorg.o): Includes insn-flags.h. + +Fri Oct 19 14:49:26 1990 Michael Tiemann (tiemann at cygnus.com) + + * sdbout.c (sdbout_symbol): If a variable belongs to an inline + function, the decl's rtl may not be rewritten by alter_reg. So if + we have a variable allocated to a pseudo, just get the hard register + number from `reg_renumber'. ?? But I thought that COFF was so + losing that it was decided one could not represent debug info for + inline functions in COFF. + +Fri Oct 19 13:21:25 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * fold-const.c (split_tree): Use NEGATE_EXPR to negate *conp. + +Fri Oct 19 00:15:21 1990 Michael Tiemann (tiemann at cygnus.com) + + * version.c: Bumped to 1.90.03. + + * tree.c: Added facility for gathering statistics on the number of + tree nodes allocated and the size in bytes they occupy. The + statistics are by tree_node_kind, which is almost like using the + tree code letter, but has more resolution for dealing with different + kinds of `x' nodes. The facility is enabled by compiling the + compiler with -DGATHER_STATISTICS and using the -fstats flag. + + * expr.c (do_tablejump): Emit a BARRIER after the jump that performs + the tablejump. + + * cplus-typeck.c (c_expand_return): Rewritten so that the function + value return register is not used except as a target of the function + return value. + + * cplus-tree.c (build_cplus_new): New argument WITH_CLEANUP_P + controls whether this functino should build its result with a + cleanup or not. All callers changed. + + * cplus-lex.c: File updated to latest changes to c-parse.y's lexical + analyzer. + + * cplus-except.c (cplus_expand_raise): New parameter FOR_RERAISE + is used to control whether to output extra gotos or not. When + nonzero, the compiler can avoid writing out the extra gotos that are + otherwise needed to avoid warning messages. + + * cplus-decl2.c (flag_short_double): Add support for this option. + + * cplus-decl.c (finish_function): Always cause returns to jump to + the return label. This allows -Wreturn to give meaningful error + messages. + + * jump.c (invert_exp): Make this non-static. + (jump_optimize): Reorganization and simplification of main inner + loop. Comments added explaining what the optimizers are looking + for. New optimization added that optimizes for consecutive testing + of an inequality test followed by an equality test (or vice-versa). + Changes made to accommodate reorg.c on Sparc. Code for + cross-jumping return statements was previously dead in this + function; as a result of the reorganization, it is now live. + (find_cross_jump): Added temporary variable PREV1 to hold return + value of `prev_nonnote_insn' instead of calling the function 3 times + in a row. Also changed so that USE or CLOBBERS are not cross-jumped + unless some real insns are also cross-jumped. This helps reorg. + (redirect_jump): Fixed a return that returned no value so that it + returns 1. + (rtx_renumbered_equal_p): Test that reg_renumber is nonzero before + using it. We may want to call this function earlier than by the + time that array has been initialized. + + * integrate.c (save_for_inline_{copying,nocopy}): New functions to + replace `save_for_inline'. save_for_inline_copying saves the rtl + for inline functions by copying the rtl to the + maybepermanent_obstack. It is called when the rtl of the current + function is going to be compiled immediately. + save_for_inline_nocopy takes advantage of the fact that inline + function rtl is already allocated to the maybepermanent_obstack, and + need therefore not be copied if it's not going to be modified by the + compiler (such as by `rest_of_compilation'). + ({initialize_for,finish}_inline): New helper routines for + save_for_inline_... functions. + (note_modified_parmregs): Function called by `mark_stores' to note + whether parameters are assigned to in the body of an inline + function. + New interface, integrate.h, provides declarations for functions used + by other routines that might want to copy chunks of rtl. + ({save,try}_constants): Now global (for integrate.h). + (mark_stores): Ditto. + (try_fold_condition): Ditto. + + * dbxout.c (dbxout_symbol): If a variable belongs to an inline + function, the decl's rtl may not be rewritten by alter_reg. So if + we have a variable allocated to a pseudo, just get the hard register + number from `reg_renumber'. + + * varasm.c (output_const_pool): No longer static. + (assemble_variable): Do output debugging information for global + register variables. GDB does the right thing for global register + variables. + + * toplev.c: New flag `warn_inline' for warning when a function + declared inline was not in fact inlined. Also, new flag + `flag_no_inline' which disables function inlining, but retains + other properties of inline functions (such as lazy compilation + and write-only-if-needed). + * toplev.c (compile_file): Changed logic for inline function + handling to work with `warn_inline' and `flag_no_inline'. + Also modified to call `save_for_inline_nocopy' when insns are to be + saved but not immediately compiled. + + * function.c (instantiate_decls): If instantiating a function + which was saved for inline expansion, preserve the rtl created + by the instantiation as well. + + * flags.h (flag_no_inline): New flag; if nonzero, then no + calls are inlined, regardless of their declaration. We still + save the insns for these functions in DECL_SAVED_INSNS so that + the functions need not be written if they are never called. + + * calls.c (expand_call): If `flag_no_inline' is set, don't + inline the call, regardless of whether it was declared inline + or not. + +Thu Oct 18 13:10:26 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * rtl.def (CODE_LABEL): Add new string field. + * rtl.h (LABEL_NAME): Define macro for access. + * emit-rtl.c (gen_label_rtx): Initialize it to 0. + * stmt.c (expand_label): Store proper name of label. + * final.c (final_scan_insn): Call sdbout_label. + + * tree.h (built_in_function): Add BUILT_IN_VARARGS. + * c-decl.c (init_decl_processing): Declare __builtin_varargs. + * expr.c (expand_builtin): Generate code for it. + Uses new macro EXPAND_BUILTIN_VARARGS. + + * sdbout.c (SDB_IS_FAKE): Macro deleted. + (MAKE_LINE_SAFE): New macro. + (sdbout_begin_block, sdbout_end_block, sdbout_end_function): Use it. + (sdbout_one_type): Delete spurious second arg in all callers. + (sdbout_types, sdbout_end_function): + Use sdbout_dequeue_anonymous_types. + (sdbout_label): New function. + + * expr.h (FUNCTION_ARG_BOUNDARY): Default is now PARM_BOUNDARY. + + * gvarargs.h, va-*.h (va_dcl): + Add ellipsis so current_function_varargs is set. + + * jump.c (jump_optimize): Exit push-optimize loop at end of insns. + +Thu Oct 18 07:09:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c: Major reorganization. Many special cases have been moved + into more general code and an overall restructuring has been done. + Numerous bugs have been fixed. Highlights: + (dbr_schedule): First make list of all insns needing filling. Then + iterate for two passes. In each pass, try two methods of filling + delay slots, then do some canonicalizations, which may create more + insns to fill. + (fill_simple_delay_slots): Now uses list of insns that need filling, + rather than making such a list. + Enhance code that finds insns when code paths merge to allow multiple + uses of the label as long as all uses are in the skipped code. + (struct resource): Notice volatile memrefs. + (stop_search_p): Allow option to continue when label is reached. + (find_end_label, make_return_insns): New functions; when we have a + filled branch that is really a RETURN, first convert it to a jump + to a return label and then later see if the insns in the delay slots + are also valid for a RETURN. + (mostly_true_jump): Test for branch to loop beginning rather than + branch at end of loop. Also, conditional return insns predict false. + (own_thread_p): New function to replace fall_through_to_p. + (try_merge_delay_insns): Only support merging insns already in an + insns delay list. + (get_branch_condition, condition_dominates_p): New functions. + (steal_delay_list_from_{target,fallthrough}): New functions to + replace steal_delay_list. + (redundant_insn_p): New function. + (update_block, mark_target_live_regs, dbr_schedule): When moving + an insn not at the front of the basic block to a delay slot, + leave a "ghost" USE so that we can track things livened and killed. + (fill_slots_from_thread): Eliminate use of static vars for number + of slots to fill and already filled. + Try to modify an insn that follows a register-register copy to use + the original register; this may create a delay-slot opportunity. + (try_hoist_target{,_1}): Deleted. + (relax_delay_slots): Rewritten to just perform canonicalizations + previously done elsewhere. No actual delay slot filling is done + here. Any new delay slots created will hopefully be filled in the + next pass around the loop in dbr_schedule. + + * expr.c (emit_push_insn): Don't try to compute a SUBREG of a + hard register in a non-integer mode when pushing a "partial" arg. + + * recog.c (validate_change, apply_change_group): After reload, ensure + that operands meet the constraints by calling constrain_operands. + (validate_replace_rtx_1): Consider two rtx equal if they refer to + the same register. + + * jump.c (jump_optimize): Extend change of Oct 16th to handle + the other usage of find_equiv_reg; remove invalid death notes there. + + * rs6000.md, tm-rs6000.h, out-rs6000.c, xm-rs6000.h, make-rs6000: + New files. + + * out-a29k.c (extract_subword): Use gen_{high,low}part from + an FP CONST_DOUBLE if host and target float formats are the same + or REAL_IS_NOT_DOUBLE. + + * out-romp.c (output_fpop, output_fpops): Provide fr0 as a scratch + register unless it is used in the insn. + + * romp.md: In combined set CC0 and move, optimize case where move + is nop. + (DF moves): Fix typo in generation of `get' insn. + Don't split if input is CONST_DOUBLE because we can't easily + generate the proper constants. + (call patterns): Copy data area address via a pseudo to allow + better CSE'ing. + + * tm-romp.h (RTX_COSTS): Memory is expensive, except for a reference + to our own data area, which is very cheap. + (ADDRESS_COST): References to the constant pool are as cheap as + register + offset, since that's what it will be. + + * emit-rtl.c (gen_{low,high}part): Can often extract word from FP + CONST_DOUBLE when host and target floating formats agree. + (add_insn_after): No longer static. + + * reload1.c (reg_equiv_memory_loc): Renamed from reg_equiv_stack_slot + and now static. + (reload): If have equivalence with constant that is not a legitimate + constant operand, force it into memory and handle this as an + equivalence to memory. + * reload.h (reg_equiv_stack_loc): Deleted. + +Wed Oct 17 20:50:58 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gcc.c, cccp.c (main): Use TARGET_VERSION if -v. + + * expmed.c (extract_bit_field): Typo in last change. + + * Makefile.in (tmpgnulib): Support assembler files named *.asm. + + * gcc.c (do_spec_1): Null-terminate error message. + + * sdbout.c (sdbout_symbol): Handle subreg as DECL_RTL. + This happens for vars from the parms of inline functions. + * dbxout.c (dbxout_symbol): Likewise. + + * genattr.c (fancy_abort): New function, as in gen*.c. + +Wed Oct 17 14:53:48 1990 Michael I. Bushnell (mib at geech.ai.mit.edu) + + * pcp.h: New file. + + * cccp.c: Support use of precompiled files + Include "pcp.h". + (no_precomp, stringlist, stringlist_tailp): New variables. + (union hashval): New field `keydef'. + (enum nodetype): New alternative `T_PCSTRING'. + (main): Support -noprecomp. + Use write_output to write output. + (rescan): Call pcstring_used for T_PCSTRING symbols. + (do_include): New local variables pcftry, pcfname, pcf, pcfbuf, + pcfbuflimit, and pcfnum. + Check for possible use of precompiled files. + (check_precompiled): New function. + (check_preconditions): New function. + (pcfinclude): New function. + (pcstring_used): New function. + (write_output): New function. + (create_definition): New function. + (do_define): Moved most of the work into create_definition. + (dump_single_macro): New function. + (dump_all_macros): Moved most of the work into dump_single_macro. + (dump_defn_1): New argument OF. + (dump_arg_n): New argument OF. + + * cccp.c: Support generation of precompiled files + (pcp_outfile, pcp_inside_if): New variables. + (struct definition): New field `predefined'. + (main): Support -pcp. + (rescan): Don't expand macros outside #if during -pcp. + (special_symbol): Error for most special symbols during #if in -pcp. + Output precondition for T_CONST and T_SPEC_DEFINED symbols. + (eval_if_expression): Set and clear pcp_inside_if. + (do_ifxdef): Output preconditions. + +Tue Oct 16 13:22:05 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * stor-layout.c (layout_record): For PCC_BITFIELD_TYPE_MATTERS, + make it true that zero-length field affects alignment of next field. + + * rtlanal.c (get_integer_term, get_related_value): Moved from cse.c. + + * jump.c (jump_optimize): When reusing value via find_equiv_reg, + delete obsolete death note. + + * expmed.c (extract_bit_field, store_bit_field): + Handle fields wider than a word. + Restrict special case for word-sized field to aligned words. + + * expmed.c (extract_bit_field, store_bit_field): Don't let + BESTMODE be bigger than the insn can handle. + + * Makefile.in (tmpgnulib): Fix typos handling LIBFUNCS_EXTRA. + + * cccp.c (handle_directive): Turn on code to handle # LINENUM, + and move initializations past the label `old_linenum'. + + * c-decl.c (grokdeclarator): If traditional, make bitfields unsigned. + (finish_struct): Don't do that here. + + * fixincludes (CTRL): Don't put quotes around a quote. + + * stddef.h (size_t): Also inhibit if _SIZE_T_. + +Mon Oct 15 13:15:30 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (grokdeclarator): Make flag_signed_bitfields work + for int and for typedefs. + +Sun Oct 14 21:28:32 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * flow.c (life_analysis): No hard regs for any pseudos live at setjmp. + + * c-decl.c (duplicate_decls): Don't suppress warning for fn defn + after implicit declaration, if fn has already been defined. + +Fri Oct 12 15:54:11 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (xdecls): Allow ellipsis after parm decls. + Call c_mark_varargs. + * c-decl.c (start_function): Clear c_function_varargs. + (c_mark_varargs): New function. Set it. + (store_parm_decls): Maybe call mark_varargs. + * function.c (init_function_start): Clear current_function_varargs. + (mark_varargs): New function. Set it. + +Thu Oct 11 13:15:36 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * genattrtab.c (fancy_abort): New function, as in gen*.c. + + * expr.c (saveregs_value): New variable. + (init_expr, save_expr_status, restore_expr_status): + Init, save, restore the variable. + (expand_builtin): Don't call __builtin_saveregs twice in one function. + + * va-*.h: Rename all structure fields to start with __. + * va-pyr.h: Rename variables also. + (va_start): Delete the unmatched {. + (va_end): Now a nop. + +Wed Oct 10 22:03:20 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * va-sparc.h (__va_ctl): Rename fields to start with __. + +Tue Oct 9 12:55:48 1990 Michael Meissner (meissner at osf.org) + + * Allow configuration to specify size of a wide character. + (WCHAR_TYPE_SIZE): New parameter. + (WCHAR_UNSIGNED): New parameter, says whether type is signed. + + * c-decl.c (WCHAR_TYPE_SIZE): Define if not defined. + (WCHAR_UNSIGNED): Likewise. + (wchar_type_node, signed_wchar_type_node, unsigned_wchar_type_node): + (wchar_array_type_node): New variables. + (init_decl_processing): Init them. + * c-tree.h: Make them extern. + + * c-common.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Define them. + (combine_strings): Handle them. + * c-parse.y (init_lex, yylex): Likewise. + + * c-typeck.h (digest_init): Use wchar_type_node and + signed_wchar_type_node to get the base type of wide strings, rather + than using int and unsigned. + +Tue Oct 9 14:16:37 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * expmed.c (extract_bit_field): Typo; section for extv used extzv. + + * c-typeck.c (digest_init): Error if union has no name field. + (process_init_constructor): For union, use first named field. + + * flow.c (propagate_block): Include NOTE at end of block in scan. + + * fixincludes: Fix missing semicolon in rstat.h. + + * cccp.c (main): Record the option names used for assertions. + Call make_assertion properly. + +Tue Oct 9 06:18:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (fold_rtx): Call find_best_addr before seeing if we know + what is located at that address. + Don't try to return the contents of an ADDR_DIFF_VEC table; we have + no simple way of representing it. + (cse_insn): Detect SRC == DEST even when DEST is not the canonicalized + form of the value represented by SRC. + + * loop.c (scan_loop): Don't set THRESHOLD until LOOP_HAS_CALL + has been set. + (struct induction): Add field MEM_MODE. + (find_mem_givs, combine_givs_p): Record mode used to access memory + when making DEST_ADDR giv and use it to test validity of + derived address. + + * jump.c (delete_jump): No longer static. + (invert_jump): Allow changing RETURNs to branches and vice versa. + Now returns success/failure indication like redirect_jump. + * rtl.h (delete_jump): Define. + + * calls.c (store_one_arg): Don't expand a `partial' arg into + arg->stack and don't set arg->value to arg->stack_slot for + such args. + Clean up by breaking out common code. + +Mon Oct 8 15:09:31 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * loop.c (can_eliminate_biv_p): Insist that mult_val be positive. + + * Makefile.in (insn-*): Remove semicolon from these rules. + (INSTALL_PROGRAM, INSTALL_FILE): New variables. + (install-*): Use those variables. + (mandir): Default based on manext. + +Mon Oct 8 10:57:14 1990 Michael Tiemann (tiemann at cygnus.com) + + * stmt.c (expand_catch_default): Return 1 if EXCEPT_STACK is + nonzero. + + * c-decl.c (finish_enum): Argument to floor_log2 in + calculation of negprecision was not negated. + +Mon Oct 8 06:50:15 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.h (INSN_ANNULLED_BRANCH_P, INSN_FROM_TARGET_P): New fields. + +Sun Oct 7 23:33:24 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-i386v.h (STARTFILE_SPEC): Handle -p here. + (LIB_SPEC): Not here. + +Thu Oct 4 05:06:02 1990 Michael Tiemann (tiemann at cygnus.com) + + * gcc.c (default_compilers): Define __OPTIMIZE__ for %{O*}, not just + %{O}. This permits the use of -O2, -O3, etc., with predictable + results. + + * expr.c (expand_expr): Do not build new cleanups for + TARGET_EXPRs. Their cleanups are now handled entirely by the + language-specific code that causes them to be generated. + + * function.c ({push,pop}_temp_slots): Do not change + temp_slot_level if within a sequence. GNU C++ must be able to + emit a sequence it is building anywhere at the level the sequence + was initiated. If the level is changed when building a sequence, + temporaries could be unwittingly shared. + + * cplus-tree.def: change print strings for NEW_EXPR and + CPLUS_CATCH_DECL. + + * cplus-dem.c (do_type): Support `long long' types. + + * cplus-decl.c (finish_file): No longer try to emit _init,_fini + records for GNU C++. This was supposed to help the SunOS dynamic + linker link C++ code, but it turned out not to work. + + * cplus-decl.c ({start,finish}_function): Don't emit an extra + binding contour if not in a constructor or destructor. It is not + needed, and saves writing out unneeded debugging info. + + * cplus-class.c (build_method_call): Conditionalize handling of + wrappers and operator->(); these are now only compiled if ESKIT is + #defined. + + * cplus-decl.c (define_label): Updated to treat labels in the same + new fashion that c-decl.c treats them. + + * cplus-*.c: C++ front-end files now support a generic + class-browser interface. It is up to some adventurous hacker to + implement the class browser. + + * cplus-*.c: C++ front-end files no longer #include rtl.h. + +Sun Sep 30 15:53:02 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (make_assertion): New function. + (main): Handle -A by calling make_assertion. + -A- gets rid of predefined macros and those specified earlier. + + * print-tree.c (print_node_brief): Declare i for printing REAL_CST. + + * recog.c (immediate_operand, nonmemory_operand): Don't accept + integer constants if caller wants a floating mode. + +Sat Sep 29 18:40:08 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * reload1.c (emit_reload_insns): Handle preserving death info + with find_equiv_reg. + + * reload.c (find_equiv_reg): Handle INSN_CLOBBERS_REGNO_P. + + * fixincludes: For link pointing outside /usr/include, + use $x rather than $dest. + + * optabs.c (expand_float, expand_fix): Use dconst1, not 1.0. + +Sat Sep 29 06:38:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (try_split): Use emit_insn_after and delete_insn to + ensure that the correct insn chain is maintained in the presence of + SEQUENCEs; be careful if the insn being split has a following BARRIER. + * jump.c (delete_insn): Correctly update insn chain when deleting + insn following or preceeding a SEQUENCE. + +Fri Sep 28 16:07:42 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (yylex): Use REAL_VALUE_TRUNCATE for `f' suffix. + + * fold-const.c (const_binop): Don't initialize REAL_VALUE_TYPE decls. + +Thu Sep 27 14:06:37 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * expr.c (expand_expr): Set MEM_VOLATILE_P from TREE_THIS_VOLATILE. + +Wed Sep 26 00:21:23 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-mips-news.h: New file. + + * out-i860.c (output_size_for_block_move): Don't decrement. + (output_block_move): Decrement initial storing address instead. + + * c-parse.y (yylex): Always try unsigned int if `u' is written. + + * c-typeck.c (build_unary_op): Don't let &* make an lvalue. + + * c-parse.y (initlist): Use [N] rather than case N: for array index. + + * tm-seq386.h (LINK_SPEC): Define it. + + * c-parse.y (yylex): Don't try signed int for nondecimal constant + if -traditional. Improve messages for -Wtraditional. + + * stor-layout.c (layout_record): Avoid using DECL_SIZE_UNIT. + + * jump.c (jump_optimize): Scan all insns for label refs. + (mark_jump_label): Quickly ignore uninteresting rtl types. + * rtl.def (INSN, CALL_INSN): Add a slot for JUMP_LABEL. + + * jump.c (jump_optimize): Try combining stack adjusts with pushes. + +Mon Sep 24 07:31:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * stmt.c (expand_computed_goto): Emit barrier after jump. + + * expr.c (case LABEL_DECL): Return a MEM, so we can take its + address; correctly form LABEL_REF. + +Sun Sep 23 22:54:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (struct movable): Delete field SET_EQUAL; new field MOVE_INSN. + (scan_loop): Only use REG_EQUAL note under very restricted + cirsumstances. Set MOVE_INSN field in movables when appropriate. + (combine_movables): Simplify matching test now that we only have one + source field. + (move_movables): Handle MOVE_INSN movables by emitting a new move + insn in front of the loop. + Correct typo in checking for CALL_INSN. + Don't try to make a REG_EQUAL note. + (count_loop_regs_set): Remove extraneous assignment to MAY_NOT_MOVE. + +Sun Sep 23 14:59:21 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (S_ISREG): Define it unless overridden. + (main, finclude): Use that. + + * reload1.c (reload): If insn after a function call uses the + function value, and that reg is spilled, and the insn might + use it for reloading, add an extra need. + (reload_as_need): Detect such insns for new arg to choose_reload_regs. + (choose_reload_regs): In that case, don't choose function value reg. + + * tm-convex1.h, tm-convex2.h (CPP_SPEC): Define __NO_INLINE_MATH. + +Sun Sep 23 07:52:32 1990 Michael Tiemann (tiemann at cygnus.com) + + * version.c (version_string): Bumped to 1.90.02. + + * final.c (leaf_function): Variable now non-static. + * final.c (only_leaf_regs_used): Function now non-static. + * final.c (leaf_function_p): Move initialization of + `leaf_function' from here... + * toplev.c (compile_file): ...to here. We want to know the + value of `leaf_function' when we perform code reorginization. + * final.c (leaf_function_p): If profiling arcs, we cannot have + a leaf function. Also, we have to look at insns in + `epilogue_delay_list' to know that all our constraints are + satisfied. + * final.c (only_leaf_regs_used): Have to look in + `epilogue_delay_list' to know that all our constraints are + satisfied. + + * toplev.c (warning_with_file_and_line,warning): Declare third + argument V3 for warnings that require 3 `%' expressions in S. + * toplev.c (strip_off_ending): New helper function that removes + a GCC-recognized filename extension. Call this function in + GCC instead of expanding it inline in C code everywhere. + + * sched.c (schedule_block): The last basic block does not have + no live registers. Also, check that we don't copy from an + entry in `basic_block_live_at_start' that does not exist. + * sched.c (update_reg_first_use): When splitting insns, the + insn that is in REG_FIRST_USE might become a NOTE, and a new + insn become the insn that should be considered the first use. + `update_first_use' keeps REG_FIRST_USE up to date. + * sched.c (update_links): Call note_stores with + `update_first_use' when an insn splits. + +Sun Sep 23 00:05:49 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (grokdeclarator): Put var array bound in save_expr. + +Sat Sep 22 14:01:00 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tree.c (build_index_type): Don't hash variable-bound type. + + * c-decl.c (start_decl): Error here if var-size object initialized. + (grokdeclarator, finish_struct): Record types & decls + with array sizes not written as constants. + * c-tree.h (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE): New macros. + + * tm-aix386.h (LIB_SPEC): Different library name for -p. Always -lc. + (LINK_SPEC): Don't pass -lg or -g. + (CPP_PREDEFINES): Define _I386 and _AIX. Don't define unix. + (SDB_DEBUGGING_INFO): Define it. + (DBX_DEBUGGING_INFO): Undefine it. + (ASM_FILE_START): Output .noopt if not optimizing. + (PCC_BITFIELD_TYPE_MATTERS): Define it. + (FUNCTION_PROFILER): Add definition. + +Fri Sep 21 16:26:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * function.c (current_function_epilogue_list): Define this here. + * reorg.c: Not here. + +Fri Sep 21 13:11:11 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * varasm.c (assemble_external_libcall): Frob SYMBOL_REF_USED here. + +Thu Sep 20 15:29:44 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * expr.h (struct optab): Field libfunc, an rtx, replaces lib_call. + * rtl.h (SYMBOL_REF_USED): New macro. + * optabs.c (init_optabs): Initialize that field properly. + Also initialize new variables *_libfunc. + (various functions): Use those vars; use libfunc field. + * expr.c (convert_move, emit_block_move, clear_storage): Use the vars. + (emit_push_insn, expand_assignment): Likewise. + +Thu Sep 20 13:51:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * out-a29k.c (current_function_epilogue_delay_slot): Renamed from + epilogue_delay_slot. + + * romp.md (movdi): Fix missing short/long qualifier on memory ref. + (SFmode/DFmode move patterns): Add explicit alternatives for + storing and loading general registers from memory; also add + DEFINE_SPLITs for these cases for DFmode. + (negsf2,negdf2): Don't use XOR if an operand is a hard FP register. + + * tm-romp.h (FIXED_REGISTERS, CALL_USED_REGISTERS): Use correct + register numbers for FP registers. + + * output.h (current_function_epilogue_delay_list): New var. + * function.c: Include output.h and initialize new var above. + * Makefile.in (function.o): Now includes output.h. + * reorg.c (epilogue_delay_list): Renamed to + current_function_epilogue_delay_list. + + * final.c (final_scan_insn): Don't delete no-op insn if in delay slot + or if we have already pre-scanned. + + * genconfig.c (max_insns_per_split): Rename from + max_insns_per_split_flag and default to 1 instead of 0. + + * genattrtab.c (n_comma_elts): Return zero for null string. + + * sdbout.c (MIN,MAX): Add to here; required by recent changes. + + * expr.c (safe_from_p): A MEM rtx is not safe from an INDIRECT_REF. + + * c-parse.y (ridpointers): Move definition in front of first use. + + * reorg.c (mark_referenced_resources): Allow for CODE_LABELs between a + CALL_INSN and USE insns preceeding it. + (mark_set_resources): Likewise, for following CLOBBERs. + +Wed Sep 19 17:45:49 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * assert.h (printf): Don't define; should be in stdio.h. + + * rtl.h (PUT_REG_NOTE_KIND): New macro. + * sched.c (attach_deaths): Use it. + + * reorg.c (mark_referenced_resources): If we put insns to load + parameters into the delay slot of a CALL, ignore the USE insns + for those parameters. + + * function.c (fixup_var_refs_1): Don't call fixup_memory_subreg unless + its would-be operand is a SUBREG. + +Wed Sep 19 00:26:59 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * print-tree.c (print_node): Indent before printing RTL. + + * Makefile.in (protoize.o, unprotoize.o): Look for SYSCALLS.c.X + in libsubdir. + +Tue Sep 18 21:55:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (fold_rtx): For MEM with constant address, split the + address into possible base and offset; ensure constant pool + value is same mode as our reference unless we are getting a + word of a DImode CONST_INT. + Treat SYMBOL_REF and LABEL_REF as constants. + If we are getting a word at a constant offset from a jump table, + replace with the contents of that jump table entry. + (cse_insn): When folding jump to variable location (e.g., tablejump), + LABEL_REF is the cheapest of all, since the branch would be simple. + Special-case changing variable branch to normal unconditional + because the RTL may be different (e.g., the variable branch may + include a USE). + +Tue Sep 18 18:33:19 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * toplev.c (count_error): Handle warnings_are_errors. + (W_options): Handle -Werror. + +Mon Sep 17 00:02:12 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (lookup_label): Use void as type of label. + * stmt.c (label_rtx): No longer static. + * expr.c (expand_expr): Handle LABEL_DECL. + +Sun Sep 16 16:27:29 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * expr.c (expand_builtin): Error for __builtin_nextarg + if function definition doesn't have `...'. + + * expmed.c (store_bit_field): Adjust BITPOS to UNIT all at once. + for insv, use mode of operand 3 instead of SImode. Define MAXMODE. + Adjust XBITPOS along with mode of XOP0. + (extract_bit_field): Adjust XBITPOS along with mode of XOP0. + for extv and extzv, use mode of operand 3 thoroughly instead of SImode. + + * sdbout.c (CHAR_TYPE_SIZE,...): Default definitions of these macros. + (plain_type_1): Use those macros to distinguish int and floating types. + + * toplev.c (rest_of_decl_compilation): Output TYPE_DECL here for sdb + only if top_level. + + * c-parse.y (unary): Don't forget to look up the label. + + * c-typeck.c (build_conditional_expr): Don't skip arg promotion. + +Sun Sep 16 14:54:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * combine.c (try_combine): If we don't recognize the combined insn, + try it without any CLOBBERs. + + * final.c (final_scan_insn): Prevent CC tracking from thinking + that the CC was set by an insn in the delay slot of a CALL_INSN. + + * expmed.c (init_expmed, expand_divmod): Allow machine to have + low cost specified for divides by powers of two if it can do it by + a method that if cheaper than the normal shift/branch/adjust mechanism. + + * cse.c (fold_rtx): When putting constant last, ensure that the + resulting insn is valid. + + * objc-actions (finish_objc): Remove dup defn of gen_declaration_file. + + * objc-parse.y (ridpointers, token_buffer): Define before use. + + * reload1.c (scan_paradoxical_subregs): Declare correctly. + + * tm-romp.h (ENCODE_SEGMENT_INFO): Use INTEGRATED bit to mark + SYMBOL_REFs that are addresses of functions (really their data blocks). + (LEGITIMATE_CONSTANT_P): Data block addresses of functions are not + valid operands. + * out-romp.c (symbolic_operand): Likewise. + * romp.md (call*): emit_move_insn will now do force_const_mem + so it needn't be done explicitly. + + * out-romp.c (output_fpop): Work around yet another RT fp bug; + cannot merge output and first operand for SFmode if general reg. + + * romp.md: Add new pattern to match combination of copy and test. + Use nilo instruction to set CC. + +Fri Sep 14 07:07:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * c-tree.h: Define all *_type_node trees defined in c-decl.c, in the + same order as defined there. + +Fri Sep 14 08:39:17 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-typeck.c (build_c_cast): Convert READONLY_DECLs to make up + for the fact that we do not call `default_conversion' anymore. + + * function.c (instantiate_virtual_regs): If the function is inline, + we don't need to worry about making valid rtl, but we do need to + worry about instantiating all virtual registers. Otherwise we must + make the rtl valid, and we have other opportunities to eliminate the + virtual registers during the compilation. + +Thu Sep 13 16:00:05 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * reload.c (MATCHES): Check for different rtx's with same reg number. + + * fixincludes: Discard `.' from value of `files'. + + * c-parse.y (unary_expr): Use unary && to get address of label. + (stmt): Handle `goto *EXPRESSION;'. + * stmt.c (expand_computed_goto): New function. + + * gstdarg.h: New name for stdarg.h. + * Makefile (install-headers): Rename gstdarg.h while installing it. + + * sdbout.c (PUT_SDB_LAST_DIM): Get rid of SDB_DELIM. + (plain_type): Output accumulated array dims and size. + (plain_type_1): Eliminate arg NOSIZE. Save up dims and size. + Call self rather than plain_type for pointers and functions. + (sdbout_array_type, sdbout_array_depth): Functions deleted. + +Thu Sep 13 16:12:15 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-class.c (build_method_call): Fix typo in deciding whether to + do hairy or trivial pointer conversions on `this'. + + * cplus-tree.c (layout_vbasetypes): Don't double-count space taken + up by virtual baseclasses. + +Wed Sep 12 18:14:19 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-m68k.h: Use asm_fprintf widely. + (REG_PREFIX, IMMEDIATE_PREFIX, LOCAL_LABEL_PREFIX, USER_LABEL_PREFIX): + New macros. + + * final.c (asm_fprintf): New function. + +Wed Sep 12 06:07:50 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-dbxout.c (dbxout_type): Output basetype size and offset info + in bits, not bytes. + + * cplus-decl.c (finish_{decl,function}): Set CLASSTYPE_ASM_WRITTEN + bit of types used by non-extern VAR_DECLs. Set it also for types of + PARM_DECLs and return types of functions defined in the file being + compiled. + +Tue Sep 11 13:21:40 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * sdbout.c (plain_type_1): New argument NOSIZE. Inhibits size output. + (sdbout_array_type): Call plain_type_1 directly; set NOSIZE. + + * sdbout.c (sdbout_array_type): New argument DEPTH. + Don't output more than SDB_MAX_DIM dimensions. + (sdbout_array_depth): New function. + (plain_type_1): Start DEPTH by calling sdbout_array_depth. + + * gnulib2.c (_bb_init_func): Library member now named _bb. + + * tree.h: Add comments. + +Mon Sep 10 17:20:06 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile.in (install): Fix typo. + + * cccp.c (macarg1): With -traditional, backslash quotes chars. + +Mon Sep 10 16:37:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (jump_optimize): Don't swap THEN and ELSE parts during jumps + runs after reload. + +Mon Sep 10 13:07:39 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (collect_expansion): Don't actually substitutee into a + string if ANSI; just consider warning. + + * gnulib2.c (div_qrrnd for i386): Fix typo. Rename some args. + + * sdbout.c (sdbout_array_type): New argument DEPTH. + Don't output more than SDB_MAX_DIM dimensions. + (plain_type_1): Start DEPTH at 1. + +Sun Sep 9 22:02:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * out-a29k.c (gen_reg_operand): Exclude SUBREG of a special + register. + + * cse.c: (fold_rtx): Get equivalent for register before seeing if + memory reference is to constant pool. + (cse_ins): Only call force_const_mem if we actually try to use + the constant (i.e., we haven't found anything cheaper). + +Sun Sep 9 21:49:18 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * ..._BIG_ENDIAN: Now expect definition to be 0 or 1. + All refs and defs changed. + + * tm-mips.h (CPP_SPEC): Error for -EL (for -EB, if DECSTATION). + + * sdbout.c (sdbout_one_type): Set TREE_ASM_BEING_WRITTEN before + recursion, and TREE_ASM_WRITTEN after. + +Sat Sep 8 16:47:27 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * hard-params.c (main): Don't try to malloc all memory. + +Sat Sep 8 16:38:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (reload): Set reg_equiv_constant if the equivalence + is any constant, not just a legitimate constant operand. + + * final.c (get_attr_length, shorten_branches, final_scan_insn): + If JUMP_TABLES_IN_TEXT_SECTION is defined, don't put jump tables + in readonly data section, even if it exists. + +Sat Sep 8 14:07:05 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile.in (bootstrap*): Pass null ALLOCA definition to recursive + makes when compiling with GCC since it never needs alloca.c. + + * c-typeck.c (build_binary_op_nodefault): Warn for signed < unsigned. + Controlled by -W. + + * tm-i386v4.h: New file. + +Fri Sep 7 13:10:24 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (STDC_VALUE): New macro, defaulting to 1. + (intialize_builtins): Use that. + + * m68k.md (movqi): `st' does not set cc's. + +Fri Sep 7 07:49:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genemit.c (gen_expand): Fix test for no C code. + If no C code, no MATCH_DUPs, and only one insn to write, handle + like DEFINE_INSN and return that insn rather than making a sequence. + + * emit-rtl.c (add_insn_after): If previous or next insn is a + SEQUENCE, update the NEXT_INSN in the last insn in the SEQUENCE or + PREV_INSN of the first, as appropriate. + (emit_insn_before, emit_jump_insn_before, emit_note_before): + Call add_insn_after. + + * stmt.c (check_for_full_enumeration_handling): If a switch whose index + is an enumerated type contains labels for every enumeration value, + make the label for the last value the default label since such a + switch can never fall through. + + * genattr.c (fatal): Declare first arg correctly. + + * combine.c (try_combine): No longer check REG_FUNCTION_VALUE_P; + its value shouldn't matter once RTL generation is complete. + (subst): If NOT is present as an operand in commutative operation, + put it last to reduce the number of required patterns. + + * out-romp.c (output_fpops): Align to word boundary before writing + any floating-point blocks. + + * function.c (instantiate_virtual_regs_1): Fix typo in previous change. + When a MEM must be copied, use copy_rtx; the PLUS may also be shared. + +Thu Sep 6 15:19:42 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * gcc.c (do_spec_1): Don't add __ to -D if __ already present. + + * c-typeck.c (convert_for_assignment): + Better warning for FCN * vs. void * + Specific warning for char * vs. unsigned char *. + +Thu Sep 6 14:52:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c (find_basic_block): Return -1, not 0, if we can't find + the basic block. + (mark_target_live_regs): Clear PENDING_DEAD_REGS unconditionally. + (relax_delay_slots): Don't call optimize_skip for unconditional jump. + Only try to remove jump if it is a simple conditional or + unconditional jump (but not a tablejump or similar such). + + * cse.c (invalidate, refers_to_mem_p, cse_rtx_addr_varies_p): + Consider (plus (reg) (const_int)) to be a fixed address if REG + is constant; old code just handled REG. + + * genrecog.c (enum routine_type): Use to distinguish two types of + routines that we write: recog and split_insns. + (make_split_sequence): Write out extern for gen_split_ function. + (break_out_subroutines, write_subroutine, write_tree, main): + Use new enum routine_type instead of passing "split" or "recog". + (write_subroutine): Write correct type for splitting functions and + return 0, not -1. + (main): Write includes before declarations of gen_split_ functions + since "rtx" is needed for them. + * rtl.h (try_split, split_insns): Added definitions. + +Wed Sep 5 16:20:07 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile.in (includes): Use proper directory. + +Tue Sep 4 13:59:31 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (store_parm_decls): Let extra_warnings control + warnings about parms not declared. + + * flow.c (life_analysis): Move code to detect stack-adjust insns. + It was unreachable. + + * gnulib.c, gnulib2.c (abort): #undef in case config.h defines it. + +Mon Sep 3 17:50:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * calls.c (expand_call): If SETUP_INCOMIMG_VARARGS is defined, pass + unnamed args in registers. + * function.c (assign_parms): Call SETUP_INCOMING_VARARGS for + stdargs as well as varargs; ensure we only call it once. + + * function.c (instantiate_virtual_regs_1): Don't assume all memory + addresses are valid for all insns. + +Sun Sep 2 22:17:40 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * expr.c (emit_library_call): Push all stack args, then load regs. + + * c-decl.c (c_build_type_variant): For an ARRAY_TYPE, + put the qualifier into the array as well as the element. + (grokdeclarator): When a field or variable is supposed to be + a const or volatile array, make the array elements const or + volatile, but also make the field or variable so. + + * c-decl.c (grokdeclarator): Turn off the warning for const or volatile + function type when making an array. It was useless. + +Fri Aug 31 16:26:40 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-common.c (truthvalue_conversion): Let the + language-specific code decide how to convert EXPR + if it is not one of the special forms we recognize. + +Fri Aug 31 15:08:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * gcc.c (execute): Use I instead of undefined var J if DEBUG defined. + +Fri Aug 31 14:37:36 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * sdbout.c (sdbout_begin_block): Delete excess arg to sdbout_block. + +Thu Aug 30 21:31:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expmed.c (extract_bit_field): Fix typos in computations of UNIT. + +Wed Aug 29 12:33:33 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * sdbout.c (sdbout_reg_parms): Don't advance parm twice. + +Tue Aug 28 22:49:41 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (delete_newlines): New function. + (macroexpand): Remove newlines from args used more than once. + +Tue Aug 28 22:16:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * Makefile.in (sched.o): Add to list of files to compile. + + * c-parse.y (position_after_white_space): Declare with correct type. + + * fold-const.c (optimize_bit_field_compare): Fix typo. + + * reorg.c (split_insns): No longer need extern for this here. + + * toplev.c (sched_dump_file): Define. + (compile_file): Initialize and print sched_time and sched2_time. + + * local-alloc.c (block_alloc): Fix typo in allocation of insn_map. + + * cse.c (cse_insn): Try related value in case where CONST is seen + first and SYMBOL_REF later. + +Tue Aug 28 16:26:50 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * cccp.c (main): Don't modify or validate arg of -D here. + (make_definition): Do it all here. + + * function.c (assign_parms): Reenable `register' for parms. + +Tue Aug 28 07:12:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tm-a29k.h (CONST_COSTS): All CONST_INTs are cost zero; adjust + SYMBOL_REF and CONST_DOUBLE costs to reflect their actual cost. + + * expr.c (expand_expr): Don't suppress EXPAND_SUM here if not Pmode. + (expand_expr, case *_DECL): Return constant address if + EXPAND_SUM or EXPAND_INTO_STACK in addition to EXPAND_CONST_ADDRESS; + all of these cases will later call memory_address. + (expand_expr, case COMPONENT_REF): Always make recursive call with + EXPAND_SUM. + (expand_expr, case PLUS_EXPR): Try to form constant if X + CONST and + mode is Pmode without EXPAND_SUM; if not EXPAND_SUM, use force_operand. + Check for MODE != Pmode with EXPAND_SUM here. + (expand_expr, case MINUS_EXPR): Always process X - CONST_INT as + X + (-CONST_INT)). + +Sun Aug 26 23:10:10 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-decl.c (c_decode_option): Handle -funsigned-bitfields. + (grokdeclarator): Do the real work. + (grokfield): Pass either FIELD or BITFIELD to grokdeclarator. + + * tm-att386.h (asm_output_common): Use SIZE, not ROUNDED. + +Sat Aug 25 17:17:27 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (unary_expr): Turn off handling of &... + * c-decl.c (store_parm_decls): Turn off extra dummy parameter. + + * tm-att386.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): New macros. + (BSS_SECTION_ASM_OP): New macro. + (ASM_OUTPUT_LOCAL): Call bss_section, don't just print .bss. + + * combine.c (subst): Handle shift within mem, as multiplication. + +Sat Aug 25 11:43:09 1990 Michael Tiemann (tiemann at cygnus.com) + + * final.c (alter_cond): Handle CC_INVERTED. + + * conditions.h (CC_INVERTED): New flag indicating that the condition + tested leaves the falgs set opposite to the condition tested. This + is unsafe for IEEE floating point operations, but useful for integer + operations which can combine with condition-code setting operations. + + * c-parse.y (position_after_white_space): New function. Skips + all of the whitespace at the current location in the input + file, taking NEXTCHAR into account. Changed all callers of + `skip_white_space' in grammar to use this function instead. + + * genrecog.c (main): Generate code which is more easily optimized by + GCC's cse. In particular, start each recognizer with the address of + `recog_operands' in a register. + + * reload.c (combine_reloads): Can only combine reloads if the + register we find can hold the entire output reload (i.e., SFmode + register may not be suitable for combining with DFmode register). + + * optabs.c (have_sub2_insn): Fixed typo. + * combine.c (combine_instructions): Fixed typo in comment. + + * function.c (expand_function_end): Emit a barrier after a RETURN + jump. + + * Added diffs for new instruction scheduling code. + * emit-rtl.c (try_split): Moved here from reorg.c and made + public. Both instruction scheduling and delayed branch + filling now use the same code to split insns. + * flags.h: Add new flags FLAG_SCHEDULE_INSNS for instruction + scheduling before register allocation and + FLAG_SCHEDULE_INSNS_AFTER_RELOAD for insn scheduling after + register allocation. + * recog.c (constrain_operands): Recognize pseudo registers as + registers for the purpose of insn constraint matching before + register allocation. Otherwise, the insn scheduler assumes + the operands will be memory, which is usually wrong (and + causes it to build bad schedules). + * sched.c (order_calls): New function. For two CALL_INSNS in + the rtl chain, we set up a constraint that the second + CALL_INSN may not be scheduled to run before the first. + (sched_analyze_*): Three kinds of dependencies (true, anti, + and output) constrain the order in which insns can be + rearranged and still preserve their execution semantics. + We now handle dependencies for pseudo and hard register usage + and for memory usage in these functions. + (launch_links): The ordering of which newly ready insns to + execute is now preserved according to their `priority' in the + insn chain, and no longer on their order in the dependency + list from which they were launched. + (schedule_block): Removed support for trying to schedule insns + taking branch delays into account. Reorg.c should be hacked + to understand which insns to pull into delay slots and which + insns to leave alone. + (schedule_block): (Re-)compute all register life information here. + No longer dependent on flow to keep `basic_block_live_at_end' + allocated. + (schedule_insns): Recompute LABEL->BASIC BLOCK mapping, so we + can compute register life information. + * rtl.c (add_dependence): New function to add and remove insn + dependencies. If an insn (I2) must execute after another + (I1), we add an INSN_LIST containing I1 to I2's LOG_LINKS. + If such an INSN_LIST is already in I2's LOG_LINKS, we don't + add a second. + (remove_dependence): Similar, but removes dependencies. May + not actually be needed. + * toplev.c (compile_file,rest_of_compilation): Added code for + dumping info about insn scheduling. + +Fri Aug 24 17:24:03 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Implement `aligned (INTEGER)' attribute for real. + * c-parse.y (attrib): Really record info for `aligned' attribute. + Don't warn for any integer alignment. + (attribute_list): Make a list. + (initdcl, notype_initdcl, component_declarator): Handle that info. + * c-common.c (decl_attributes): New function. + +Fri Aug 24 07:12:05 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genattrtab.c (insn-config.h): This is really needed after all. + * Makefile.in (genattrab.o): Show dependency on insn-config.h. + + * local-alloc.c (block_alloc): Don't update qty_birth for a + register whose quantity is <= 0. + + * fold-const.c (decode_field_reference): Actually obtain unsigned + type where one is wanted. + (merge_component_references): Correctly test for mutually exclusive + conditions. + +Thu Aug 23 14:56:44 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-typeck.c (digest_initializer): No pedantic warning for string + and array of unsigned char. + + * tree.c (get_identifier): Do id_clash_len stuff if length equals that. + +Thu Aug 23 10:30:10 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-tree.h (CLASSTYPE_CID): Key off of TYPE_MAIN_VARIANT. + +Thu Aug 23 06:44:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * out-romp.c (romp_pushes_stack): Don't count + current_function_pretend_args_size in size of stack. + +Wed Aug 22 18:00:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tm-a29k.h, tm-a29kunix.h, xm-a29k.h, a29k.md, out-a29k.c: New files. + + * config.gcc (a29k-unix): New target. + + * calls.c (expand_call): Allow FUNCTION_ARG to return an EXPR_LIST + specifying multiple registers to load. + (store_one_arg): Likewise; also delete handling of fully-in-register + case, which hasn't been handled here for a while. + * expr.c (emit_library_call): Our subset of calling sequence for + library routines does not include multiple registers for an arg. + +Tue Aug 21 17:44:49 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * make-cc1.com: Compile and link version.c. + + * Makefile.in (install-gnulib): Create libg.a if none already. + + * expr.c (convert_move): Handle expand_unop retval not same as target. + + * reload.c (find_reloads): For register letters, don't win if BLK. + + * sdbout.c (sdbout_toplevel_data): Fix error message. + + * protoize.c (open): Prototype deleted. + + * flow.c (mark_set_1, mark_used_regs): Update reg_first_use. + (allocate_for_life_analysis): Allocate and clear it. + * local-alloc.c (block_alloc): Calculate INSN_MAP. + Get first use of each reg from reg_first_use. + + * tm-vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): Distinguish C from C++. + (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Add a const data section. + (ASM_OUTPUT_EXTERNAL): Use that section. + (SELECT_SECTION): Go to that section when appropriate. + +Tue Aug 21 18:26:47 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c (fill_simple_delay_slots): Mark anything referenced by an + insn that will be placed in a delay slot in the epilogue as being + needed at the end of the function. + + * cse.c (constant_pool_entries_found): New static var. + (cse_main): Initialize it. + (use_related_value): Correctly look for registers in hash table. + (fold_rtx): Fold constant pool entries to their constants and + set constant_pool_entries_found. + (cse_insn): If we weren't able to place a constant in an insn + and we have previously seen constant pool entries used, set up + to try the constant pool entry also. + +Mon Aug 20 12:14:27 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * function.c (assign_parms): Set LAST_NAMED for parm before dummy. + See August 9 change in c-parse.y. + + * gcc.c (process_command): Split -oFOO into two arguments. + + * stmt.c (expand_asm_operands): Handle COMPONENT_REF and + ARRAY_REF directly as output operands. Avoids crash if BLKmode. + + * c-parse.y, cplus-parse.y, objc-parse.y: Include stdio before input.h. + * input.h: Declare finput. + + * expr.c (emit_push_insn): Don't adjust for EXTRA separately + if will have to adjust the stack anyway. + + * m68k.md (*sh*si3): On 68000, optimize case of >= 16 bits. + + * varasm.c (decode_rtx_const): Don't dereference a PLUS + subexpression of a CONST twice. + +Sun Aug 19 21:51:51 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * toplev.c (finput): Define here. + * *-parse.y (lineno, finput): Duplicate definitions deleted. + + * global-alloc.c (find_reg): Test best_reg against 0, + not first_pseudo_register. + +Sun Aug 19 17:48:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * explow.c (plus_constant): If adding to constant pool constant, + return a new one. + + * genattrtab.c: Need not include insn-config.h. + +Sun Aug 19 17:23:10 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * tm-hp9k320bsd.h (CPP_SPEC): Def __HAVE_68881__ like __HAVE_FPU__. + + * Makefile.in (USE_ALLOCA): Test was backwards. + (USE_HOST_ALLOCA): Likewise. + +Sun Aug 19 09:58:16 1990 Michael Tiemann (tiemann at cygnus.com) + + * stmt.c: Fixes from 2.0 for fixup_goto incorporated here. + + * cplus-decl2.c (write_vtable_entries): Don't test TREE_EXTERNAL + of DECL_CONTEXT (FN). TREE_EXTERNAL is not meaningful for types. + +Fri Aug 17 22:14:09 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * optabs.c (emit_cmp_insn): Don't abort after floating lib cmp. + +Thu Aug 16 23:16:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * varasm.c (assemble_variable, assemble_static_space): Don't + call data section if -fshared-data. If this section is needed, + it should be entered from elsewhere, and this is believe to be + done in all known cases. + (output_constant_pool): Add support for ASM_OUTPUT_SPECIAL_POOL_ENTRY + which writes certain constant pool entries specially; used for TOC + on RS/6000. + (assemble_external_libcall): New function. + * expr.c (emit_library_call): Call it. + + * reorg.c (mark_target_live_regs): Don't follow around infinite loops. + + * varasm.c (struct rtx_cont): Don't use enums in bit fields if + ONLY_INT_FIELDS is defined. + + * cse.c (remove): Rename to remove_from_table to avoid conflict + with `remove' defined in stdio.h. + +Thu Aug 16 22:44:35 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * stmt.c: fixup_gotos must ignore blocks started after the goto. + (block_start_count): New variable, and slot in some structures. + (expand_function_start): Initialize it. + (expand_start_bindings): Increment it and store in struct nesting. + (expand_goto): Store it in struct goto_fixup. + (fixup_gotos): Compare fixup's count with block's count. + (save_stmt_status, restore_stmt_status): Handle block_start_count. + * function.h (struct function): Make slot to save it. + +Thu Aug 16 18:02:03 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * obtabs.c (expand_fix, expand_float): Support direct conversion + between SFmode and fixed modes by library call. + +Wed Aug 15 18:36:28 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cccp.c (main): Allow -M to work on .s files by checking for .s + and .S suffixes when writing dependencies. + + * reorg.c (optimize_skip, fill_eager_delay_slots, try_host_target): + Don't need to call can_reverse_comparison_p because invert_jump is + safe for floating-point; only reverse_condition isn't. + +Wed Aug 15 15:50:36 1990 Michael Tiemann (tiemann at cygnus.com) + + * dbxout.c (dbxout_type): Skip past const and volatile qualifiers + that might appear in method names. + +Wed Aug 15 15:44:17 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * c-parse.y (hash, is_reserved_word): Use __inline. + + * cccp.c (main): Support -dN and -dD. Support -lint. + (dump_macros): Two new alternatives. + (handle_directive): Output macro definitions if -dN or -dD. + (rescan): Check comments if -lint. + (get_lintcmd): New subroutine. + + * c-decl.c (c_decode_option): Handle -fshort-double. + (init_decl_processing): Create double_type_node accordingly. + + * c-decl.c (c_decode_option): Handle -Wno... + +Tue Aug 14 23:10:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * explow.c (break_out_memory_refs): Don't break out reference if + constant but not legitimate constant for a machine insn. + (memory_address): Only put legitimate constants, rather than all + constants, into registers if they are used as an address. + +Tue Aug 14 14:34:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * reorg.c (steal_delay_list): Can't put something in a + non-annulled delay slot that can trap. + + * tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Typo testing offset alignment. + + * cccp.c (do_assert, do_unassert, check_assertion): New functions. + (compare_keyword_lists, read_keyword_list, free_keyword_list): + New functions. + * cexp.y (yylex): Allow `#' as token. + Return name and length of symbol. + (keywords): New nonterminal. + (expr): Recognize # to test an assertion. + (U_CHAR, struct arglist): Data types copied from cccp.c. + (%union): New alternatives `keywords' and `name'. + +Mon Aug 13 22:26:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tm-romp.h (SLOW_BYTE_ACCESS): Set to 0. + + * expmed.c (store_bit_field, extract_bit_field): Use get_best_mode + to select mode to use for accessing memory when bitfield insns don't + accept memory. + + * c-common.c (rewrite_for_merged_ref, make_merged_ref): Deleted. + (merge_component_comparisons): Delete from here. + * c-tree.h (merge_component_comparisons): No longer global. + * c-convert.c (build_binary_op_nodefault): Don't try to merge component + references here; now done in fold. + * cplus-typeck.c (build_binary_op_nodefault): Likewise. + * Makefile.in (fold-const.o): Now includes flags.h. + * fold-const.c: Likewise. + (STRIP_NOPS): New macro. + (decode_field_reference, all_ones_mask): New functions. + (merge_component_references): Put rewritten version here. + This fixes bugs in the way that comparisons with non-equal + constants (!p->a && p->b) are handled and in endianness checking. + Also accepts more general comparisons, and, in particular, its + own output so more than a pair of operations can be merged. + (fold): Call it for TRUTH_{AND*,OR*}_EXPR. + + * tree.def (BIT_FIELD_REF): New tree code. + * expr.c (get_inner_reference): Support BIT_FIELD_REF. + If bitfield is a complete mode-sized unit, return that mode; if it + is a subset of bits within a mode-sized unit, return VOIDmode. + (expand_assignment): Check for BIT_FIELD_REF. + Use mode returned from get_inner_reference to see if bit field. + (store_constructor): Likewise. + (store_field): Don't pass arg BIT_FIELD; use MODE == VOIDmode + instead. All callers changed. + (expand_expr, case BIT_FIELD_REF): New case. Handled same as + COMPONENT_REF. + Use mode returned from get_inner_reference rather than DECL_BIT_FIELD. + (expand_increment): Must stabilize BIT_FIELD_REF. + (do_jump, case NOP_EXPR): Check for inner BIT_FIELD_REF and ARRAY_REF. + (do_jump, case COMPONENT_REF): Generalize to handle BIT_FIELD_REF + and some ARRAY_REFs also. + * fold-const.c (operand_equal_p): Handle BIT_FIELD_REF. + * tree.c (staticp): Rework to use switch instead of if-then-else. + Add support for BIT_FIELD_REF. + (stabilize_reference, simple_cst_equal): Support BIT_FIELD_REF. + + * c-common.c (truthvalue_conversion): Rework to use switch rather + than if-then-else. + Generate either TRUTH_{OR*|AND*}_EXPR or comparison operations as + much as possible. + Handle REAL_CST, ADDR_EXPR, ABS_EXPR, FLOAT_EXPR, FFS_EXPR, + LROTATE_EXPR, RROTATE_EXPR, BIT_XOR_EXPR, and MINUS_EXPR. + Call fold for COND_EXPRs that we make. + * c-convert.c (build_unary_op): invert_truthvalue can't return 0, + so don't check for it. + (invert_truthvalue): Delete from here. + (convert_to_integer, build_conditional_expr): Try to fold COND_EXPR. + * c-plus-cvt.c (convert_to_integer): Likewise. + * cplus-typeck.c (build_conditional_expr): Likewise. + (build_unary_op): invert_truthvalue can't return 0. + (invert_truthvalue): Delete from here. + * fold-const.c (invert_truthvalue): Move to here. + Don't invert floating-point test. + Look inside conversions. + Use recursive call to negate inside logical operations rather than + building a TRUTH_NOT_EXPR. + Allow only certain TREE_CODEs as operands; abort for the rest. + (fold_convert): Accept second argument that is item being + converted to ensure that NOPs have been stripped. + (operand_equal_p): Return 0 if either operand has side effects. + If both integer or real constants, check the values. + Do a more thorough test to see if two items are identical; + specifically, compare the operands of simple TREE_CODEs. + (omit_one_operand, distribute_bit_expr): New functions. + (make_bit_field_ref, optimize_bit_field_compare): Likewise. + (fold): Remove LOSES; now done explicitly or by calling + omit_one_operand. Some previous uses weren't needed. + Try to fold any COND_EXPRs and some COMPOUND_EXPRs we make. + Remove pair of NEGATE_EXPRs and BIT_NOT_EXPRs. + Convert "- (a - b)" to "b - a" for non-floating-point. + ABS_EXPR applied to ABS_EXPR or NEGATE_EXPR is ABS_EXPR of inner arg. + Convert "a + (-b)" to "a - b" and "a - (-b)" to "a + b". + If adding ANDs with constants that have no bits, in common, try + bitwise-or, since we may then be able to distribute the operation, + e.g., (a & 7) + (a & 0x70) -> a & 0x77. + Add missing last arg to operand_equal_p call. + Call distribute_bit_expr for BIT_AND_EXPR and BIT_IOR_EXPR. + Exclusive-or with all ones is bit negation. + If second arg of BIT_AND_TC_EXPR is constant, convert to BIT_AND_EXPR. + Handle TRUTH_NOT_EXPR by calling invert_truthvalue. + Call optimize_bit_field_compare for comparisons of bitfields. + Handle "a ? 1 : 0" and "a ? 0 : 1" as test or negated test. + Simplify "a & 4 ? a & 4 : 0" and "a ? a : 0" to remove conditonal. + * stor-layout.c (get_best_mode): New function. + * machmode.h: Define it. + * tree.c (integer_pow2p): New function. + * tree.h: Declare new functions and functions no longer static. + +Mon Aug 13 17:45:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * config.gcc (sun3-mach): New alternative. + * tm-sun3mach.h: New file. + + * m68k.md (bfextu patterns): Set CC_NOT_NEGATIVE. + +Mon Aug 13 10:14:37 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-decl2.c (flag_minimal_debug): Now is default is + -fflag-minimal-debug. + + * cplus-tree.c (virtual_member): Return the assoc of a non-virtual + basetype that comes from a virtual baseclass. Changed callers + which used to call `value_member' to call virtual_member instead. + +Mon Aug 13 06:54:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (expand_twoval_binop): Fix typo. + + * cse.c (lookup_as_function): Don't assume CODE is a unary + operation. It might be a binary op or REG. + +Sun Aug 12 21:42:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case COND_EXPR): Don't abort if first arg of + COND_EXPR isn't a comparison; just suppress the do_store_flag call. + +Sun Aug 12 14:26:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h (enum built_in_function): Delete comma after last name. + * c-parse.h (enum rid): Likewise. + * expr.h (enum optab_methods): Likewise. + * stab.h: Add dummy enum name at end. + + * config.gcc (genix): Set tm_file. + * tm-genix.h (ASM_OUTPUT_DOUBLE): New overriding definition. + + * tree.h (struct tree_type, struct tree_decl): Handle ONLY_INT_FIELDS. + * rtl.h (struct rtx_def): Likewise. That macro goes in xm-*.h. + +Sat Aug 11 16:56:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cplus-decl.c (finish_function): Check value of HAVE_return before + calling gen_return. + + * reorg.c (optimize_skip): Don't reject skip when we jump around an + insn and merge at the return point. + +Fri Aug 10 17:00:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * dbxout.c (dbxout_parms, dbxout_reg_parms): Ignore nameless parms. + * sdbout.c (sdbout_parms, sdbout_reg_parms): Ignore nameless parms. + +Fri Aug 10 14:14:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * recog.c (indirect_operand): Modes need not agree if MODE == VOIDmode; + remove test from here since it is in memory_operand, which this calls. + +Thu Aug 9 15:19:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (store_parm_decls): If function has variable number of args, + put a dummy decl at end of parmlist. + * c-parse.y (unary_expr): Handle &... with address of dummy decl. + + * tm-*.h (LEGITIMIZE_ADDRESS): Go to WIN instead of returning. + + * cccp.c (handle_directive): Add code to support `# DIGIT' + but disable it for the time being. + + * tm-hp9k320.h (CPP_SPEC): Define _HPUX_SOURCE if not ANSI. + (CPP_PREDEFINES): Don't define it here. + Do define alternatives with __ prepended. + +Wed Aug 8 14:00:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * out-romp.c: Don't include hard-reg-set; already in insn-output.c. + + * explow.c: insn-flags.h is needed to see if "probe" insn exists. + * Makefile.in (explow.o): Likewise. + +Wed Aug 8 13:35:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (check_macro_name): Warn if name is `defined'. + + * tm-sun386i.h (ASM_IDENTIFY_GCC): If profiling, put a NOP after + gcc_compiled. + +Tue Aug 7 23:51:38 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * toplev.c (main): Handle -W options like -f options. + This supports -Wnounused, and such like. + (warn_uninitialized): New variable, controls those warnings. + Set it for -Wuninitialized, and for -W. + +Tue Aug 7 13:24:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genextract.c (walk_rtx): Fix typo in MATCH_PARALLEL case. + + * explow.c (allocate_dynamic_stack_space): Pass size of allocated stack + to gen_probe. + +Tue Aug 7 12:19:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * pyr.md (extendsfdf2, truncsfdf2, float*, fix*): Use `&'. + +Tue Aug 7 07:13:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (find_cross_jump): Include a USE or CLOBBER in cross jump + but don't count it against minimum size. + Never return when cross-jump hasn't actually been done. + +Mon Aug 6 18:50:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * varasm.c: Include regs.h. + (decode_reg_name): Remove extern for reg_names; it is in regs.h. + * Makefile.in (varasm.o): Depends on regs.h. + +Mon Aug 6 12:46:07 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (grokdeclarator): Don't warn if initialized fcn is extern. + (start_decl): Don't warn at all for initialized extern. + + * final.c (final_start_function): Handle PROFILE_BEFORE_PROLOGUE. + (profile_function): New subroutine. + + * tm-i386sco.h: New file. + * config.gcc (i386-sco): New alternative. + + * gcc.c (ENDFILE_SPEC): New macro. + (do_spec_1): Handle %E. + (link_spec): Use %E. + + * xm-i386.h (alloca): Define without arg. + + * Makefile.in (stage*): Use RANLIB_TEST. + (LIMITS_H): New variable. + (USER_H): Use that. + * make-i386sco: New file. + +Sun Aug 5 13:11:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.h: Delete all machine mode defns; include machmode.h instead. + * tree.h: Likewise. + * machmode.h: New file. + * stor-layout.c: No longer include rtl.h. + * Makefile.in: (RTL_H, TREE_H): Add machmode.h. + (stor-layout.o): No longer depends on RTL_H. + + * c-common.c (binary_op_error, shorten_compare): Should no longer + have been static when moved here. + +Sun Aug 5 12:57:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_record, layout_union): Test value of + PCC_BITFIELD_TYPE_MATTERS for being nonzero, if it is defined. + * tm-*.h: Define with value 1. + * tm-vax.h (PCC_BITFIELD_TYPE_MATTERS): Depends on -mvaxc-alignment. + + * proto.h: New file. + * Makefile.in (USER_H): Add that file. + +Sun Aug 5 00:04:08 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-decl2.c (grokfield): It is no longer legal to specify + the initializer for a static const member in the class + declaration. Dealing with default initializers is basically + impossible. + + * cplus-init.c (build_delete): Don't wrap `addr' in a SAVE_EXPR + until it is in fact an address. This allows us to call + destructors on the return values of function calls. + + * cplus-typeck.c (commontype): Fixed bug in OFFSET_TYPE case which + led to infinite recursion (since we did not reduce the types + before we recursed). + + * cplus-lex.c (check_newline): Make `#pragma implementation' more + forgiving. + + * cplus-init.c (expand_aggr_init): Changed Jan 20th change so that + we test whether TYPE has a constructor defined, and we do not test + at all whether INIT was from a GNU constructor expression or not. + + * cplus-typeck.c (build_modify_expr_1): Don't return + `error_mark_node' unless there really was an error. If there is + no work to do, return `integer_zero_node'. + + * cplus-class.c (propagate_basetype_offsets): Count the space + between baseclasses, not just the space they occupy. + + * cplus-typeck.c (commontype): Don't drop the exceptions that are + raised by functions and methods. + + * cplus-cvt.c (convert_to_real): Fix if/else level problem in + case where EXPR is of aggregate type. + + * cplus-decl.c (finish_decl): Emit a line-number note to give + users a chance to set a breakpoint before the initialization of an + object takes place. + + * cplus-class.c (build_method_call): If the function we get is not + directly from the object we have, call `convert_pointer_to' if the + object uses multiple inheritance or virtual baseclasses. + + * cplus-typeck.c (build_binary_op_nodefault): Don't call + `convert_to_pointer' with an argument that might be + the integer zero. + + * cplus-method.c (hack_identifier): Look for DECL_REFERENCE_SLOT + in RESULT_DECLs as well. + + * cplus-init.c (build_vec_delete): Don't forget to deallocate the + container if requested. Really use AUTO_DELETE and + AUTO_DELETE_VEC with the same interpretation as `build_delete' + gives to its AUTO_DELETE parameter. + +Sat Aug 4 22:08:44 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (find_cross_jump): Use prev_nonnone_insn. + Don't cross-jump into the middle of a USE-CALL_INSN-CLOBBER + block; doing so can confuse reorg.c. + + * optabs.c (expand_binop, expand_binop, expand_twoval_binop): + If predicate doesn't match, ensure that operand is in a pseudo + register. Current code assumes that any register will suffice, + but an insn may want to reject certain hard registers. + (expand_unop, emit_unop_insn, emit_cmp_insn): Likewise. + +Sat Aug 4 15:29:09 1990 Michael Tiemann (rms at sugar-bombs.ai.mit.edu) + + * function.c (assign_parms): For parms passed by reference, + make the memory object's mode agree with the parm's original + type mode. + * calls.c (expand_call): Fixed braino in building argument + reference when FUNCTION_ARG_PASS_BY_REFERENCE is defined. + + * varasm.c (assemble_variable): Hack our way around the problem + that static class members look like initialized variables for the + purposes of establishing FIRST_GLOBAL_OBJECT_NAME. + + * cplus-lex.c (reinit_parse_for_method): Give error message for + common mistake of forgetting the function body. + + * cplus-typeck.c (build_component_ref): Make better error message + when field is not found. + + * cplus-class.c (finish_struct): TYPE_GETS_*_INIT_REF comes from + members as well. + + * cplus-typeck.c (c_expand_return): Give warning about returning + non-lvalues that come from functional casts. + + * cplus-search.c (get_base_distance): Changed to follow leftmost + path only when PARENT == TYPE_MAIN_VARIANT (PARENT). + + * cplus-class.c (modify_vtable_entries): Call get_base_distance + with 0 path_ptr, since we do not appear to use the path computed. + +Fri Aug 3 07:37:30 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * final.c (leaf_function_p): Delete line advertently retained + after change of July 29. + + * reorg.c (optimize_skip, try_hoist_target): Don't invert jump + unless can_reverse_comparison_p says it is OK. Use invert_jump + to do it. + (fill_simple_delay_slots): Another way flow of control can merge is + for two insns to jump to the same place; try to get insns from there. + (mostly_true_jump): Return 2 for a jump very likely to be true (the + branch back to the start of a loop). + (fill_slots_from_thread): Accept new arg LIKELY. If true, see if can + put increment in delay slot and undo it after the end of the loop. + (fill_eager_delay_slots): Pass new arg to fill_slots_from_thread. + If previous insn is conditional jump that also didn't get a delay + slot, see if swapping targets helps. + +Fri Aug 3 00:18:35 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (MAKE_POS): Avoid constant of uncertain signedness. + + * gnulib2.c (__bb_init_func): Add dummy function to prevent warning. + +Thu Aug 2 17:44:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * output.h (current_function_return_rtx): Add new variable. + * function.h (return_rtx): Likewise. + * function.c (push_function_context, pop_function_context): Save + and restore current_function_return_rtx. + (assign_parms, expand_function_start): Set current_function_return_rtx + to what is put in DECL_RTL (DECL_RESULT (current_function_decl)). + * reorg.c: No longer uses tree.h. + (dbr_schedule): Get result RTL from current_function_return_rtx instead + of reading it from current_function_decl. + * Makefile.in (reorg.o): No longer depends on TREE_H. + + * cse.c (remove_invalid_refs): Only invalidate an entry if it + references the actual register, not merely something sharing its + quantity. + (cse_insn): Don't abort if SRC and SRC_EQUIV map to different + hash classes. Merge them instead. + + * romp.md (mulsi3): Emit call to lmul$$ as a regular insn + rather than a CALL_INSN. + (divsi3, modsi3, udivsi3, umodsi3, call_libfcn): Deleted. + (divmodsi4, udivmodsi4): New patterns to call ldiv$$ and uldiv$$ + as a normal insn to allow CSE'ing of MOD with DIV. + +Wed Aug 1 21:56:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (yylex): Don't warn about non-decimal unsigned by default + if `u' was specified. Add similar warning for long and long long. + +Tue Jul 31 23:31:46 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-encore.h (FUNCTION_PROFILER): Override, putting `.' in label. + + * xm-vms.h (const): Delete the definition. + +Mon Jul 30 18:33:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (convert_for_assignment): Normally no warning + between char * and unsigned char *, etc. + (convert_arguments): Include arg number in incomplete type warning. + +Mon Jul 30 07:38:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (invert_jump): Don't do anything with labels if NLABEL + equals JUMP_LABEL. + (redirect_jump): Don't try to reference LABEL_NUSES if olabel is + zero (meaning this is a return insn). + (redirect_exp): Handle case of converting return to jump to + label. + + * dbxout.c (dbxout_parms): Allow parameter at zero offset from + AP to be represented as (MEM (REG ...)). + * sdbout.c (sdbout_parms): Likewise. + +Sun Jul 29 22:51:00 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (expand_twoval_binop_convert): Deleted. + (expand_twoval_binop): Rework to be handle predicates, modes, and + failures in a manner consistent with expand_binop. + Move code from expand_twoval_binop_convert inline and rework to + no longer hard-wire SImode and to handle failure. + + * config.gcc: Finish change of July 24th to have make_var_file depend + on host machine. + + * jump.c: Now includes insn-flags.h. + (jump_optimize): Try to put a RETURN at the end of the function if + control flows through to it. + JUMP_LABEL can now be zero for a RETURN or conditional RETURN. + Try to convert jump to end of function into (possibly conditional) + RETURN. + Use next_active_insn instead of next_real_insn; these do the same + thing prior to reload, after which USE and CLOBBERs don't matter. + redirect_jump may now fail so don't set CHANGED if it does. + Delete optimization of jump to RETURN; now subsumed by follow_jumps. + Reset INSN_CODE if changing conditional jump to unconditional. + (cond_jump_p): Conditional RETURN is conditional jump. + (follow_jumps): Change argument name to AFTER_RELOAD. + If not after reload, do not chain across a USE or CLOBBER. + Recognize RETURN insns. + (tension_vector_labels): Likewise. + (redirect_jump, redirect_exp): If NLABEL is zero, turn JUMP into a + (possibly conditional) RETURN; use validate_change to see if such an + insn exists. + Now returns non-zero if succeeds, 0 otherwise. + Unconditional RETURN looks like (RETURN), not (SET (PC) (RETURN)). + (thread_jumps): Ignore any type of RETURN insn. + * Makefile.in (jump.o): Depends on insn-flags.h. + * loop.c (strength_reduce): Don't confuse conditional return with + jump to top of loop when LOOP_TOP == 0. + * final.c (leaf_function_p): No longer static; no longer takes an arg. + (final_start_function): Don't pass START to leaf_function_p. + * romp.md (return pattern): Convert to a named pattern. + +Sun Jul 29 16:05:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-vms.h (ASM_OUTPUT_EXTERNAL): Check TREE_READONLY. + + * xm-vms.h (alloca): Use built-in alloca. + +Sun Jul 29 06:47:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c (fill_slots_from_thread): Restore inadvertantly deleted + lines. + +Fri Jul 27 19:53:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * Makefile.in (reorg.o): Depends on tree.h, basic-block.h, regs.h, + and output.h + +Fri Jul 27 16:30:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (assemble_variable): Handle ASM_OUTPUT_SHARED_COMMON + and ASM_OUTPUT_SHARED_LOCAL. + + * tm-encore.h (SHARED_SECTION_ASM_OP): New macro. + (ASM_OUTPUT_SHARED_COMMON, ASM_OUTPUT_SHARED_LOCAL): New. + All this waiting for papers from pabuhr@watmsg.waterloo.edu. + +Fri Jul 27 16:10:02 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * make-romp (CC): Set up to allow use of hc. + +Fri Jul 27 15:07:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (subst): Handle (ASHIFT 1 x) in (EQ (AND ... y) 0) + only if little-endian. + +Thu Jul 26 23:19:15 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (expand_shift): Consistently call protect_from_queue + before doing anything else. + Always put operand1 of extzv into a register because it is SImode + and we assume that this means a register. + +Thu Jul 26 14:18:11 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * varasm.c (assemble_variable): Delete dead code. + DATA_ALIGNMENT takes tree and current alignment and gives new + alignment for a non-automatic variable of that type. + Also apply CONSTANT_ALIGNMENT to the initial value; it now takes + the constant and old alignment and gives the new alignment. + Adjust DECL_ALIGN to the resulting alignment. + Use floor_log2 consistently instead of duplicating its function. + (get_or_assign_label): Use CONSTANT_ALIGNMENT instead of DATA_ALIGNMENT + and pass type instead of decl. + * expr.c (get_pointer_alignment): Rework to: distinguish reliably + between expressions giving the address and those giving the item being + addressed; use the alignment from the type of the object being + pointer to; return 0 if the type is not a pointer; and other + miscellaneous changes. + (string_constant): Skip CONVERT_EXPR and NON_LVALUE_EXPR as well + as NOP_EXPR. + (expand_builtin): Allow get_pointer_alignment to fail, in which case + we call the actual function. + * stmt.c (expand_decl): Set actual alignment obtained into DECL_ALIGN + since it may be better aligned than required and get_pointer_alignment + can take advantage of this. + * tm-gmicro.h, tm-pyr.h, tm.romp-h: Add or replace definitions of + CONSTANT_ALIGNMENT to word-align string constants and + DATA_ALIGNMENT to word-align character arrarys for builtin memory + functions. + + * fold-const.c (rshift_double): Reset carry after each shift of + one bit. + + * vax.md (ashrsi3): If right shift by constant, emit as ASHIFTRT. + (ashrsi3_const): New pattern to match it. + (casel): Delete patterns no longer needed. + * cse.c (cse_insn): Remove unneeded part of change of July 23. + (fold_rtx): Convert shift with negative constant count to shift in + the opposite direction. + * combine.c (subst): Likewise. + + * emit-rtl.c (init_emit_once): Initialize arg_pointer_rtx before + struct pointer and static chain values in case they want to use it. + +Thu Jul 26 12:31:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * final.c (final_scan_insn): Align label table to boundary appropriate + for items of its size. + (get_attr_length, shorten_branches): Allow for label table alignment. + +Wed Jul 25 15:06:44 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Handle uses of _IO* followed by spaces. + Change redirections for cd when testing that directory exists. + + By Tiemann: + + * emit-rtl.c (next_cc0_user): Handle insns in which cc0 + is set and used in the same insn. + + * final.c (leaf_function_p): Look inside INSNs which contain + a delayed-call sequence. + (final_start_function): Test `only_leaf_regs_used' before + `leaf_function_p', since that is likely to be faster. + (final_scan_insns): Normally we don't have NOTICE_UPDATE_CC + take action when processing the path of an annulled branch, + since that path does not affect the cc's of the fall-through + insns at all. However, we cannot always ignore the effect of + the cc's when processing a delayed annulled branch: when the + delayed annulled branch follows a label and carries a + REG_CC_STATUS note, that note must be processed. + + * genattr.c (main): Generate #defines for annulled branches + which are consistent with documentation. + + * reorg.c: Finish recent rework by modifying code specific to + machines that have annulling branches. + + * c-common.c (merge_component_comparisons): Previous logic did + not handle cases of (A == 1) && (B == 1), (A != 0) && (B != 0), + and (A != 1) || (B != 1). Fixed by expanding the logic out + longhand and letting the compiler do the proper cross-jumping. + + * tm-vms.h (ASM_OUTPUT_EXTERNAL): Use assemble_name. + + * expr.c (expand_expr): For BIND_EXPR, do the init for all vars. + + * stupid.c: Include flags.h. + * genrecog.c (main): Make insn-recog.c include flags.h. + +Sun Jul 22 12:04:43 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-except.c (cplus_expand_end_except): If the user gives a + default handler, the exception is considered caught in that + handler. + * cplus-parse.y (except_stmts): Rest of fix went here, in DEFAULT + case. + + * cplus-decl.c (finish_decl): Don't emit cleanups twice. + + * cplus-class.c (finish_struct_bits): Don't call + `fixup_vbase_offsets'. + * cplus-tree.c (fixup_vbase_offsets): #if 0 this function. + + * cplus-cvt.c (build_default_binary_type_conversion): Handle + arguments which are REFERENCE_TYPE. + + * cplus-method.c (prepare_inline): Set DECL_CONTEXT of this + function's parameters. + + * cplus-decl.c (grokfndecl): When adding a new virtual function + entry, RAISES may change a second time. + +Thu Jul 5 10:44:39 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-decl2.c (grokfield): Static consts need not be initialized + in the class definition. + +Mon Jul 2 06:12:49 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-init.c (resolve_offset_ref): If BASETYPE is not a base + type for the current class, give error and return. + +Sun Jul 1 00:18:47 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-decl.c (finish_function): Throw away more code if we have + an inline function from the interface. + + * cplus-class.c (add_virtual_function): Set DECL_VINDEX from the + virtual function which comes from the vtable shared by + CURRENT_CLASS_TYPE, if possibe. + + * cplus-typeck.c (build_binary_op): Call `default_conversion' + after doing type instantiation. + + * cplus-init.c (build_new): New 2.0 interpretation: `new int (10)' + means allocate an int, and initialize it with 10. + + * cplus-init.c (emit_base_init): Completion of fix for virtual + function table initialization. @@ BTW, this may now cause extra + virtual function table initializations. They will all be correct, + but they may also be redundant. GCC's optimizer doesn't know how + to remove even the simplest such redundancy. + +Sat Jun 30 13:54:30 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-class.c (finish_base_struct): Store BASETYPE in the + VFIELDS chain (in its TREE_TYPE). + +Fri Jun 29 09:26:17 1990 Michael Tiemann (tiemann at cygnus.com) + + * cplus-class.c (build_vtable,prepare_fresh_vtable): Stash the + type that caused this vtable to be defined in DECL_CONTEXT + * cplus-search.c (bfs_unmark_finished_struct): Work around + DECL_CONTEXT conflict for vtables. @@ NOT A SOLUTION. + + * cplus-lex.c: Extend meaning of `#pragma implementation' + to allow files to `implement' types from general headers. + +Tue Jul 24 22:18:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reorg.c: Major rework. Changes includes: + (mark_target_live_regs): Scan code to compute which registers are + live at particular insns. Uses tables created by flow, REG_DEAD + notes, and registers set before they are used. + (emit_delay_sequence): Always write SEQUENCE as INSN. Many routines + changed to reflect this. + (fill_simple_delay_slots): Loop for merge point when target of jump + comes back to fallthrough code. Try to get insns from there. + (fill_eager_delay_slots): Fallthrough and target case merged into new + function fill_slots_from_thread. + + * tm-romp.h, romp.md, out-romp.c, xm-romp.h, make-romp: New files to + support the ROMP microprocessor, used in the IBM PC RT. + + * recog.c (comparison_operator): New function. + + * jump.c (jump_optimize): If putting constant into register, see + if it is already present in the register. + +Tue Jul 24 15:35:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (build_binary_op_nodefault): Allow compare of any + pointer with const void *, etc. + +Tue Jul 24 17:10:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (get_inner_reference): New function. + (expand_assignment): Use it to find out about our target. + (expand_expr, case COMPONENT_REF): Likewise. + (expand_expr, case COND_EXPR): If can do store-flag, convert + X ? A+1 : A to A + (X!=0); fold-const made the former from the latter. + Only create label when we know we will need it. + Simplify unnessarily complex call to safe_from_p. + (expand_expr): Make new variable UNSIGNEDP and use it instead + of TREE_UNSIGNED (type). Also, consistently use existing + variable TYPE instead of TREE_TYPE (exp) and similarly for MODE. + +Tue Jul 24 13:50:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (collect_expansion): Error if ## at beg or end. + + * c-decl.c (grokdeclarator): Error for long, etc. with nonarith type. + Error for signed or unsigned with floating type. + Error for initialized parm. + + * config.gcc: Make make_var_file depend on host machine, not target. + +Tue Jul 24 13:40:35 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * varasm.c (decode_reg_name): Make TABLE static for non-GCC compilers. + + * c-typeck.c (type_for_size, type_for_mode): Delete from here. + (binary_op_error, shorten_compare, truthvalue_conversion): Likewise. + * cplus-typeck.c: Delete second copy from here. + * c-common: Move above functions to here. + +Tue Jul 24 12:20:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (path_include): Fix typo in var name. + +Mon Jul 23 17:46:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * config.gcc: Remove redundant assignment to tm_file for 88000. + Fix typo when assigning to make_var_file. + + * function.c (optimize_bit_field): Fix typo in change_address call. + +Mon Jul 23 16:59:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * varasm.c (decode_reg_name): Ignore % at beginning of name. + Support extra names defined by ADDITIONAL_REGISTER_NAMES. + * tm-i386.h (ADDITIONAL_REGISTER_NAMES): Define it. + + * dbxout.c (dbxout_init): Handle new macros + ASM_OUTPUT_MAIN_SOURCE_FILENAME and ASM_OUTPUT_MAIN_SOURCE_DIRECTORY. + * sdbout.c (sdbout_filename): Handle ASM_OUTPUT_MAIN_SOURCE_FILENAME. + +Mon Jul 23 16:50:32 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tm-vax.h (NOTICE_UPDATE_CC): CALL clobbers CC if inside PARALLEL too. + + * vax.md (call_value_pop): Fix typo in argument number. + + * cse.c (cse_insn): Shift's aren't associative if in different + directions, even if same rtx_code. + Try to fold result of associating the operation in case it is now + trivial. + + * jump.c (mark_modified_reg): New function. + (thread_jumps): Look at insns between target of first jump and the + second jump. Mark any registers that they modify and record if they + modify memory. + Don't go past a CODE_LABEL. + If we pass an unconditional jump, follow it. + Use prev_nonnote_insn instead of explicit loop. + (rtx_equal_for_thread_p): Consult recorded information to see if + memory of registers were modified prior to second jump. + * Makefile.in (jump.o): Now needs hard-reg-set.h. + +Sat Jul 21 13:58:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (O_RDONLY): Define it if not defined. + + * c-decl.c (finish_decl): No error for nonstatic incomplete array. + +Sat Jul 21 08:24:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * alliant.md (call patterns): Function address must be memory operand. + * convex.md, m68k.md, mips.md, ns32k.md, tahoe.md, vax.md: Likewise. + +Thu Jul 19 16:06:02 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (path_include): New function. + (main): Call that to handle CPATH envvar. + + * varasm.c (assemble_variable): Error if size exceeds 2**32-1. + + * emit-rtl.c (init_emit_once): Pass write_symbols to this function + (init_emit): Not this one. All callers changed. + +Tue Jul 17 21:24:08 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (update_equiv_regs): Don't replace a register with + an equivalence if the insn making the equivalence has a source + different from the equivalent value. + +Tue Jul 17 16:47:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (emit_block_move): Allow movstr* to fail. + +Tue Jul 17 15:19:18 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (change_address): Don't call memory_address if reload + is in progress, not just after it has completed. + +Mon Jul 16 00:34:27 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (can_reverse_comparison_p): New function. + (jump_optimize): In if (x) ... else x = 0; reverse comparison + if second operand of IF_THEN_ELSE is PC; use new function to + validate the reversal. + (jump_back_p): Use new function to see if safe to reverse comparison. + +Sun Jul 15 17:03:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Bug in last change; reject uncond jump + where conditional is expected. + + * flow.c (mark_used_regs): Handle autoincrement for *p + followed by q = p+size (neither one dead). + +Sat Jul 14 22:37:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (subst): Remove (zero_extend (subreg)) around lshiftrt. + Remove (and...) from second arg of shift. + Remove (and...) from around shift. + +Sat Jul 14 21:35:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (update_equiv_regs): New function. + (local_alloc): Call it. + (block_alloc): Don't handle REG_EQUIV notes here; now done in + update_equiv_reg. + + * calls.c: Include insn-flags.h. + * Makefile.in (calls.o): Likewise. + +Sat Jul 14 13:28:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (duplicate_decls): Don't set DECL_FRAME_SIZE for builtins. + + * vax.md (SImode bit-field patterns): Use nonmemory_operand. + + * jump.c (jump_optimize): + For if (...) x = 1; else x = 0; x must be integer. + + * gcc.c (default_compilers): Pass -P to cpp. + +Thu Jul 12 23:38:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_record): Handle BITFIELD_NBYTES_LIMITED. + + * sparc.md (call recognizers): Don't allow address arithmetic. + +Thu Jul 12 21:47:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (change_address): If reload has completed, don't call + memory_address. Instead, abort if address is not valid. + +Thu Jul 12 20:41:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * calls.c (emit_call_1): Handle vax, without call and call_value. + +Thu Jul 12 20:39:33 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (merge_equiv_classes): New function, from record_jump_equiv. + (record_jump_equiv): Use new function. + (gen_lowpart_if_possible): New function, based on gen_lowpart. + (cse_insn): In some cases of (set (subreg (FOO) 0) (BAR)), note + that (subreg BAR) is an equivalent of FOO. + * integrate.c (expand_inline_function): Likewise. + + * combine.c (subst): Check for constant in merge of shift into + ZERO_EXTRACT. + (gen_lowpart_for_combine): Look for SIGN_EXTEND or ZERO_EXTEND: + + * emit-rtl.c (gen_lowpart, gen_highpart): If passed a hard register, + return a new rtx for it in the proper mode, rather than a SUBREG. + +Wed Jul 11 17:05:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_insn): If already have a REG_WAS_0 note, don't make + another one. + Rework some loops on SETs to eliminate duplicate code and clean up + a bit. + + * rtlanal.c (refers_to_regno_p, reg_overlap_mentioned): Allow these + to work on pseudos as well as hard registers. + + * optabs.c (emit_no_conflict_block): Use reg_overlap_mentioned + to see if register is mentioned in insn. + +Wed Jul 11 16:56:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Don't optimize jumps to store-flags + if after register allocation. And don't do it if memref is used. + +Wed Jul 11 16:12:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c ({next,prev}_nonnote_insn, prev_label, prev_cc0_setter): + New functions. + ({next,prev}_{real,active}_insn, next_label): Rework to allow + argument of zero; return zero in that case. + (next_active_insn, prev_active_insn): If reload is not yet complete, + do the same thing as next_real_insn and prev_real_insn. + (next_cc0_user): Fix some bugs and typos. + + * rtlanal.c (reg_mentioned_p): Allow searches for labels to work. + +Wed Jul 11 12:25:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (duplicate_decls): In prev fix, use TREE_PUBLIC both times. + +Tue Jul 10 22:54:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * rtl.def (trap): New code. + +Tue Jul 10 17:48:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tree.c (integer_zerop, integer_onep, integer_all_onesp): Look inside + a NON_LVALUE_EXPR. + (real_zerop, real_onep, simple_cst_equal): Likewise. + +Tue Jul 10 17:05:50 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y, objc-parse.y, cplus-lex.c (yylex): + Terminate token_buf after integer. + +Mon Jul 9 15:22:22 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * c-decl.c (duplicate_decls): Correct test for extern followed by + static function declaration. + +Mon Jul 9 14:13:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (grokdeclarator): Move warning and error + about initializer with extern to the same place. Do one or the other. + + * rltanal.c (reg_mentioned_p): Don't look inside a CONST_DOUBLE. + +Sun Jul 8 14:12:21 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * toplev.c (pedwarn, pedwarn_with_file_and_line, pedwarn_with_decl): + New functions. + (flag_pedantic_errors): New variable controls them. + * c-decl.c, c-parse.y, c-typeck.c: Use new functions for many warnings. + * varasm.c: Likewise. + * gcc.c (default_compilers): Pass -pedantic* to cc1, cpp, etc. + * cccp.c (pedwarn): New function. Many calls to `warning' changed. + + * c-common.c (c_expand_expr_stmt): New function. + Error about incomplete type moved here. + * expr.c (expand_expr): Error deleted from here. + * c-parse.y: Use c_expand_expr_stmt where suitable. + + * flow.c (propagate_block): Set following_insn_dead on insn after test. + (mark_used_regs): Test that var; don't call insn_dead_p here. + +Fri Jul 6 13:05:01 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (build_indirect_ref): + No error if result is incomplete array. + + * expmed.c (store_bit_field, extract_bit_field): New arg TOTAL_SIZE. + Don't extract a bigger unit from memory than this. + * expr.c: Callers changed. + (store_field): New arg TOTAL_SIZE; callers changed. + + * out-ns32k.c (print_operand_address): Changes from Ian Dall. + * xm-ns32k.h: Use built in alloca. + * ns32k.md (ashlsi3): Don't forget to return a value. + (movsf): Output floating constants only if GAS_SYNTAX. + (call, call_value): Support JSR_ALWAYS. + Change handling of bsr if GAS_SYNTAX. + (bit test patterns): Use g constraint for op1 and rm for op0. + +Thu Jul 5 21:53:10 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (build_c_cast): Don't do implicit arithmetic conversions. + * fold-const.c (fold): Don't combine two conversions if one is + signed and the other is unsigned. + * integrate.c (copy_parm_decls): Finish making last change. + +Thu Jul 5 18:26:03 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (safe_from_p): If EXP is readonly memory, any memory location + is safe from it. + +Thu Jul 5 15:05:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (__fixunsdfsi): Change > to >=. + + * c-decl.c (start_struct, start_enum): Set C_TYPE_BEING_DEFINED. + (grokdeclarator): Don't warn of array if elt type being defined. + + * c-typeck.c (build_conditional_expr): Handle ((void *) 0). + Allow 0 versus function pointer. + +Thu Jul 5 08:05:09 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_insn): If machine has post-increment, don't associate + PLUS operations if they are both adding the same constant that is + a power of two. Similarly for post-decrement. + +Wed Jul 4 19:04:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * flow.c (mark_used_regs): Don't scan a comparison if the following + insn that uses the cc's is dead. + + * flow.c (propagate_block): If cc-using insn is dead, so is previous. + + * expmed.c (emit_store_flag): New function. + +Wed Jul 4 18:45:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * c-typeck.c (common_type, comptypes, default_conversion): + Use TYPE_READONLY in type to indicate const type; use TREE_READONLY + in decl to indicate object will never change. + (build_unary_op, readonly_warning, build_modify_expr): Likewise. + (c_expand_asm_operands): Likewise. + * cplus-class.c (finish_struct_bits): Likewise. + * cplus-cvt.c (build_type_conversion): Likewise. + * cplus-type2.c (readonly_warning_or_error): Likewise. + * cplus-typeck.c (default_conversion, build_unary_op): Likewise + (build_modify_expr, c_expand_asm_operands): Likewise. + + * cplus-cvt.c (popclass): When making INDIRECT_REF, don't set + TREE_READONLY from TYPE_READONLY. + +Wed Jul 4 15:16:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Fix bugs in last change. + +Wed Jul 4 07:52:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case COMPONENT_REF): Delete extraneous test + for structure-value stack slot, which no longer exists. + + * reload1.c (bad_spill_regs): Should be static. + + * combine.c (subst, gen_lowpart_for_combine): Propagate + RTX_UNCHANGING_P when making a new MEM. + * c-typeck.c, cplus-typeck.c (build_indirect_ref): ANSI says that + de-reference of pointer-to-const is not readonly so don't set + RTX_UNCHANGING_P. + * explow.c (validize_mem): Use change_address so flags get copied + to new MEM. + * expr.c (convert_move, block_block_{to,from}_reg, emit_move_insn): + Likewise. + (do_tablejump): Set RTX_UNCHANGING_P in MEM accessing address table. + * function.c (optimize_bit_field, instantiate_virtual_regs_1): + Preserve flags when making new MEM. + * loop.c (invariant_p): Memory references to an invariant address + are invariant if RTX_UNCHANGING_P is set. + * recog.c (adj_offsettable_operand): Propagate RTX_UNCHANGING_P + when making new MEM. + * reload.c (find_reloads_toplev): Likewise. + * reload1.c (alter_reg): Stack slot is readonly if pseudo was. + (eliminate_regs): Propagate RTX_UNCHANING_P in new MEM. + * varasm.c (force_const_double_mem): Set RTX_UNCHANGING_P in new MEM. + +Tue Jul 3 21:50:58 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (expand_and): New function. + + * stmt.c (expand_expr_stmt): + If value is volatile, fetch it and then ignore it. + + * expr.c (expand_expr): Error if variable type is incomplete. + + * c-decl.c (grokdeclarator): Don't warn of incomplete array in typedef. + +Tue Jul 3 18:03:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * fold-const.c (fold): Convert "(1 << foo) & bar" to "(bar >> foo) & 1" + In "(a & 1) != 0", can convert to simply "a & 1". + * combine.c (subst): Convert branch on sign bit to signed comparison + with zero (possibly adding a SUBREG). + Convert ZERO_EXTRACT of the low-order bit of a right shift into a + ZERO_EXTRACT of the proper bit. + +Mon Jul 2 12:07:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c (jump_optimize): Convert conditionals for storing one + value into a store-flags insn. + + * vax.md (call_pop, call_value_pop): New names for call patterns. + Include the popping explicitly in the rtl. + + * jump.c (jump_optimize): Delete case for condjump followed + by unconditional to same label; was special case of another case. + Switch back to next_active_insn or prev_active_insn in a few cases. + + * function.c (init_function_start): Initialize + frame_pointer_needed to zero. + + * i386.md (tstsf): Clobber reg 0 in SImode. + +Sun Jul 1 14:31:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * jump.c: Use next_real_insn instead of next_active_insn. + Likewise for prev_active_insn. USE insns make a difference! + + * function.c (assign_stack_temp): Use largest alignment if BLKmode. + + * stddef.h: Check __SIZE_T also. + + * toplev.c: Include types.h first. + + * i386.md (trunc*2): Don't allow moving symbolic constant to memory. + Use wider move only for symbolic constant. + + * tm-convex.h (LINK_SPEC): Posix link flags. + * tm-convex.h (STARTFILE_SPEC): Posix start files. + * tm-convex[12].h (CPP_SPEC): Posix defines. + * tm-convex[12].h (LIB_SPEC): Posix libraries. + * tm-conv[12]os7.h: New files. + * config.gcc: use tm-conv*os7 if /usr/include/stdlib.h isn't there. + + * xm-convex.h (S_IFMT, S_IFREG): make visible if hidden for posix. + * xm-convex.h (_PROTO): define to keep 8.0 includes from screwing up. + + * tm-convex.h (ASM_OUTPUT_{FLOAT,DOUBLE}, PRINT_OPERAND): + use %e instead of %#g, which is broken or non-posix. + + * tm-convex.h (current_section_is_text): make extern. + * out-convex.c (current_section_is_text): define here. + * tm-convex.h (OVERRIDE_OPTIONS), out-convex.c (override_options): + useless; remove. + * tm-convex.h (CPP_PREDEFINES): remove parsec, long gone from + system includes. + +Sat Jun 30 14:01:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (pending_xref_error): Fix typo in arg order. + + * cccp.c (do_include): Mention non-ex system headers for -M. + Guess the directory. + (check_macro_name): Should not be static. + + * rtl.def (inline_header): Add a vector at the end. + * rtl.h (ORIGINAL_ARG_VECTOR): New macro. + (RTVEC_ELT): New macro. + * emit-rtl.c (gen_inline_header_rtx): New argument for that vector. + * integrate.c (save_for_inline): Copy arg rtls if nec, then make + an arg vector to put in the header. + (expand_inline_function): Look in that vector for the rtl. + (copy_parm_decls): Likewise. + + * c-decl.c (duplicate_decls): Warn if function declared external + and later static. + +Fri Jun 29 13:29:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cccp.c (handle_directive): Supply missing *. + +Thu Jun 28 21:39:43 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * m68k.md (muldf3 for 68881): Generate fscale if appropriate. + * out-m68k.c (floating_exact_log2): New function. + +Wed Jun 27 17:19:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (finish_struct): New handling of zero-width bit fields. + Store appropriate data in them like other bit fields. + Don't delete them until after layout. + Don't mess with alignment of following field; set its own. + If PCC_BITFIELD_TYPE_MATTERS, get alignment from type. + * stor-layout.c (layout_record): For zero-width field, if + PCC_BITFIELD_TYPE_MATTERS, alignment does not affect that of structure. + (layout_decl): Don't abort for zero-width if no name. + + * function.c (expand_function_start): + Output ...FUNCTION_BEG note here, after assign_parms. + (init_function_start): Not here. + + * sdbout.c (sdbout_record_type_name): Conditionalize for + SDB_ALLOW_FORWARD_REFERENCES. Don't use typedef names, just tags. + (sdbout_begin_block): Likewise. + (plain_type_1): Likewise. Also move code to output structure size. + (sdbout_symbol): Output the type if not yet output. + Don't output top-level initialized variables yet. + Avoid crash if variable never got any rtl. + Add conditional for SDB_AUTO_NORMALIZE_OFFSET. + (sdbout_toplevel_data, sdbout_queue_anonymous_type): + (sdbout_dequeue_anonymous_type): New functions. + (sdbout_tags): Reverse the list first. + Output enums before other things. + (sdbout_reg_parm): Fake a name if necessary. Use C_REGPARM. + * toplev.c (compile_file): Call sdbout_toplevel_data. + + * c-typeck.c (convert_for_assignment): Disable warnings for pointers + to const and volatile functions. + + * expr.c (expand_expr): Mark variable as used. + +Tue Jun 26 17:05:00 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-sparc.h (LINK_SPEC): Delete spurious `-'. + + * tm-sun3.h (ASM_OUTPUT_FLOAT_OPERAND): Handle minus zero. + (ASM_OUTPUT_DOUBLE_OPERAND): Likewise. + + * stor-layout.c (layout_type): Check TYPE_NO_FORCE_BLK in union fields. + +Tue Jun 26 01:48:57 1990 Michael Tiemann (tiemann at cygnus.com) + + * tree.c (dump_tree_statistics): Dummy function. To be filled in + later when we decide what tree statistics should be measured. + (build): Now ok to take arguments of length 1. `build1' cannot be + used to allocate 's' tree nodes whcih might have length 1. + + * All GNU C++ files updated to 1.37.2 (alpha 2). NOTE: cplus-decl.c + needs to be fixed to not us RTL. I'm leaving this file in its + current state so that the GNU C++ compiler at least compiles. + + * All SPARC files: modified to use registers %f30 and %f31 as + temporaries for holding floating-point zero. Used to use %f0 and + %f1, which made it impossible to compare function return values with + zero. + +Mon Jun 25 16:54:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * function.c (init_function_start): New args give file/line for first note. + * c-decl.c (store_parm_decls): Pass them. + * integrate.c (output_inline_function): Pass dummies for them. + * final.c (final_start_function): For sdb, don't output a line number, + just set last_linenum. + + * c-parse.y (hash, is_reserved_word): New keyword __label__. + + * stddef.h: Check _T_SIZE as well as _SIZE_T. + +Sun Jun 24 16:09:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_expr): Do preserve_temp_slots for TARGET_EXPR. + +Sat Jun 23 09:52:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genpeep.c (gen_peephole): Ignore USE and CLOBBER insn as well as + NOTE when matching peephole. + +Fri Jun 22 17:40:56 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (process_init_constructor): Set up TREE_PURPOSE + in record constructor elements. + + * cexp.y (exp1): If pedantic, warn about commas. + (tokentab2): Add entries for ++ and --. + (yylex): Error if those are used. + + * c-decl.c (lookup_tag): For wrong kind of type, just set flag. + (shadow_tag): Clear the flag. + (pending_xref_error): Print the error message here if flag set. + * c-parse.y (setspecs): Call that. + + * calls.c (emit_call_1): Use call_pop and call_value_pop insns + to record when the called function pops its args. + +Fri Jun 22 16:43:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * local-alloc.c (wipe_dead_reg): Remove REG_DEAD note for unset reg. + + * tm-sparc.h: Replace FIX_FRAME_POINTER_ADDRESS with + INITIAL_FRAME_POINTER_OFFSET. + + * tm-vax.h (RTX_COSTS): Show shifts are relatively expensive. + +Fri Jun 22 15:05:24 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile.in (GEN): New variable. + (P): New variable. + (cc1, cc1plus, cc1obj): Use $(P). + + * cccp.c (check_macro_name): New subroutine taken from do_define. + (do_define, do_undef): Use this. + (do_undef): Warn if junk follows name. + (handle_directive): Always ignore empty directive. + Warn if \f or \v in directive. Error for malformed directive name. + + * tree.h (BUILT_IN_NEXT_ARG): Define it. + * c-decl.c (init_decl_processing): Declare __builtin_next_arg. + * expr.h (current_function_arg_offset_rtx): Declare it. + * function.c (assign_parms): Set that variable at end. + * expr.c (expand_builtin): Implement __builtin_next_arg. + * stdarg.h (va_start): Use __builtin_next_arg. + + * c-decl.c (grokdeclarator): Check for TRADITIONAL_RETURN_FLOAT. + +Fri Jun 22 07:07:53 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * final.c (final_scan_insn): Put label for jump table in same section + (read-only data) as jump table. + + * loop.c: Allow tm.h to define ..._BENEFIT and COPY_PENALTY. + +Wed Jun 20 13:03:53 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-apollo68.h (FUNCTION_ARG_PADDING): Never pad. + (STACK_BOUNDARY): Make it 32. + (CPP_SPEC): Add spaces. Define _APOLLO_SOURCE if not -ansi. + + * c-common.c (check_case_value): New function. + * c-parse.y (stmt, when parsing case): Use that. + Add new rule for case range. + + * reload1.c (reload_inheritance_insn): New variable. + (reg_reloaded_insn): New variable. + (choose_reload_regs): Update those variables. + (emit_reload_insns): Use them to remove deaths from insns + that used input reloads. + (reload_as_needed): Clear reg_reloaded_insn when necessary. + + * m68k.md (ashlsi3, lshlsi3): Use add to self to shift one bit. + + * dbxout.c (STAB_CODE_TYPE): New macro defined as type for stab codes. + Use in place of enum __stab_debug_code. + +Tue Jun 19 22:56:40 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_increment): For preincrement, don't load value twice: + use TEMP as input to addition. + +Tue Jun 19 06:53:13 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * explow.c (adjust_stack, anti_adjust_stack): Use expand_binop instead + of gen_{add,sub}2_insn since the latter will abort if the constant is + out of range for the machine. + +Tue Jun 19 00:35:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * local-alloc.c (post_mark_life): Don't decrement DEATH + if it equals BIRTH. Don't ever increment DEATH. + + * varasm.c (output_constructor): Discard non_lvalue_expr, not nop_expr. + Handle missing values. Use field in the tree_list, if any. + (output_addressed_constants): Don't die if value is missing. + * c-typeck.c (process_init_constructor): Handle index and field specs. + * c-parse.y (initlist): Parse them. + +Mon Jun 18 15:58:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c, cplus-decl.c (duplicate_decls): + Types don't "match" if one is error. + + * c-parse.y (label_decl): Use new keyword __label__, not colon. + + * c-parse.gperf (__label__): New keyword. + + * mips.md (probe): Make a single insn, just a memref. + +Mon Jun 18 14:27:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (loop_optimize): Set max_luid to last luid + 1, as documented. + + * local-alloc.c (qty_clobber): New variable. + (local_alloc): Allocate and initialize it. + (reg_is_set): Set qty_clobber for a clobber of a pseudo used only + in this insn. + (find_free_reg): Pass qty_clobber to post_mark_life. + (post_mark_life): If CLOBBER if non-zero, register isn't live after + its death insn. + + * integrate.c (expand_inline_function): Don't call try_constants on + an insn that sets CC0 until we have processed the next insn. Then + call it on both. This is because the recognizer for these insns + may want to look at the user of CC0. + +Mon Jun 18 13:25:59 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * mips.md (ashlqi3, ashlhi3, one_cmplqi2, one_cmplhi2): Deleted. + (ashlsi3, ashrsi3, lshrsi3, neg*, one_cmplsi2): Simplified. + Don't output comments. Use more specific predicates. + + * mips.md (movsf, movdf): Use L, M codes to avoid #ifdef's. + Also simplify and don't output comments. + (anonymous patterns for those insns): Deleted. + (loading floating constant): New patterns added. + (move qi to si pattern): Deleted; ridiculous. + (movdi, movsi, movhi, movqi): No need to check for moving reg to self. + + * mips.md (nop): Use .set noreorder to placate assembler. + +Sun Jun 17 20:01:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * gcc.c (set_spec): Don't use `name' for both old spec and name of + spec. Use new var old_spec for the former use. + Don't use (char *) 0 for null spec; use a null string instead. + + * jump.c (jump_optimize): Don't special-case deleting an ADDR_DIFF_VEC. + Merge code to detect trivial ADDR_VEC and ADDR_DIFF_VEC. + (mark_jump_label): Don't count the use of a vector table label in + ADDR_DIFF_VEC. + (delete_insn): Can now handle ADDR_DIFF_VEC. + (delete_labelref_insn): New function. + (redirect_tablejump): Call new function to delete insn that references + the jump table. + +Sun Jun 17 01:19:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * genemit.c (gen_expand): Don't generate `operands' if size is 0. + + * tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Displacement must be multiple + of the alignment of the operand. + + * i860.md (signed bit field recognizers): Don't shift by >31 bits. + + * out-i860.c (output_delayed_branch): Pass register properly to + load_opcode. + + * mips.md (general/fp reg move patterns): Use codes L, M, D. + (movdi): Likewise. And don't output useless comments. + Use the assembler temp reg for non-offsettable address. + (movsi, movhi, movqi): Output nothing for move from reg to itself. + Output li to load a constant. Use `move' instead of `add'. + Don't output useless comments. + (load-address pattern): Deleted; handled by addsi3 pattern. + + * mips.md (addsi3, mulsi3): Make both input predicates arith_operand + since they are commutative. + (andsi3, iorsi3, xorsi3): Likewise. + + * tm-mips.h (MOST_SIGNIFICANT_WORD, LEAST_SIGNIFICANT_WORD): New. + + * tm-mips.h (PRINT_OPERAND): New codes D, L, M. + * mips.md (anddi3, iordi3, xordi3): Use earlyclobber to stop overlap. + Use new print code D. + + * mips.md (andsi3, iorsi3, xorsi3): Make predicates more specific. + (andhi3, ..., andqi3, ...): Patterns deleted. + (patterns for nor): New anonymous patterns. + * out-mips.c (uns_arith_operand): New function. + + * mips.md (trunc*, zero_extend*, extend*, fix_trunc*, float*): + Use more specific predicates. + + * mips.md (addhi3, ..., addqi3, ...): Patterns deleted. + (addsi3, subsi3, mulsi3, divsi3): Make predicates more specific. + Delete useless comments from assembler code. + Use more generic op codes rather than special cases such as addiu. + (divmodsi4, udivmodsi4, udivsi3, modsi3, umodsi3): New patterns. + (abssf2, absdf2): New patterns. + +Sun Jun 17 06:56:10 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (COST, rtx_cost, make_regs_eqv): Indicate that hard registers + in fixed_regs are even cheaper than pseudos. + + * function.c (instantiate_virtual_regs_1): If valid, replace PLUS + whose second operand would be zero with its first operand. + +Sun Jun 17 00:17:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sdbout.c (sdbout_symbol): Get right regno for var-length object. + + * combine.c (simplify_set_cc0_and): Strip SUBREGs, but only if + they truncate. Handle ASHIFTRT like LSHIFTRT. + (try_combine): Call simplify_set_cc0_and in all those cases. + (subst): Handle (zero_extract (subreg (lshift (reg )))). + +Sat Jun 16 23:11:52 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.c (get_narrower, get_unwidened): Bit field test was backwards. + +Sat Jun 16 19:07:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * fold-const.c (fold): Fix typo in test for distributing binary + operator over conditional and compound expressions. + + * genoutput.c: Remove vestiges of obsolete and never used + INSN_MACHINE_INFO. + + * rtl.def (MATCH_PARALLEL): Add new RTL code. + * genconfig.c (walk_insn_part): Support MATCH_PARALLEL. + * genemit.c (max_operand_1): Likewise. + (gen_exp): Just write operand for MATCH_PARALLEL. + (gen_expand, gen_split): Support MATCH_PARALLEL. + * genrecog.c (walk_rtx): Add support for MATCH_PARALLEL. + * genoutput.c (scan_operands): Suppport MATCH_PARALLEL + like MATCH_OPERATOR. + * genpeep.c (match_rtx): Add code to support MATCH_PARALLEL. + Don't write unnecessary cast to `rtx'. + * genrecog.c (add_to_sequence): Simplify handling of mode. + Support MATCH_PARALLEL. + + * expr.c (move_block_{to,from}_reg): Support load/store multiple. + * function.c (instantiate_virtual_regs_1): If can't substitute + new pseudo for virtual register, try doing the substitution + globally throughout the entire insn. This lets load/store multiple + insns refer to virtual registers in their addresses. + + * genrecog.c (write_split_tree, write_split_subroutine): Deleted. + (break_out_subroutines, write_subroutine, write_tree): Accept + parameters that indicate whether we are making gen_split or gen_recog. + (main): Pass new parameters to break_out_subroutines and write_tree. + + * final.c (final_scan_insn): Process insns that set CC whenever a + REG_CC_STATUS note is found; not only JUMP_INSNs can use CC. + When scanning REG_CC_STATUS insns, set cc_prev_status from cc_status + each time. + + * recog.c (validate_replace_rtx): New function that tries to + replace all occurrences of an object within an insn and see if the + resulting insn is valid. + +Thu Jun 14 06:58:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (emit_no_conflict_block): Write REG_NO_CONFLICT notes all + all insns in the block that modify the output. Write them on the + final insn even if we don't put a REG_EQUAL note there. + + * stmt.c (expand_return): Only distribute return down a conditional + expression if tail recursion is possible in a branch. + + * expr.c (expand_expr): Remove obsolete reference to when we had + a shared structure-value slot. + + * jump.c (get_label_before, get_label_after, follow_jumps): No longer + static. + * rtl.h: Define them. + +Mon Jun 11 17:35:40 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * loop.c (INSN_LUID): Check for INSN_UID above the area that we + know about. + (loop_optimize): Cannot use INSN_LUID as lhs. + (scan_loop): If first jump is to label made by loop, we can't + tell if it is in range or not, so reject loop. + Reject loop if SCAN_START was an insn previously made by loop since + we won't know its luid. + Only call loop_reg_used_before if argument has known luid. + Mark partial invariant as global if its insn was made by loop. + (ignore_some_movables): Don't assume all invariants have luids. + (strength_reduce): Use no_labels_between_p instead of + labels_in_range_p. + Don't look at luid of insns for which one doesn't exist. + (valid_initial_value_p): Reject initializations in insns whose + luid we don't know. + + * loop.c (product_cheap_p): Put all our rtl into a separate obstack + and free memory from it. If we use current_obstack, we may free + memory allocated by gen_reg_rtx, which must be preserved. + + * c-common.c (rewrite_for_merged_ref): A non-zero one-bit signed field + is -1, not 1. + * c-typeck.c, cplus-typeck.c (build_binary_op_nodefault): If can't + merge comparisons, don't use result of rewrite_for_merged_ref; + comparisons with zero are more efficient. + + * protoize.c (main): Don't declare as extern. + + * c-aux-info.c (gen_aux_info_record): Don't declare extern. + + * genemit (gen_split): Rework to fix numerous bugs and typos. + + * function.c (assign_parms): Avoid generating (PLUS foo (const_int 0)). + +Wed Jun 6 20:03:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * gencodes.c (main): Count a code number for DEFINE_SPLIT. + + * rtlanal.c (note_store): Pass SUBREG of a hard register to function. + (reg_overlap_mentioned_p): Handle receiving SUBREG of hard register. + * integrate.c (mark_stores): Likewise. + * local-alloc.c (reg_is_set, reg_is_born): Likewise. + * reload1.c (mark_not_eliminable): Likewise. + + * loop.c (move_movables): Don't blow up if moving last real insn + in function. + +Wed Jun 6 19:44:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gcc.c (default_compilers): Pass -traditional before -f*. + Delete -gg option. + +Sun Jun 3 22:44:12 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (grokdeclarator): Warn about extern with initializer. + +Sun Jun 3 22:32:19 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * genrecog.c (main): Don't call write_tree with null if no insns + were in file. + +Sat Jun 2 21:49:24 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, cases ABS_EXPR, MAX_EXPR, MIN_EXPR): Use target + unless zero or safe_from_p rejects it. + (expand_expr, conditional cases): Likewise. + +Sat Jun 2 14:46:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (grokdeclarator): Handle const and volatile with parm + specified as function type. + +Fri Jun 1 16:13:39 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * rtl.def (DEFINE_FUNCTION_UNIT): Change specifications so + it now is one per operation type, rather than one per + function unit. + * genattr.c (write_units): Write out new function names and + function unit table structure. + * genattrtab.c (struct function_unit_op): New structure. + (struct function_unit): Updated for new definition of + DEFINE_FUNCTION_UNIT. + (SIMPLIFY_TEST_EXP): New macro to reduce number of function calls + to simplify_test_exp. Replace all call to the function with + uses of the macro. + (check_attr_test, make_alternative_compare): Show that EQ_ATTR with + attribute of "alternative", MATCH_OPERAND, and comparison cases can't + be simplified. + (expand_units, gen_unit, write_function_unit_info): Support new + meaning of DEFINE_FUNCTION_UNIT. + (simplify_test_expr): Rework AND and IOR cases to reduce rescans. + Once an expression has been simplified, set RTX_UNCHANGING_P so + we won't try simplifying it again. Don't do this if INSN_CODE == -2. + (write_attr_set): Don't make a recursive call if we know that + the test we are writing will always be false. Also clean up a bit. + (main): true_rtx and false_rtx don't need to be simplified. + Write gen_attr_... routines before special routines. + +Fri Jun 1 14:17:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-sparc.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): + Round frame size to multiple of STACK_BOUNDARY. + +Fri Jun 1 09:38:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * optabs.c (emit_no_conflict_block): Place REG_NO_CONFLICT notes on + insn that contains REG_EQUAL note instead of insn doing computation. + + * cplus-decl2.c, cplus-lex.c: Rename gettime to get_run_time. + Likewise for my_gettime to my_get_run_time. + + * Makefile.in (varasm.o, calls.o, explow.o, integrate.o, loop.o): + These do not depend on insn-codes.h. + * function.c: Explicitly include insn-codes.h to make it clear that it + is needed for the values of the CODE_FOR_... macros. + +Thu May 31 12:59:28 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (__trampoline): New function. + * Makefile.in (LIB2FUNCS): Compile it. + * tm-m68k.h (TRAMPOLINE_ALIGN): Define it. + * function.c (trampoline_address): Handle extra alignment. + * tm-m68k.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): + Redefine to transfer via __trampoline. + (TRANSFER_FROM_TRAMPOLINE): Define it, for gnulib2.c. + + * fold-const.c (fold): Preserve sign on constant when other terms + cancel (after call to split_tree). + +Thu May 31 12:39:51 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (preexpand_calls): Ignore BLOCK to avoid infinite recursion. + + * function.c (assign_parms): Fix typo getting mode of result. + + * cse.c (cse_basic_block): Don't go past TO if it is target of + followed jump. + +Wed May 30 21:31:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-parse.y (fndef, nested_function, notype_nested_function): + Use YYERROR1 instead of YYERROR. + (YYERROR1): New macro. + * cplus-parse.y, objc-parse.y: Likewise. + +Tue May 29 21:53:19 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * optabs.c (expand_float): Don't use hard reg as intermediate. + + * c-parse.y, objc-parse.y (yylex): Fix typo checking for ERANGE. + * cplus-lex.c (yylex): Copy current code for ERANGE from c-parse.y. + + * toplev.c (get_run_time): Renamed from gettime. + +Mon May 28 15:47:48 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (emit_push_insn): Don't push by pieces if alignment + forces use of small pushes that do problematical padding. + + * tm-sparc.h (SELECT_SECTION): Use TREE_SIDE_EFFECTS. + (STACK_POINTER_OFFSET): Now 68; does not include REG_PARM_STACK_SPACE. + (REG_PARM_STACK_SPACE): Now takes arg and has value. + (ACCUMULATE_OUTGOING_ARGS): Define this. + (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE, EXIT_IGNORE_STACK): Use + current_function_outgoing_args_size, not ..._pretend_... + (INITIALIZE_TRAMPOLINE): Use size_int. + + * varasm.c (make_decl_rtl, make_function_rtl): Run ENCODE_SEGMENT_INFO + if it is defined. + + * tree.def (BIND_EXPR): Add operand, which holds the BLOCK. + * expr.c (expand_expr): When BIND_EXPR is seen, flag the BLOCK. + * dbxout.c (dbxout_block): Test the flag in the BLOCK. + * sdbout.c (sdbout_block): Likewise. + * symout.c (symout_function): Likewise. + * c-parse.y (stmt expr rule): Corresponding change. + +Sun May 27 20:53:16 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * caller-save.c (save_call_clobbered_regs): Correctly mark registers + live for multi-word pseudos. + +Sat May 26 13:42:04 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * sdbout.c (sdb_begin_function_line): Now -1 if not in use. + (sdbout_end_function): Set it to -1. + + * tree.def: Rename EXIT_STMT to EXIT_EXPR and likewise for LOOP_STMT. + Also LET_STMT to BIND_EXPR, and GOTO_STMT, LABEL_STMT, RETURN_STMT + to ..._EXPR. + (struct tree_stmt, struct tree_if_stmt, struct tree_bind_stmt): + (struct tree_case_stmt): Types deleted. + + * tree.c (make_node, copy_node): Treat 's' like 'e' for size of node. + In make_node, make BLOCK and BIND_EXPR savable. + * expr.c (expand_expr): Rename, and use TREE_OPERAND to get body. + * cplus-init.c (build_vec_delete): Likewise, and build appropriately. + * print-tree.c (print_node): No special handling for these and IF_STMT. + * stmt.c (warn_if_unused_value): Likewise. + + * tree.def (BLOCK): New tree code for binding blocks. + * tree.h (BLOCK_VARS, BLOCK_TYPE_TAGS): + (BLOCK_SUBBLOCKS, BLOCK_SUPERCONTEXT): Renamed from STMT_... + (STMT_...): Except for those, all deleted. + (BLOCK_CONTROLLER): Points to corresponding BIND_EXPR, if any. + (BLOCK_CHAIN): New macro. + * tree.c (build_block): Renamed from build_let. + (decl_type_context, decl_function_context): Corresponding change. + * print-tree.c (print_node): Likewise. + * c-decl.c, cplus-decl.c (poplevel): Likewise. + * integrate.c (copy_decl_tree): Likewise. + * function.c (setjmp_protect, uninitialized_vars_warning): + (instantiate_decls_1): Likewise. + * c-parse.y, cplus-parse.y, objc-parse.y (stmt expr rule): Likewise. + * dbxout.c (dbxout_block): Expect only BLOCKs in this tree. + Ignore those with controllers that are not marked used. + * sdbout.c (sdbout_block): Likewise. + * symout.c (symout_function): Likewise. + + * tree.def: Delete IF_STMT, COMPOUND_STMT, WITH_STMT. + * expr.c (expand_expr): Delete handling of IF_STMT. + * tree.c (build_if, build_loop, build_case, build_goto): Deleted. + (build_expr_stmt, build_asm_stmt, build_return, build_exit): Likewise. + (build_compound): Likewise. + * cplus-init.c (build_vec_delete): Use COND_EXPR instead of IF_STMT. + +Sat May 26 13:23:12 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * calls.c (struct arg_data): Add new fields slot_offset and stack_slot. + (expand_call): Compute both location of start of stack slot and the + place in the stack slot where the first byte of the argument will be + placed. + Use stack_slot when loading a BLKmode object into registers. + When loading into registers, don't check reg_parm_seen, just look + at args[i].reg. + (expand_call, store_one_arg): Save and restore stack slot starting + from beginning of slot, not begining location where arg is stored. + (store_one_arg): After calling emit_push_insn, argument is really + at arg->stack_slot instead of arg->stack because if we want to + load it into registers, we include any padding. + +Sat May 26 01:37:27 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h (struct tree_type): Rename sep=>minval, sep_unit=>precision. + + * tree.c (init_obstacks, init_tree_codes): init_tree split in two. + * toplev.c (compike_file): Call them. + +Fri May 25 16:40:45 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_record): Nuke excess set of DECL_FIELD_BITPOS. + * varasm.c (output_constructor): Bitpos is zero for array (field == 0). + +Fri May 25 00:48:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * final.c (final_scan_insn): Restore inadvertent deletion in change + of May 24th. + +Fri May 25 00:13:12 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * print-tree.c (print_node): Print some missing fields for decls. + (print_node_brief): Always print value of integer or real constant. + +Thu May 24 21:28:36 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fold-const.c (real_zerop): Function deleted; was redundant. + + * tree.h (DECL_OFFSET): Macro deleted. + (struct tree_decl): Field deleted. + + * c-typeck.c (build_unary_op): For ADDR_EXPR of COMPONENT_REF, + use DECL_FIELD_BITPOS and handle non-constant values. + * stor-layout.c (layout_record, layout_union): Likewise. + * expr.c (expand_assignment, store_constructor, expand_expr): Likewise. + * dbxout.c (dbxout_type): Likewise. + * sdbout.c (sdbout_one_type): Likewise. + * c-common.c (merge_component_comparisons, make_merged_ref): Likewise. + * print-tree.c (print_node): Likewise. + * varasm.c (decode_addr_const, output_constructor): Likewise. + * objc-actions.c (build_ivar_list_initializer): Likewise. + * cplus-typeck.c (build_component_addr): Likewise. + And preserve TREE_CONSTANT flag. + (unary_complex_lvalue): Likewise. + + * tree.h (DECL_FUNCTION_CODE): Use the frame_size field, not `offset'. + Now meaningful only if function is built in. + (DECL_BUILT_IN): New flag macro. + * c-decl.c (builtin_function): Set the flag. + (pushdecl, duplicate_decls): Use and set it. + * c-typeck.c, cplus-typeck.c (build_function_call): Test it. + * cplus-decl.c (define_function): Set the flag. + (pushdecl, duplicate_decls): Use and set it. + * expr.c (expand_expr, preexpand_calls): Test it. + + * tree.h (DECL_INCOMING_RTL): New macro. + * function.c (assign_parms): Set up that field. + * dbxout.c (dbxout_parms, dbxout_reg_parms): Don't try to use + DECL_OFFSET for a parm; it is not set. Use DECL_INCOMING_RTL. + (PARM_PASSED_IN_MEMORY): New macro. + * sdbout.c (sdbout_parms, sdbout_reg_parms): Likewise. + (PARM_PASSED_IN_MEMORY): New macro. + + * cccp.c (macarg): When popping frame, free via free_ptr, not buf. + +Thu May 24 18:04:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (next_cc0_user): New function. + * recog.c (next_insn_tests_no_inequality): Use next_cc0_user. + * rtl.h: Define next_cc0_user. + + * cse.c (cse_insn): Make canon_reg calls in separate loop over the + SETs to avoid problems when MATCH_DUPs are present in an insn + pattern. + Don't canon CLOBBER in PARALLEL. Instead, canon MEM of CLOBBER, + both within a PARALLEL and standalone. Also, call note_mem_clobbered + only for MEM. + +Thu May 24 13:08:25 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * gnulib2.c (__negdi2): Make this inline for other functions. + +Thu May 24 07:15:04 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * jump.c (no_labels_between_p, prev_real_insn, next_real_insn): + (prev_active_insn, next_active_insn, next_label): Delete from here. + * rtlanal.c (no_labels_between_p): Put here. + * emit-rtl.c (prev_real_insn, next_real_insn, prev_active_insn): + (next_active_insn, next_label): Add to here. + + * c-common.c: Define NULL so NULL_TREE macro will work. + + * cplus-typeck.c (common_parms): Use oballoc and obfree to + avoid external current_obstack. + + * cse.c (fold_cc0, cse_insn): Use HASH macro instead of call to + canon_hash. + (cse_insn): When just recording jump insn, show it doesn't set CC0 + and set it as previous insn. + + * genoutput.c (gen_split): Fix typo in comment. + + * reorg.c: No longer need define next_label and next_real_insn as + extern. + + * toplev.c (rest_of_compilation): Use DELAY_SLOTS instead of + obsolete HAVE_DELAYED_BRANCH; include insn-attr.h. + + * final.c (dbr_sequence_length): Now present #ifdef DELAYED_BRANCHES. + Eliminate references to obsolete DBR_INSN_SLOTS. + (get_attr_length): Support ADJUST_INSN_LENGTH. + (get_attr_length, shorten_branches): Handle a SEQUENCE built for an + insn with filled delay slots. + (final_scan_insn): Avoid unnecessary call to recog_memoized. + Use validate_change instead of assuming replacement of CC0 by + STORE_FLAG_VALUE or const0_rtx is valid. + +Wed May 23 16:32:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * out-m68k.c, out-alliant.c (output_btst): + Use next_insn_tests_no_inequality, not next_insns_test_... + * recog.c (next_insns_test_no_inequality): Function deleted. + +Wed May 23 13:26:57 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expmed.c (store_bit_field): Don't bother making a SUBREG when we + call ourself recursively; the recursive call will just strip it off. + + * reorg.c: Include insn-attr.h before testing DELAY_SLOTS. + (emit_delay_sequence): Assign new INSN_UID to the SEQUENCE. + Chain insns through the sequence via NEXT_INSN and PREV_INSN. + * emit-rtl.c (next_insn, prev_insn): Go inside a SEQUENCE to + find the next or previous insn. + (make_insn_raw): No longer static. + * rtl.h: Define make_insn_raw, prev_active_insn, next_active_insn, + next_insn, and previous_insn. + + * genattrtab.c (write_eligible_delay): Always use "*delay_type"; + annuling only applies to candidate insn, not insn needing slot. + + * tree.c (init_tree): tree_node_counter doesn't exist any more. + (make_node, copy_node, make_tree_vec, build1): No longer set TREE_UID. + +Wed May 23 00:48:57 1990 Michael Tiemann (tiemann at cygnus.com) + + * genemit.c, genextract.c: Add support for MATCH_OP_DUP and + DEFINE_SPLIT. + + * cplus-init.c (build_delete): TREE_SIDE_EFFECTS can be + nonzero when address to be deleted is a cast of something + with side-effects (like a call). + (build_vec_delete): Simplify code now that `make_node' does the + right thing for _STMT nodes. + +Tue May 22 22:59:43 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (cse_end_basic_block): Don't crash if NEXT_INSN of + our branch target is zero. + Don't skip scanning first insn after destination label of branch. + + * expr.c (emit_move_insn): Abort if modes differ. + (expand_expr, comparison cases): Use TMODE when convenient. + (expand_expr, case COND): When optimizing (C ? 1 : 0), ensure + we return a result of the correct mode. + + * integrate.c (expand_inline_function): Can't call try_constants for + JUMP_INSN since we may have changed RETURN to jump. + +Tue May 22 22:40:22 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.h (struct tree_common): Delete field `uid'. + (TREE_UID): Macro deleted. + + * c-decl.c (finish_decl): Discard any variable sizes in the decl. + + * calls.c (expand_call): When making reg_notes for const function, + don't test is_const twice, and take account of order of pushing. + +Tue May 22 21:41:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * reload1.c (eliminate_regs): Ensure we process pseudo that is first + operand of PLUS. + + * expmed.c (store_bit_field): When stripping a SUBREG, adjust the + bit position to correspond to the change in modes. + + * cse.c (rtx_cost): Use COSTS_N_INSNS macro. + + * cse.c (qty_comparison_*): New vars. + (new_basic_block): Initialize qty_comparison_code. + (fold_rtx): If we see a comparison, check if we have seen the + same comparison before. If so, we know the result. + (record_jump_equiv): Save the comparison being passed in the + qty_comparison_* variables for possible later use by fold_rtx. + (cse_insn): If the current insn doesn't reference cc0, but the + previous insn sets it, delete the previous insn; presumably we + used to test it. + (cse_basic_block): Allocate new qty_comparison_* vars. + + * reload1.c (eliminate_regs): Second arg is now mode of enclosing + MEM, if any, rather than simply flag indicating inside MEM. + Use this mode to determine amount that, e.g., PRE_DEC adjusts by. + + * reload1.c (reload): Set regs_ever_live for a register that couldn't + be eliminated. + * final.c (only_leaf_regs_used): Don't do it here. + + * reorg.c: Eliminate obsolete macros *_REORG_FUNCTION. + Entire file is conditional on #ifdef DELAY_SLOTS. + + * Makefile.in: Use reorg.c instead of dbranch.c. + +Tue May 22 20:40:30 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-decl.c (complete_array_type): Get string elt size in bytes. + +Tue May 22 00:42:07 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * toplev.c (rest_of_compilation): Turn off VERBOSE arg to thread_jumps. + + * objc-parse.y, objc-actions.c: Replaces uses of build with build1 + when being used for 1-operand nodes. + +Mon May 21 23:59:21 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * global-alloc.c (hard_reg_full_preferences): New variable. + (global_alloc): Allocate and initialize it. + (prune_preferences): Include in regs_someone_prefers all words + of multi-word items that have preferences. Don't includes registers + we also prefer unless they are prefered by an allocno that needs + more registers. + (set_preference): Set hard_reg_full_preferences also. + +Mon May 21 21:36:29 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tree.c (make_node): All ..._STMT nodes have side effects, type void. + +Mon May 21 16:03:23 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * integrate.c (expand_inline_function): Set insns_at_start before + processing parameters since it might be needed during that processing. + Set RTX_INTEGRATED_P in all insns emitted, including labels and + barriers. + Ensure COPY is set correctly when replacing RETURN and avoid + duplicate barriers by calling emit_jump_insn instead of emit_jump. + Call note_stores for JUMP_INSNs and CALL_INSNs in case they have + side-effects we care about. + (copy_rtx_and_substitute): Convert (use (subreg FOO)) to (use FOO). + (subst_constants): Don't crash if we see a SUBREG replaced by a + REG or vice versa; we have no work to do in that case. + Fix typo in case MULT. + + * recog.c (constrain_operands): Call reg_fits_class_p with original + mode of OP, not mode of SUBREG_REG (op) when OP is SUBREG. + +Mon May 21 14:25:14 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expmed.c (extract_bit_field): Use class of TMODE for simple reg case. + + * flags.h (flag_pic): Declare it. + * tree.h (mode_for_size): Declare it. + * c-tree.h (merge_component_comparisons): Declare it. + +Mon May 21 07:27:12 1990 Michael Tiemann (tiemann at cygnus.com) + + * jump.c (thread_jumps): New function to optimize the case where one + conditional jump jumps to another testing the same condition. This + function usefully optimzies code both before common subexpression + elimination (where it "finds" common subexpressions that cse won't + find) and after loop optimization (where the loop optimizer + introduces new conditional jumps after rearranging loops). + (rtx_equal_for_thread_p): cheaply builds equivalences between + register so that jump threading can be effectively run before cse. + + * emit-rtl.c (init_emit_once): Initialize PIC_OFFSET_TABLE_RTX if + PIC_OFFSET_TABLE_REGNUM is defined. + + * tree.c (build,build1,build_nt): Set TREE_RAISES in addition to + TREE_SIDE_EFFECTS. + ({temp,saveable,perm}_tree_cons): Call `tree_cons' with arguments + instead of calling `make_node' directly. Eventually, `tree_cons' + could be faster than `make_node'. + (get_identifier): Use `bcmp' instead of `strcmp', since it's + faster. Also, test the first letter of each string before calling + the string comparison function. + + * toplev.c: Add new flags FLAG_THREAD_JUMPS and FLAG_PIC. The + former gives better common sub-expression elimination while the + latter tells the compiler to emit position-independent code. + (rest_of_compilation): Thread jumps if requested. + + * stor-layout.c (layout_{record,union}): For loop bodies meant only + for FIELD_DECLs, make sure we have a FIELD_DECL before proceeding. + + * stmt.c (expand_end_case): Use ADDR_DIFF_VEC if FLAG_PIC is + nonzero. + @@ NOTE: This would look a lot nicer if CASE_VECTOR_PC_RELATIVE were + an expression (like zero/nonzero) instead of soley a #define. + (fixup_cleanups): If cleanups emitted no code, don't call + `reorder_insns'. + (expand_decl_cleanup): Return 0 in case we are not in a block + (but instead at top-level). + + * stack.h: New GNU C++ file. + + * rtl.c (REG_NOTE_NAMES): Add REG_CC_STATUS and REG_TAIL_CALL. + * rtl.h: Ditto. Also make external declaration of + pic_offset_table_rtx. + * rtl.def: Add the following new RTL codes: DEFINE_SPLIT, + MATCH_OP_DUP, LO_SUM and HIGH. + + * reorg.c: New file. Performs instruction reorganizations + (primarily branch scheduling) after register allocation. + + * local-alloc.c (local_alloc): If defined, execute + ORDER_REGS_FOR_LOCAL_ALLOC. + + * genrecog.c (struct decision): Extended to handle DEFINE_SPLITs. + (write_tree): Split into three subroutines: `write_tree_1' which + does the main work, `write_tree' which does the original job, and + `write_split_tree' which builds the recognizer for insn splitting. + (add_to_sequence): Handle MATCH_OP_DUP. + (main): Bui.Build both insn->insn_code and insn->insn_list + recognizers. + Also, fixed comment at the top of the file. + * genpeep.c (main): Handle DEFINE_SPLIT. + (match_rtx): Handle MATCH_OP_DUP. + * genoutput.c (main): Handle DEFINE_SPLIT. + * genconfig.c (main): Handle DEFINE_SPLIT and MATCH_OP_DUP. + * genattrtab.c (main): Handle DEFINE_SPLIT. + + * fold-const.c (various places): Use `build1' constructor instead of + `build' constructor whenever possible. + + * final.c (final_scan_insn): If we know the status of the condition + codes at a particular JUMP_INSN (by dint of the fact that it has a + REG_CC_STATUS note), set CC_STATUS to reflect that value. + (only_leaf_regs_used): @@ For some reason the frame pointer register + is not marked live, even when it is. If FRAME_POINTER_NEEDED is + nonzero, set REGS_EVER_LIVE[FRAME_POINTER_REGNUM] to 1. + + * expr.c (emit_library_call): Round ARGS_SIZE.CONSTANT up, not down. + Use new macro MAX to accomplish this. + (safe_from_p): Don't check that EXP is nonzero. Instead, make + caller check (only in one place) that argument to `safe_from_p' is + non-zero. + (expand_expr): In COND_EXPR case, make sure that the predicate is + safe from the two conditions. Lossage occured in a construct of the + form (c = c < 0 ? d : -d). + + * explow.c (plus_constant): Handle LO_SUM rtl. + + * c-typeck.c (build_binary_op_nodefault): If optimizing, try merging + component refs and/or comparisons into larger operations. + + * c-common.c (rewrite_for_merged_ref): New function. Canonicallizes + expressions to be recognizable as candidates for merged + COMPONENT_REF operations. + (make_merged_ref): Builds custom FIELD_DECLs for accessing multiple + bits in a byte simultaneously. + (merge_component_comparisons): Optimize COMPONENT_REFs in + expressions that look like (x.p == y.p && x.q == y.q) or + (x.p != y.p || x.q != y.q). Also optimize (x.p == c1 && x.q == c2), + where C1 and C2 are known constants. + + * c-lang.c (print_lang_statistics): Added new hook function. + Currently does nothing for C. + + * c-convert.c: Use `build1' constructor instead of `build' + constructor whenever possible. + + * cplus-typeck.c (build_binary_op_nodefault): Call this function for + better applicability of the merged component ref optimization. + Also, add more recognized cases. + + * cplus-type2.c (merge_component_comparisons): Code improved, and + moved to c-common.c. + + * cplus-parse.y (operator_name): Recognize `operator,'. + (expr): On parsing ',', call `build_x_compound_expr' instead of + `build_compound_expr'. + (various places): Call `note_decl_list_got_semicolon' instead of + `note_decl_got_semicolon' where object in question is a list instead + of a type. + (component_declarator0): Set CURRENT_DECLSPECS from the bitfield + type. + + * cplus-method.c (hack_wrapper): Rename parameter TYPE to CNAME, + since it is a type name we pass in, not a type. + + * cplus-lex.c (opname_tab): Add `operator,'. + (note_decl_list_got_semicolon): Make notation that a list of + declarations should be considered as having "gotten a semicolon". + (extract_interface_info,interface_strcmp): Commented. + + * cplus-init.c (build_delete): Rest of changes to reimplement new + destructor mechanism. + (build_vbase_delete): Fix bug whereby arrays of length 0 and 1 were + not being correctly handled. Also, where elsements were not being + deleted. Use new destrouct calling convention. + (various places): Change TYPE_HAS_CONSTRUCTOR to + TREE_HAS_CONSTRUCTOR where appropriate. + + * cplus-expr.c (cplus_expand_expr): Use `emit_block_move' to copy + data from RETURN_TARGET to CALL_TARGET in case they do not line up + normally. + + * cplus-decl2.c (finish_file): No need to call `build_vbase_delete' + on top-level objects anymore, since destructors now do the right + thing. + + * cplus-decl.c (finish_function): Implement new destructor + mechanism: destroy virtual baseclass objects if (in$charge & 2) is + nonzero. Deallocate if (in$charge & 1) is nonzero. + + * cplus-cvt.c (build_up_reference): Use TREE_HAS_CONSTRUCTOR, not + TYPE_HAS_CONSTRUCTOR on non-TYPE tree nodes. + (build_up_reference): Only build up references between compatible + types. I.e., don't build a char& to an int object. + (convert_to_aggr): Set the TREE_SIDE_EFFECTS bit if the result is a + CALL_EXPR. + + * cplus-class.c (build_vbase_path): Recover from bad parse errors. + (build_method_call): Implement new ctor/dtor semantics to allow + differentiation between tearing an object down and deallocating it. + This also means that ctors and dtors can now aviod going through the + virtual function table mechanism as they construct/destruct their + objects. + + * ALL GNU C++ files: Use new macro IDENTIFIER_TYPE_VALUE to lookup + type value of an identifier. Also implement related macros + IDENTIFIER_HAS_TYPE_VALUE, and IDENTIFIER_TYPEDECL_VALUE. + + * cplus-cadillac.c (cadillac_switch_source): Change Prototype + declaration to non-prototype declaration. + (readable_p): Ditto. + +Sun May 20 20:23:39 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (c_sizeof): For incomplete type, warn and return 0. + (c_sizeof): Similar. + +Sun May 20 17:20:48 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * emit-rtl.c (gen_highpart): Support SUBREG like gen_lowpart. + +Sun May 20 16:59:17 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * c-typeck.c (build_c_cast): Warn about pointer-integer casts + where size differs. + + * stor-layout.c (layout_type): Multi-word field doesn't force BLKmode. + + * expmed.c (extract_bit_field): Use mode_for_size for lsb-aligned + fields in regs. No longer knows explicit modes for this. + +Sun May 20 15:12:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * Makefile.in: (reload1.o): Now depends on output.h. + + * calls.c (expand_call): No need to set frame_pointer_needed. + + * emit-rtl.c (gen_rtx): If reference to sp, ap, or fp, use + appropriate already-made rtx (e.g., stack_pointer_rtx). + + * expr.c (expand_builtin, case BUILT_IN_ALLOCA): No need to set + frame_pointer_needed. + + * final.c (final_start_function): No longer round size of frame here. + (final_scan_insn): Call constrain_operands with new operand. + + * flow.c (life_analysis): Change test on whether sp is live or + not to depend on FRAME_POINTER_REQUIRED and -fomit-frame-pointer. + (This code may not be relevant any more.) + + * function.c (push_function_context, pop_function_context): No need + to save and restore frame_pointer_needed. + (assign_{outer_,}stack_local): No need to set frame_pointer_needed. + (assign_parms): Likewise. + (init_function_start): Don't initialize frame_pointer_needed here. + + * function.h (frame_pointer_needed): Deleted. + + * genattrtab.c (write_attr_case): Write call to constrain_operands + with new second argument (reload_completed). + + * global-alloc.c (global_alloc): Don't left fp be allocated if we + already know we can't eliminate it. + (find_reg): Argument LOSERS is now a HARD_REG_SET instead of an array. + Precompute HARD_REG_SETs before loop over registers to speed up + allocation. + (retry_global_alloc): Argument FORBIDDEN_REGS is now a HARD_REG_SET. + (check_frame_pointer_required): Deleted; no longer needed. + + * integrate.c (save_for_inline, output_inline_function): No longer + need to save and restore frame_pointer_needed. + + * local-alloc.c (block_alloc): No longer have to worry that having + a stack variable might cause a frame pointer to be needed when it + might otherwise not be. + (find_free_reg): Don't allocate into registers that may be eliminated + later even if they are not FIXED_REGS. + + * output.h: Define reload_completed. + + * recog.c (constrain_operands): Add new argument, STRICT. If zero + and the constraints could not be matched, try again with a less + strict view (i.e., assume that reload will fix those things that + it can). This allows attribute values to be obtained prior to + reload. + Don't call alter_subreg or assume it has been called. Instead, + look inside SUBREGs. + + * reload.c (find_reloads_address{,_1}): Handle an address that + is a MEM; it may have been produced by register elimination. + (find_reloads_address): sp can also be the base register for a + stack slot. + (form_sum): No longer static. + + * reload1.c: Rewrite code that performs frame pointer elimination. Do + it during reload to ensure that all addresses and operands remain + valid; also generalize to support more than one pair of eliminations. + (reg_equiv_stack_slot, bad_spill_regs): New vars. + (forbidden_regs): Now a HARD_REG_SET. + (struct elim_table): New structure to describe register eliminations. + (reload): Start scanning registers after virtual registers. + Initialize reg_equiv_stack_slot for each register. Compute + reg_equiv_{mem,address} during register scan only if not eliminating + registers. + Compute initial default value of frame_pointer_needed. + Round frame size to BIGGEST_ALIGNMENT. + Create obstack for scratch rtl created by register elmination. + Initialize elimination table and spill registers that we know can't + be eliminated. + On each scan of the insns: Reset all elimination entries to initial + offsets, compute reg_equiv_{mem,address}, and see if any potentially + eliminable register changed status. + Try to eliminate registers from each insn unless we know that none + can be eliminated. + Don't complete groups for spill registers from registers that + shouldn't be used as spill registers. + Call reload_as_needed if register eliminations can be done, even if + no reloads are needed. + (new_spill_reg): Don't allow spilling an eliminable register. + Don't set forbidden_regs here. + Indicate something changed if a register that wasn't ever used before + was made a spill register. + (eliminate_frame_pointer, {alter,fix}_frame_pointer_address): Deleted. + (delete_dead_insn): New function. + (alter_reg): Call it. + Always set reg_equiv_stack_slot; if not eliminating registers, also + set reg_equiv_{mem,address}. + (eliminate_regs, eliminate_regs_in_insn): New functions. + (spill_hard_reg): Add new argument, CANT_ELIMINATE. + Set bit for register being spilled in forbidden_regs. + Use new argument instead of seeing if we are spilling fp. + No longer need to have frame pointer just because a reg needs a + stack slot. + (order_regs_for_reload): Set bad_spill_regs to contain those registers + that can't be used for spill registers. + Consider any eliminable register as bad to use as a spill register. + Rework initialization of potential_reload_regs. + (reload_as_needed): Handle register elimination in a similar manner + as function reload. + (gen_input_reload): When generating a reload for a PLUS, first try to + use a three-operand add insn. If that fails, emit two two-operand + insns. + + * rtl.h (FUNCTION_FLAGS_FRAME_POINTER_NEEDED): Deleted; all others + renumbered. + + * stmt.c (expand_decl): No longer have to set frame_pointer_needed + for variable-sized decl. + + * stupid.c (stupid_find_reg): Don't try to allocate an eliminable + register. + + * tm-vax.h (INITIAL_FRAME_POINTER_OFFSET): Add definition. + + * recog.c (next_insn_tests_no_inequality): If no next insn, return 0. + + * print-tree.c (print_node): Set length for TREE_VEC. + + * calls.c (store_one_arg): Set arg->value to location where argument + was placed (either register or stack). + + * recog.c: Needs flags.h (for flag_pretend_float): + * Makefile.in (recog.o): Likewise. + + * expr.c (convert_move): Add missing RETURN statements. + +Sat May 19 14:26:31 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (expand_expr, case EXIT_STMT): Return rather than falling + out of switch statement (and into `binop'). + + * cse.c (cse_insn): Allow conditional branches to be turned into + noops when the condition is known false by not calling validate_change. + + * cse.c (fold_rtx): Add LABEL_REF to list of fast RTL codes. + +Sat May 19 12:41:44 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-i386gas.h (ASM_OUTPUT_ALIGN): Use log as arg to .align. + (ASM_OUTPUT_ALIGN_CODE): Likewise. + + * gcc.c (default_compilers): For .cc, pass -g* to cc1. + +Sat May 19 06:51:26 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * tree.c (push_obstacks, pop_obstacks): Put struct obstack_stack + in obstack instead of using xmalloc/free. + (init_tree): Initialize new obstack for {push,pop}_obstacks. + + * tree.c (simple_cst_list_equal): No longer static. + +Fri May 18 19:38:01 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.h (MUST_PASS_IN_STACK): Refine test for case where padding + requirement prohibits passing in register. + +Fri May 18 18:14:18 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Fix CAT macro in memvar.h. + +Fri May 18 16:13:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * expr.c (do_jump): Don't explicitly copy item being tested from + MEM to REG. If needed, this will be done later. + +Thu May 17 14:33:50 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * Makefile.in (bootstrap): Pass LANGUAGES to inner makes. + +Thu May 17 13:57:34 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * fixincludes: Handle _CTRL like CTRL. + +Wed May 16 21:09:42 1990 Richard Kenner (kenner at vlsi1.ultra.edu) + + * fold-const (fold): Two conversions in a row are needed if from an + integer type to a pointer type of a different precision. + +Wed May 16 16:09:47 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * expr.c (expand_expr): Make sure a volatile value is referenced + even if value is ignored. + + * c-typeck.c (truthvalue_conversion): Result COND_EXPR gets type int. + (invert_truthvalue): Simplify COND_EXPR. + +Tue May 15 00:25:03 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * stor-layout.c (layout_record): Do set TYPE_SIZE if size is var. + + * reload.c (push_reload): If insn is an asm, verify that CLASS + is at least possible for the specified mode. + + * c-decl.c (complete_array_type): Compensate for wide string constant. + + * final.c (leaf_function_p): Reject everything if profiling. + + * function.c (optimize_bit_field): Adjust OFFSET if + BITS_BIG_ENDIAN != BYTES_BIG_ENDIAN. + + * expmed.c (store_bit_field, extract_bit_field): Rework the code + to adjust XBITPOS for the size within which to count. + (extract_bit_field): When converting MEM to REG, don't make SUBREG + immediately; fall through and let this happen in the code that + handles original registers of the wrong mode. + +Mon May 14 16:01:13 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * cexp.y (yylex): Ignore carriage return. + * cccp.c (initialize_char_syntax): Likewise. + (newline_fix, name_newline_fix): Likewise. + + * c-common.c: New file. + (combine_strings): Moved here. Fix errors for wide string length. + * c-parse.y, objc-parse.y, cplus-lex.c: Function deleted here. + +Sun May 13 08:08:41 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * integrate.c (subst_constants): Fix typo in case 'E'. + +Sat May 12 17:14:26 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * combine.c (subst): Don't change -(y-x) to x-y for IEEE floats. + Include real.h. + + * cse.c (fold_rtx): Don't simplify float+0, float-0, float*0 + if using IEEE floating point. + Don't simplify float-self even if not IEEE. + * fold-const.c (fold): Likewise. + + * i386.md (trunc**): Use long move if source is constant. + * out-i386.c (PRINT_REG): Handle CODE == 'k'. + + * fixincludes: Use rm -fr to delete before making link. + + * optabs.c (init_optabs): Support MULDI3_LIBCALL, etc. + +Sat May 12 17:04:58 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * cse.c (find_best_addr): Don't modify constant address MEMs; they + are shared. + +Sat May 12 15:17:37 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * ns32k.md (signed bitfield extract): Don't output assembler comment. + +Fri May 11 15:23:55 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) + + * Makefile.in: Don't use $(libsubdir) as a target since it involves + shell `...` constructs. + + * genattr.c (fatal, main): Remove relics of old program name. + * genattrtab.c: Likewise. + + * expr.c (expand_expr, case COND_EXPR): Add missing argument to + operand_equal_p. + + * reload.c (form_sum): Handle case where second operand is + (plus foo (const_int ...)). + + * c-typeck.c (c_sizeof{,_nowarn}, c_alignof): Don't blow up for + ERROR_MARK. + * cplus-typeck.c (c_sizeof{,_nowarn}, c_alignof): Likewise. + + * cplus-typeck.c (c_sizeof{,_nowarn}): Convert from bytes to chars, + since c defines sizeof (char) as 1. + + * loop.c (mark_loop_jump): RETURN, SIGN_EXTEND, and ZERO_EXTEND can + also occur in JUMP_INSN's. + + * reload.c (find_reloads, find_reloads_address): Correct errors where + an arg to find_reloads is "VOIDmode" instead of "0" and vice versa. + (find_reloads_address_1): Likewise. + + * global-alloc.c (global_alloc): Avoid divide-by-zero for allocnos + where all regs have reg_live_length == -2. + +Fri May 11 14:45:06 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * tm-i860.h (ASM_OUTPUT_CASE_LABEL): Align to multiple of 4. + +Thu May 10 23:43:31 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * out-i860.c (single_insn_src_p, strict_single_insn_src_p): + Correct conditions for needing multiple instructions. + (output_delayed_branch): Likewise. + +See file ChangeLog.1. + +Local Variables: +mode: indented-text +left-margin: 8 +fill-column: 76 +version-control: never +End: diff --git a/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. + + * 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