home *** CD-ROM | disk | FTP | other *** search
/ Education Sampler 1992 [NeXTSTEP] / Education_1992_Sampler.iso / NeXT / GnuSource / cc-61.0.1 / cc / ChangeLog-NeXT < prev    next >
Text File  |  1992-08-05  |  88KB  |  2,559 lines

  1.  
  2. Initial port to 68k (1/11/91):
  3.  
  4.     * config.gcc:  Entry for NeXT must set out_file to out-next.c.  RMS
  5.  
  6.     * config/out-next.c:  Typo: "flags" -> "flags.h"  RMS
  7.  
  8.     * config/tm-next.h (LIB_SPEC):  Brought up-to-date.  There are
  9.     probably more changes needed here.  RMS
  10.  
  11. Changes to cpp for #import on NeXT (1/15/91):
  12.  
  13.     * cccp.c (main):  Allow #import directive in c, c++, and Objective-C
  14.     on NeXT, since NeXT header files use #import.  #ifdef'ed NeXT.
  15.     We should change to using "#pragma once" before 3.0.
  16.  
  17. Fix for crasher when compiling _fixdfdi in gnulib2.c (1/15/91):
  18.  
  19.     * flow.c (libcall_dead_p):  Stallman's change of Jan 7 was not
  20.     finished.  Now using version of libcall_dead_p from Jan 15,
  21.     except undeclared variable "insn" changed to "x" two places.
  22.  
  23. Fix for #import bug (1/15/91):
  24.  
  25.     * cccp.c (lookup_import):  Return -2 if found, not -1.  RMS
  26.  
  27. Fix to Makefile (1/15/91):
  28.  
  29.     * Makefile.in (SYSCALLS.c.X):  Depend on gcc, not ./gcc.  This screws
  30.     up VPATH (at least on the NeXT).
  31.  
  32.     * proto-unproto.1:  Doesn't exist.  Created empty file so make works.
  33.  
  34. Fix for crasher when compiling init_lex in cplus-lex.c (1/16/91):
  35.  
  36.     * cse.c (fold_rtx):  When folding switch statements with constant
  37.     arguments, check that the offset is within the table.  This may
  38.     not be the case when the constant argument selects the default case.
  39.     Do not fold in this case, since this will always be in dead code
  40.     which will be deleted when jump is rerun.  RMS
  41.  
  42. NeXT changes for debugging (1/16/91):
  43.  
  44.     * toplev.c (compile_file):  Call new function dbxout_finish.  RMS
  45.  
  46.     * dbxout.c (dbxout_finish):  New function.  If defined, expand
  47.     ASM_OUTPUT_MAIN_SOURCE_FILE_END.  RMS
  48.     
  49.     * config/tm-next.h (ASM_OUTPUT_MAIN_SOURCE_FILE_END):  Output
  50.     an N_SO symbol with no name to mark the end of the module.  This
  51.     is needed to support scattered loading on the NeXT.  RMS
  52.  
  53. Fix for incorrect code when optimizing (1/16/91):
  54.  
  55.     * cse.c (subst):  Use Stallman's code for the ZERO_EXTEND case.
  56.     The existing code called simplify_and_const_int with the wrong mode.
  57.     This bug showed up in canon_hash in cse.c  There are extensive
  58.     differences between Stallman's version of combine.c and mine....
  59.  
  60. @@@ Integrate recent NeXT changes (1/17/91):
  61.  
  62.   Changes to driver to handle switches with multiple arguments:
  63.  
  64.     * gcc.c (struct switchstr, process_command,  give_switch):  Added two
  65.     new fields for second and third arguments of switch.  This ought to be
  66.     replaced with a more general mechanism for handling switches which
  67.     take multiple arguments.
  68.  
  69.   Changes to improve stabs (1/29/90):
  70.  
  71.     * config/tm-next.h:  Define DBX_CONTIN_LENGTH to be 0 so as to avoid
  72.     stab continuation altogether.  This saves a significant amount of
  73.     space in debug files, and eases the loader's job somewhat.  RMS
  74.  
  75.   Change to eliminate .gcc_compiled symbols (1/30/90):
  76.  
  77.     * config/tm-next.h:  Define ASM_IDENTIFY_GCC to be null to avoid
  78.     .gcc_compiled symbols.  They interfere with numerically sorted symbol
  79.     lists.  It is never a good idea to have two symbols with the same
  80.     value.  On the NeXT, GDB always assumes the code was compiled with
  81.     GCC.  We need a proper way to store version info and compiler option
  82.     info in object files.  RMS
  83.  
  84.   Change to remove -p profiling option (5/10/90):
  85.  
  86.     * config/tm-next.h (LIB_SPEC, STARTFILE_SPEC):  Warn that -p
  87.     is no longer supported, and that -pg should be used instead.
  88.  
  89.   Lots of changes for new assembler sections! (7/16/90):
  90.  
  91.     * config/tm-next.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS,
  92.     SELECT_SECTION, SELECT_RTX_SECTION)  Output literal strings in
  93.     the cstring section, 4-byte and 8-byte literals in the literal4 and
  94.     literal8 sections, and other constants in the const section.
  95.     These will be uniqued by the loader as appropriate.
  96.     The flag flag_no_mach_text_sections suppresses the use of these
  97.     new sections, and uses the text section instead.  Output Objective-C
  98.     symbols in the new Objective-C sections based on the decl's name.
  99.     (Ugh, there should be a better way to tag a decl with a section....)
  100.  
  101. Changes to move branch tables to the const section (7/17/90):
  102.  
  103.     * config/tm-next.h (CASE_VECTOR_PC_RELATIVE, CASE_VECTOR_MODE):
  104.     Use absolute branch tables rather than relative ones.
  105.  
  106.     * config/m68k.md (casesi, tablejump):  Don't use casesi insn, since it
  107.     assumes relative branch tables are being used.  Use new tablejump insn
  108.     instead.  This idea was taken from i860.md.  RMS
  109.  
  110.     * config/tm-next.h (GO_IF_INDEXABLE_BASE):  Don't use pc relative
  111.     addressing for LABEL_REF's.  Since branch tables are in the const
  112.     section, we treat LABEL_REF's like SYMBOL_REF's here.  Otherwise
  113.     invalid addresses were being generated.
  114.  
  115.   Change to help keep stack aligned (7/17/90):
  116.  
  117.     * config/tm-next.h (STACK_BOUNDARY):  Changed to 32 from 16.  This
  118.     doesn't appear to affect the calling convention, since all args are
  119.     rounded to 32-bits already.  It does affect the alignment enforced by
  120.     alloca, however.  With this change, all stack frames should be 32-bit
  121.     aligned    at all times (although their contents may not be).  RMS
  122.  
  123.   Changes to fix crashes for #pragmas longer than 80 characters (1/9/91):
  124.  
  125.     * config/out-next.c (handle_pragma):  Call to xrealloc had wrong args.
  126.  
  127. @@@ End of integration of recent NeXT changes.
  128.  
  129. Fixes to make Objective-C work (1/18/91):
  130.  
  131.     * objc-actions.c (start_class):  Since the CLASS_CLS_METHODS field is
  132.     overloaded with the TYPE_MAIN_VARIANT field, we must explicitly
  133.     initialize it to NULL_TREE.  This bug was directly related to Stallman
  134.     overloading class nodes with type nodes.
  135.  
  136. New debugging routine (1/19/91):
  137.  
  138.     * tree.c (debug_obstack):  New function.  Prints which obstack the
  139.     object is in, if any.  This is very useful for debugging obstack
  140.     problems.  This routine could be used when printing trees to avoid
  141.     crashing when printing freed nodes.  RMS
  142.  
  143. Added new arg to calls to start_function and finish_function (1/19/91):
  144.  
  145.     * objc-actions.c (really_start_method):  Added new arg to
  146.     start_function() two places.
  147.  
  148.     * objc-actions.c (finish_method_def):  Added new arg to
  149.     finish_function().
  150.  
  151. Changes to avoid crashing while printing trees (1/19/91):
  152.  
  153.     * print-tree.c (print_node):  Always print ERROR_MARK nodes in
  154.     brief format, since they often contain bogus type and chain fields.
  155.     RMS
  156.  
  157. Wow! I can run a small test program now....
  158.  
  159. Changes to cpp for // on NeXT (1/19/91):
  160.  
  161.     * cccp.c (main):  Allow // syle comments in c, c++, and Objective-C
  162.     on NeXT.
  163.  
  164. Change error message so as not to mention NeXT (1/21/91):
  165.  
  166.     * objc-actions.c (objc_check_decl):  Changed "NeXT" to "GNU".
  167.  
  168. Changes to ".m" spec (1/21/91):
  169.  
  170.     * gcc.c (compilers):  In ".m" spec, pass -D__OBJC__ to cpp.
  171.     Also pass -lang-objc and -gen-decls to cc1obj.
  172.  
  173. Changes to give error for referencing super in Object (1/21/91):
  174.  
  175.     * objc-actions.c (build_message_expr):  Disallow messages to
  176.     super in Object.
  177.  
  178. @@@ Integrate more recent NeXT changes for Objective-C (1/21/91):
  179.  
  180.   Bug fixes for categories (1/23/89):
  181.  
  182.     * objc-actions.c (add_category, lookup_instance_method_static,
  183.     lookup_class_method_static, start_class, finish_class, check_methods),
  184.     tree.h (struct objc_tree_class_type), tree.c (make_node, copy_node):
  185.     Added separate category interface and implementation nodes.  This
  186.     permits checking for completeness of category implementations, and
  187.     fixes several bugs.  The names should be changed before this is done.
  188.  
  189.   Add -Wselector warning (1/23/89):
  190.  
  191.     * objc-actions.c (finish_objc, lang_decode_option):  Added switch
  192.     -Wselector to warn about all potential selector conflicts in the
  193.     interfaces seen.  Simply runs through the selector hash table.
  194.  
  195.   Elimination of untagged struct instance variable weirdness (1/23/89):
  196.  
  197.     * objc-actions.c (check_ivars):  #ifdef'ed out code to allow untagged
  198.     struct instance variable in interface to match an untagged struct
  199.     instance variable in implementation.  ANSI C considers all untagged
  200.     structs separate types, so this should simply fail.
  201.     
  202.     * objc-actions.c (gen_declspecs):  Improved error messages for type
  203.     clashes involving untagged structs (and unions and enums).  Now prints
  204.     "untagged struct" rather than "struct ".
  205.  
  206.   More bug fixes for categories with the same name (1/29/90):
  207.  
  208.     * objc-actions.c (synth_id_with_class_suffix, really_start_method):
  209.     Changed category names to be ...Foo_Bar... instead of ...Bar..., so
  210.     that you can have several categories with the same name in one source
  211.     file.
  212.  
  213.   Fix to statically type messages to Class objects (1/31/90):
  214.  
  215.     * objc-actions.c (receiver_is_class_object):  New function to
  216.     determine whether the receiver object is a Class object.
  217.  
  218.     * objc-actions.c (build_message_expr):  Use new function to test for
  219.     Class objects, and then statically type messages to them.  This allows
  220.     class methods of the same name to return different types, and it
  221.     catches the case where an instance method is sent to a Class object.
  222.  
  223.   Changes to fix referencing super in category of Object (2/9/90):
  224.  
  225.     * objc-actions.c (get_super_receiver):  Give error if super_name is
  226.     null.
  227.  
  228.   Change to permit unnamed bit-field instance variables (2/22/90):
  229.  
  230.     * objc-actions.c (build_ivar_list_initializer):  Set ivar_name field
  231.     to NULL for unnamed bit-field ivar's.
  232.  
  233.   Code generation to make `forwarding' work (3/7/90):
  234.  
  235.     * tree.h: add `encode_type' field to method_decl node.
  236.     add encode_method_def() and call if from finish_method_def().
  237.     remove encode_method_decl() and don't call it from 
  238.     build_dispatch_table_initializer().
  239.  
  240.   Fix bug in dependency info for .m files (3/13/90):
  241.  
  242.     * cccp.c (main):  Check for .m suffix as well as .c and .cc.
  243.  
  244.   Lookup class methods in local implementation (3/21/90):
  245.  
  246.     * objc-actions.c (build_message_expr):  Check current implementation
  247.     before looking up in interfaces seen so far.
  248.  
  249.   Fix for spin loop for "@interface Foo : Foo" (4/12/90):
  250.  
  251.     * objc-actions.c (build_ivar_chain):  Check that interface of super is
  252.     not equal to interface of self.  No higher order loops are possible.
  253.  
  254.   Changes to improve Objective-C symbol names (4/16/90):
  255.  
  256.     * objc-actions.c (really_start_method):  Create symbol with standard
  257.     syntax for methods: +[ClassName(CategoryName) method:name:].
  258.  
  259.     * config/tm-next.h:  Redefine ASM_OUTPUT_LABELREF to put quotes around
  260.     method symbols.  Don't use an underscore.
  261.  
  262.   Lots of changes for new assembler sections! (7/16/90):
  263.  
  264.     * objc-actions.c (generate_dispatch_tables):  Use new internal names
  265.     for category class and instance methods:
  266.     __OBJC_CATEGORY_CLASS_METHODS_{ClassName}_{CategoryName} and
  267.     __OBJC_CATEGORY_INSTANCE_METHODS_{ClassName}_{CategoryName}.
  268.     This fixes an old bug where there was a class Foo_Bar and a category
  269.     Bar of Foo in the same source file.  It also permits SELECT_SECTION
  270.     to distinguish between the two unambiguously.
  271.  
  272.   Changes to fix new Objective-C sections (7/20/90):
  273.  
  274.     * objc-actions.c (finish_objc):  Don't output ".data" or ".align 2".
  275.     Do switch to all Objective-C sections in order, so that the assembler
  276.     will output all of them in the correct order.
  277.  
  278.   Changes to unique selector references (8/8/90):
  279.  
  280.     * objc-actions.c (_OBJC_SELECTOR_REFERENCES_decl,
  281.     _OBJC_SELECTOR_REFERENCES_id):  Removed.
  282.  
  283.     * objc-actions.c (synth_module_prologue):  Eliminated code to forward
  284.     declare the selector references array.
  285.  
  286.     * objc-actions.c (init_objc_symtab):  Eliminated code to initialize
  287.     "refs" field in objc_symtab structure (which is now vestigial).
  288.  
  289.     * objc-actions.c (build_selector_translation_table):  Rewrote.
  290.  
  291.     * objc-actions.c (build_selector_reference):  New routine.
  292.  
  293.     * objc-actions.c (build_message_expr, build_selector_expr):  Use new
  294.     routine.
  295.  
  296.     * c-decl.c (pushdecl_top_level):  New function (copied from g++).
  297.  
  298.   Fix for problem with static access to ivars in categories (9/10/90):
  299.  
  300.     * objc-actions.c (is_public):  Check that category's my_name
  301.     matches implementation, not super_name.
  302.  
  303.   Fix for Objective-C method parameter type problems (9/21/90):
  304.  
  305.     * objc-actions.c (get_arg_type_list):  Use new function
  306.     groktypename_inParmContext.
  307.  
  308.     * c-decl.c (groktypename_in_parm_context):  New function.
  309.  
  310.   Changes to add global symbols to pull categories into an archive (1/9/91):
  311.  
  312.     * objc-actions.c (finish_objc):  Output global symbols named
  313.     .objc_category_name_Foo_Bar, similar to existing symbols for
  314.     classes named .objc_class_name_Foo.  These will be used when
  315.     building archives to ensure that categories are linked in.
  316.  
  317. @@@ End of integration of more recent NeXT changes for Objective-C.
  318.  
  319. Changed Objective-C version number in module descriptor (1/22/91):
  320.  
  321.     * objc-actions.c (OBJC_VERSION):  Changed to 2.  This appears to be
  322.     required to get the changes to unique selector references to work.
  323.  
  324. Changed use of TYPE_SIZE to match Stallman's new usage (1/22/91):
  325.  
  326.     * objc-actions.c (init_module_descriptor, generate_shared_structures):
  327.     TYPE_SIZE now measures bits rather than bytes.
  328.  
  329.     * objc-actions.c (build_ivar_list_initializer):  Divide by
  330.     BITS_PER_UNIT to account for the change from DECL_OFFSET to
  331.     DECL_FIELD_BITPOS.
  332.  
  333. Moved lang_finish up a bit (1/22/91):
  334.  
  335.     * toplev.c (compile_file):  Moved lang_finish right after yyparse
  336.     returns, since it may also generate code.  Warnings were being issued
  337.     for variables being defined but not used, even though they were being
  338.     used in lang_finish....
  339.  
  340. Changes to avoid "defined but not used" warnings (1/22/91):
  341.  
  342.     * objc-actions.c (build_module_descriptor):  Mark _OBJC_MODULES_decl
  343.     as used.  This is the magic cookie symbol which the runtime will
  344.     look for in a conventional a.out system.
  345.  
  346. Changes to make encode_method_def work in 2.0 (1/22/91):
  347.  
  348.     * objc-actions.c (encode_method_def):  Chnaged to follow changes
  349.     in dbxout.c.  Use DECL_INCOMING_RTL rather than DECL_OFFSET field.
  350.     Also #include rtl.h and no longer declare emit_note.  This still
  351.     needs major work.  There is a hack to add 8 for the 68k....
  352.  
  353. Change to avoid warnings with __builtin_alloca (1/22/91):
  354.  
  355.     * c-decl.c (init_decl_processing):  Declare alloca() and
  356.     __builtin_alloca() to take a size_t rather than an int,
  357.     since <stdlib.h> declares it to take a size_t on the NeXT.  RMS
  358.  
  359. Deleted all NeXT_SELS_R_CHAR_PTRS #ifdef's (1/23/91):
  360.  
  361.     * objc-actions.c:  It didn't work any more.
  362.  
  363. Deleted all NeXT_SELS_R_INDIRECT #ifdef's (1/23/91):
  364.  
  365.     * objc-actions.c:  It never worked.
  366.  
  367. Changes to support NeXT_SELS_R_STRUCT_PTRS (1/23/91):
  368.  
  369.     * objc-actions.c (objc_selector_template):  New variable.
  370.  
  371.     * objc-actions.c (build_objc_selector_template):  New function.
  372.  
  373. Cleanup to selector code generation options (1/23/91):
  374.  
  375.     * objc-actions.c (build_selector_translation_table):  Added suport
  376.     for both selector strategies.
  377.  
  378.     * objc-actions.c:  Renamed NeXT_SELS_R_... to OBJC_SELS_R_...
  379.  
  380.     * objc-actions.c:  Renamed NeXT_ENCODE_... to OBJC_ENCODE_...
  381.  
  382.     * objc-actions.c:  Added new option OBJC_UNIQUE_SELS.
  383.  
  384. Changes for size_t in builtin function prototypes (1/23/91):
  385.  
  386.     * c-decl.c (init_decl_processing):  sizetype should always be
  387.     long_unsigned_type_node on the NeXT, since this is how <stddef.h>
  388.     defines it.  ?? RMS ?? It is now unsigned long or long, depending
  389.     on the setting of -traditional (__STDC__).  I'll try this.
  390.  
  391. More obstack problems (1/23/91):
  392.  
  393.     * objc-actions.c (comp_method_with_proto, comp_proto_with_proto):
  394.     Stallman's change to usethe functions end_temporary_allocation and
  395.     resume_temporary_allocation is incorrect, since it always leaves
  396.     allocation temporary, whether it was before or not.
  397.  
  398. Problems with error messages (1/23/91):
  399.  
  400.     * objc-actions.c (build_method_decl):  make_node automatically sets
  401.     DECL_SOURCE_FILE and DECL_SOURCE_LINE for decls nodes.
  402.  
  403.     * objc-actions.c (warn_with_method, error_with_method):  Print the
  404.     file and line number using DECL_SOURCE_FILE and DECL_SOURCE_LINE.
  405.  
  406. Improved error message for -Wselector (1/23/91):
  407.  
  408.     * objc-actions.c (finish_objc):  Changed warn_selector message.
  409.     This could still be improved, since it prints entries from both
  410.     the interface and the implementation of classes.
  411.  
  412. Better warning for sending to super with no super class (1/23/91):
  413.  
  414.     * objc-actions.c (build_message_expr):  Return error_mark_node in
  415.     addition to issuing warning.  This avoids generating a call to
  416.     objc_msgSendSuper with bogus args.
  417.  
  418. Reintegrated Objective-C changes into c-parse.y (1/24/91):
  419.  
  420.     * objc-parse.y:  Since objc-parse.y was so out of date with respect
  421.     to c-parse.y, I started over with c-parse.y and reintegrated the
  422.     Objective-C modifications.  Now that Objective-C is working I hope
  423.     that objc-parse.y will be kept more up to date....  I did not
  424.     re-integrate the lexer since I don't have gperf working.  I simply
  425.     cut and pasted what Stallman had in objc-parse.y.
  426.  
  427. Put in temporary change for type checking (1/24/91):
  428.  
  429.     * c-typeck.c (comptypes):  Be more leniant about pointer types.
  430.     This is not the right final fix.  I need to think about this....
  431.  
  432. Print "In method" rather than "In function"... (1/25/91):
  433.  
  434.      * toplev.c (report_error_function):  Check for language specific
  435.      ways of reporting errors.
  436.  
  437.     * objc-actions.c (lang_report_error_function):  Check for Objective-C
  438.      context.  Print selector name in quotes rather than followed
  439.      by a colon since selectors usually end in a colon.
  440.  
  441.     * c-lang.c (lang_report_error_function):  New dummy function.
  442.     Always returns zero, since toplev.c handles c functions by default.
  443.  
  444.     * cplus-decl2.c (lang_report_error_function):  New function.
  445.     Print "In method" rather than "In function" for methods.
  446.  
  447. Improve fatal error message (1/25/91):
  448.  
  449.     * gcc.c (execute):  Clarified fatal error message.  Some of our
  450.     customers did not understand that an internal compiler error had
  451.     occurred.  RMS
  452.  
  453. Declare wchar_t to be unsigned short (1/25/91):
  454.  
  455.     * config/tm-next.h (WCHAR_TYPE_SIZE):  Define to be BITS_PER_WORD / 2.
  456.     This stuff needs lots of testing!
  457.  
  458. Minor changes to SECTION_FUNCTION (1/29/91):
  459.  
  460.     * config/tm-next.h (SECTION_FUNCTION):  It is now assumed that
  461.     DIRECTIVE does NOT contain a newline.  This matches tm-nrw.h.
  462.  
  463. @@@ Integrate recent NeXT changes (1/29/91):
  464.  
  465.     * gcc.c (default_compilers[]):  Define __ASSEMBLER__ when
  466.     preprocessing ".S" files.  RMS
  467.  
  468.     * obstack.c (_obstack_begin):  Allow default obstack chunk size
  469.     to be configured.  This needs to #include "config.h" or this
  470.     must be passed from the Makefile....  RMS
  471.  
  472.     * config/tm-next.h, config/tm-nrw.h (OBSTACK_DEFAULT_CHUNK_SIZE):
  473.     Define new macro to use pagesize, since malloc and free will use
  474.     vm_allocate and vm_deallocate directly for these requests.
  475.     (Now in xm-next.h and called OBSTACK_CHUNK_SIZE.)
  476.  
  477.   Elimination of commons (1/23/89):
  478.  
  479.     * flags.h (flag_no_common):  Declare new flag.  RMS
  480.  
  481.     * toplev.c (flag_no_common, f_options[]):  Define new flag (initially
  482.     off).  Add to machine independent options.  This creates two new
  483.     flags, -fcommon, and -fno-common.  RMS
  484.  
  485.     * varasm.c (assemble_variable):  Don't output a common if
  486.     flag_no_common is set, or if pedantic.  Output a bss symbol
  487.     instead (as if it had been initialized to zero).  RMS
  488.  
  489.   Changes to remove instructions not implemented on the 68040 (7/16/90):
  490.  
  491.     * config/tm-m68k.h (TARGET_68040, TARGET_040_IEEE_FP):  Two new
  492.     targets.  TARGET_68040 means generate code which will run on
  493.     either an '030 or an '040, but avoiding instructions which are
  494.     emulated on the '040.  TARGET_040_IEEE_FP means to use the new
  495.     '040 fp instructions.  This code will NOT run on an '030.
  496.     
  497.     * config/tm-m68k.h (TARGET_SWITCHES):  Add new switches
  498.     -m68040, -m68030, -m68040-fp.
  499.  
  500.     * config/out-m68k.h (standard_68881_constant_p):  Always return 0
  501.     for TARGET_68040 since fmovecr is no longer implemented in hardware.
  502.  
  503.     * config/m68k.md (ftruncdf2, ftruncsf2):  Don't emit fintrz for
  504.     TARGET_68040, since it is no longer implemented in hardware.
  505.  
  506.     * config/tm-next.h (TARGET_DEFAULT):  Changed to 0207 for 68040.
  507.  
  508.     * config/m68k.md (muldf3):  Don't use fscale on 68040.
  509.  
  510.     * config/m68k.md (iorsi3):  Don't use bset, since it is slower than
  511.     ori.  To really solve problems like this we should have some kind of
  512.     space vs. speed flag.  In a similar vein, on the '040 using moveq
  513.     followed by a register op is slower than using a 32-bit immediate op,
  514.     but this takes up 48 bits rather than 32....  On the NeXT we are
  515.     more concerned about space than speed, but others may disagree.
  516.  
  517.   Changes to add '040 IEEE fp instructions:
  518.  
  519.     * config/m68k.md (movsf, movdf, extendsfdf2, truncdfsf2, floatsisf2,
  520.     floatsidf2, floathisf2,    floatqidf2):  Use new fsmove and fdmove
  521.     instructions for all register-to-register and memory-to-register
  522.     moves.  The existing register-to-memory moves round correctly
  523.     already.
  524.  
  525.     * config/m68k.md (adddf3, addsf3, subdf3, subsf3, muldf3, mulsf3,
  526.     divdf3, divsf3, negsf2, negdf2, abdssf2, absdf2):  Use new
  527.     fsxxx and fdxxx arithmetic instructions.
  528.  
  529. @@@ End of integration.
  530.  
  531. Miscellaneous comment fix (1/29/91):
  532.  
  533.     * config/m68k.md:  The comment should read that the constraint letter
  534.     'K' permits all integers EXCEPT those in the range -128 .. 127!
  535.  
  536. Temporary changes for testing (1/31/91):
  537.  
  538.     * optabs.c (expand_fix):  Prefix all gnulib functions with "_"
  539.     instead of "__", since these are the names in our shlib.
  540.     We should fix the shlib in the long run.
  541.  
  542.     * gcc.c (process_command):  Put in very ugly hack to let -bsd pass
  543.     through (two places).
  544.  
  545.     * gcc.c (link_command_spec):  Don't use gnulib.
  546.  
  547. Bug fixes for testing. (1/31/91):
  548.  
  549.     * config/out-next.x (handle_pragma):  Added #pragma
  550.     CC_NO_MACH_TEXT_SECTIONS, which had been dropped.  We don't warn if
  551.     we see #pragma's which we don't understand.  Perhaps we should.  RMS
  552.  
  553.     * gcc.c (compilers):  Define __GNU__ for all file types.  Preprocess
  554.     .s files just like .S files.
  555.  
  556. Changes to how new '040 opcodes are added (1/31/91):
  557.  
  558.     * config/tm-m68k.c (PRINT_OPERAND_PUNCT_VALID_P,  PRINT_OPERAND):
  559.     Use new %$ and %& specs to insert an 's' or 'd' into fp opcodes
  560.     if TARGET_040_IEEE_FP is defined.  RMS
  561.  
  562. Bugs found during testing (2/1/91):
  563.  
  564.     * config/out-next.c (handle_pragma):  Call ungetc when '\n' is
  565.     seen since HANDLE_PRAGMA is followed by skipline.  Line numbers
  566.     get screwed up too.  RMS
  567.  
  568. Tried new version of combine.c (2/1/91):
  569.  
  570.     * combine.c:  New version from rms.
  571.  
  572. Warn about options which aren't supported (2/2/91):
  573.  
  574.     * toplev.c (f_options, main):  Added new field to options struct to
  575.     indicate whether a given option is supported on the current
  576.     architecture.  If not, then a warning is issued if either the
  577.     flag or its negation is specified, and this would cause the flag
  578.     to be set to other than its default state.  This could be cleaner if
  579.     DELAY_SLOTS and INSN_SCHEDULING were #define'd to be 1 rather just
  580.     #define'd.  It should also be possible to validate -fno-defer-pop
  581.     and -fpeephole based on info in the config files.
  582.     RMS did this differently.
  583.  
  584. Allow multiple return points in some framless functions (2/2/91):
  585.  
  586.     * config/out-m68k.c (output_function_prologue,
  587.     output_function_epilogue):  New functions to avoid giant
  588.     macros which are hard to edit.  RMS
  589.  
  590.     * config/tm-m68k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE):
  591.     Call new functions.  RMS
  592.  
  593.     * config/m68k.md (return):  New insn pattern for rts and a new
  594.     peephole for rtd.  RMS
  595.  
  596.     * config/tm-m68k.h (RTL_EPILOGUE):  New macro.  RMS
  597.  
  598.     * config/out-m68k.c (rtl_epilogue):  New function.  Determines
  599.     whether the epilogue will consist of a single insn.  Some code
  600.     was duplicated from output_function_epilogue.  There should be
  601.     a new layout routine to do this common work.  #include "flags.h".
  602.     RMS
  603.  
  604.     *config/out-m68k.c (output_function_epilogue):  Don't output
  605.     anything if the epilogue was output as RTL.  We detect this by
  606.     the barrier insn which is always placed after a return insn.  RMS
  607.  
  608.     * config/out-next.c:  Don't #include "flags.h", since
  609.     out-m68k.c already does now.  RMS
  610.  
  611. Deleted change relating to bset (2/4/91):
  612.  
  613.     * config/m68k.md (iorsi3):  I'll put this back when I do more
  614.     general space vs. speed optimizations.
  615.  
  616. Integrated changes from rms (2/4/91):
  617.  
  618.     * objc-parse.y, objc-actions.c:  From rms.
  619.  
  620.     * objc-actions.h:
  621.  
  622.     * flags.h:  Still contains flag_no_mach_text_sections.
  623.  
  624.     * tree.h:
  625.  
  626.     * c-decl.c:  Still problem with size_t.
  627.  
  628.     * c-lang.c:  Still lang_report_error_function
  629.  
  630.     * c-typeck.c:  Still problem with const char **.
  631.  
  632.     * cccp.c:  Still #import, \\, etc.
  633.  
  634.     * cplus-decl2.c: Still lang_report_error_function
  635.  
  636.     * cse.c:
  637.  
  638.     * dbxout.c:
  639.  
  640.     * print-tree.c:
  641.     
  642.     * tree.c:
  643.  
  644.     * varasm.c:
  645.  
  646.     * toplev.c:  Still flag_no_mach_text_sections.  Also,
  647.     dbxout_finish has wrong args.
  648.  
  649.     * gcc.c:  Still link_command_spec, ".s" files, -bsd, -D__GNU__.
  650.  
  651.     * function.h:
  652.  
  653. Integrated new c-parse.y from rms (2/5/91):
  654.  
  655.     * objc-parse.y:  Copied changes which were recently made to c-parse.y
  656.  
  657. Integrated new objc-actions.c from rms (2/5/91):
  658.  
  659.     * objc-actions.c (lang_finish):  New function does nothing.
  660.  
  661. Changes to get correct warnings for messages (2/5/91):
  662.  
  663.     * c-typeck.c (warn_for_assignment):  Print selector name rather
  664.     than objc_msgSend for methods, and adjust parm number by 2.  RMS
  665.  
  666. Remove -fno-mach-text-sections (2/5/91):
  667.  
  668.     * flags.h, toplev.c, out-next.c:  Leave #pragma only.
  669.  
  670. Fix for instantiate_virtual_regs problem (2/6/91):
  671.  
  672.     * recog.c (apply_change_group):  When considering insn's which
  673.     have extra clobber's at the end, also consider insn's which contain
  674.     only a clobber (these are generated for initializers of structs
  675.     local to a block).  RMS
  676.  
  677. Changes for new assembler (2/6/91):
  678.  
  679.     * config/tm-nrw.h (FLOAT_ASM_OP, INT_ASM_OP):  Use ".single" and
  680.     ".int" rather than ".float" and ".word".
  681.  
  682. Changes for bogus "shift count is negative" warnings (2/6/91):
  683.  
  684.     * c-typeck.c (build_binary_op_nodefault):  Check for shift < 0
  685.     rather than <= 0.  RMS
  686.  
  687. More changes for NRW (2/6/91):
  688.  
  689.     * config/out-nrw.c:  New file.
  690.  
  691.     * config.gcc (nrw):  Use xm-next.h and out-nrw.c
  692.  
  693. Changes for new pic strategy (2/10/91):
  694.  
  695.     * expr.h, function.c (current_function_pic_base):  New global
  696.     to record addressing base pseudo-reg.
  697.  
  698.     * function.c (expand_function_start):  Generate pic prologue
  699.     by allocating a pseudo-reg for current_function_pic_base and
  700.     expanding the "picbase" pattern to initialize it.  Mark these
  701.     insn's as part of the parm insn's so that they won't be copied
  702.     for inlining.  (The name should probably be changed to reflect
  703.     the new meaning of last_parm_insn.)
  704.  
  705.     * gcc.texinfo (picbase):  Wrote description of new named pattern.
  706.  
  707.     * rtl.def (INLINE_HEADER):  Added a new field to record pic_base
  708.     for procedure integration.
  709.  
  710.     * rtl.h (PIC_BASE):  New macro to access pic_base field.
  711.  
  712.     * integrate.c (initialize_for_inline):  Also record
  713.     current_function_pic_base in inline_header_rtx.
  714.  
  715.     * emit-rtl.c (gen_inline_header_rtx):  New arg.
  716.  
  717.     * integrate.c (expand_inline_function):  Map inlined function's
  718.     pic_base reg to current_function_pic_base.  (In practice these
  719.     are always the same since they are the first pseudo's allocated
  720.     in each function.)
  721.  
  722.     * function.h (struct function):  Added pic_base field.
  723.  
  724.     * function.c (push_function_context, pop_function_context):
  725.     Save and restore current_function_pic_base in pic_base field.
  726.     (I am assuming that this is all that is required to support
  727.     nested functions.)
  728.  
  729.     * rtl.def (GOT_REF, GOT_REL_REF, ABSDIFF_REF):  New rtl codes
  730.     to represent pic addresses.  They should behave just like
  731.     symbol_ref's and label_ref's in most parts of the compiler.
  732.     It may take some time to track all cases of this down....
  733.  
  734.     * rtl.h (CONSTANT_P):  These new rtl codes are all constant.
  735.     This should catch a large number of the interesting cases.
  736.  
  737.     * gcc.texinfo (got_ref, got_rel_ref, absdiff_ref):  Wrote description
  738.     of new rtl constructs.
  739.  
  740.     Clear out the old kruft....
  741.  
  742.     * emit-rtl.c, rtl.h (pic_offset_table_rtx):  Removed.  This has been
  743.     effectively replaced by current_function_pic_base.  (Note that
  744.     pic_offset_table_rtx was a hard reg, but current_function_pic_base
  745.     is a pseudo.)
  746.  
  747.     * emit-rtl.c (init_emit_once):  Don't initialize pic_offset_table_rtx.
  748.  
  749.     * toplev.c (rest_of_compilation):  Don't use FINALIZE_PIC any more.
  750.     This was just a hack, and we have a better solution now.
  751.  
  752.     Prototype for sparc....
  753.  
  754.     * sparc.md (picbase):  New pattern to generate pic prologue.
  755.     We need a label which is guarnteed to immediately precede
  756.     the call insn we are generating, so we generate the label
  757.     but don't insert it into the insn list.  The pattern which
  758.     matches the call insn verifies that the label is not in the
  759.     insn list and then inserts it just before emitting itself.
  760.     (Perhaps we could add new rtl constructs, this_insn_label_ref
  761.     and next_insn_label_ref, which refer to labels which will be
  762.     emitted just before and after the current insn during final.)
  763.  
  764.     * jump.c (mark_jump_label):  Don't crash when processing labels
  765.     which aren't in the insn chain.
  766.  
  767.     * out-sparc.c (finalize_pic):  #ifdef'ed out.
  768.  
  769.     * out-sparc.c (legitimize_pic_address):  Generate GOT_REL_REF's
  770.     relative to current_function_pic_base.  No longer use
  771.     pic_offset_table_rtx.
  772.  
  773.     * out-sparc.c (check_pic):  Turned off for now, since it was
  774.     incorrectly barfing on one of the insn's generated by picbase.
  775.  
  776.     * sparc.md:  Modified define_split to avoid infinite recursion.
  777.  
  778.     * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS):  Recognize GOT_REL_REF
  779.     indexes as valid.  Because of the new rtl, this no longer needs
  780.     to refer to current_function_pic_base.
  781.  
  782.     * tm-sparc.h (PRINT_OPERAND_ADDRESS):  Print GOT_REL_REF exactly
  783.     like SYMBOL_REF on sparc.  Sun's assembler is weird.  On most
  784.     machines some annotation would be needed.  Print ABSDIFF_REF
  785.     as "__GLOBAL_OFFSET_TABLE_-(L1-.)", and delete special case
  786.     hack which tried to parenthesize this expression right when
  787.     it was represented explictly in rtl.
  788.  
  789.     * tm-sparc.h (PRINT_OPERAND):  Use print_operand rather than
  790.     print_addr_const for recursion, since print_addr_const can't
  791.     handle GOT_REL_REF or ABSDIFF_REF (or HI fo that matter).
  792.  
  793.     * out-sparc.c (legitimize_pic_address):  Wrong number of args in
  794.     recursive call.  The mode arg is never used....
  795.  
  796. FIx for problems with extra spaces in CPP_PREDEFINES (2/12/91):
  797.  
  798.     * cccp.c (main):  Allow extra whitespace in CPP_PREDEFINES.  RMS
  799.  
  800.     * gcc.c (do_spec_1):  Allow extra whitespace in CPP_PREDEFINES.
  801.     Also transform -Dfoo=bar into -D__foo__=bar correctly.  RMS
  802.  
  803. Fix for local allocation bug with scheduling (2/13/91):
  804.  
  805.     * combine.c (try_combine):  Update reg_first_use when an insn
  806.     is deleted.  Otherwise the scheduler will delete the insn and
  807.     local alloc will become confused and crash.  Also delete links
  808.     which will point to deleted insn, since they are useless.  I
  809.     don't know of a case where this causes a problem, but they are
  810.     cheap to remove here, and they take up time to process
  811.     in sched.c otherwise.  RMS
  812.  
  813. Fix for reload crash with CCmode (2/13/91):
  814.  
  815.     * optabs.c (gen_move_insn):  Use SImode for reloading of CC mode
  816.     registers.  Fix from Kenner.  RMS
  817.  
  818. Improvements to scheduling dump info (2/14/91):
  819.  
  820.     * sched.c (schedule_block):  Print insn_ref_count in addition to
  821.     insn_priority.
  822.  
  823. Fix for scheduling bug with LOG_LINKS for CCmode registers (2/14/91):
  824.  
  825.     There is a serious problem here.  The scheduler was ignoring
  826.     LOG_LINKS in JUMP_INSN's when computing ref counts, but was
  827.     decrementing the ref count when a JUMP_INSN was issued.  The
  828.     result was that insn's were being made ready prematurely.  The fix 
  829.     s to call priority for JUMP_INSN in all cases.  Here are two:
  830.  
  831.     * sched.c (schedule_block):  Call priority for JUMP_INSN too
  832.     when checking whether the last insn is a conditional branch
  833.     whose outcome may vary.
  834.  
  835.     * sched.c (priority):  Check LOG_LINKS for JUMP_INSN's too.
  836.  
  837.     There may be other cases of this....
  838.  
  839. Fix for more scheduling bugs (2/15/91):
  840.  
  841.     * sched.c (reassign_dependence):  #ifdef'ed back in code to
  842.     recompute dependencies for deleted insn's.  This can happen
  843.     when reload1 deletes an insn in delete_dead_insn in reload1.c.
  844.  
  845. New warning to help find alignment bugs (1/15/91):
  846.  
  847.     * c-typeck.c (build_c_cast):  Warn if required alignment of target
  848.     type is increased by cast.  RMS
  849.  
  850.     * c-tree.h (warn_cast_align):  Declare new flag.  RMS
  851.  
  852.     * c-decl.c (warn_cast_align, c_decode_option):  Initialize new
  853.     flag based on -Wcast-align and -Wnocast-align switches.  RMS
  854.  
  855.     * gcc.texinfo (-Wcast-align):  Document new switch.  RMS
  856.  
  857. Fix importing bug with absolute paths (2/15/91):
  858.  
  859.     * cccp.c (do_include):  Check for return value of -2 from
  860.     lookup_import, not -1.  RMS
  861.  
  862. Fix for scheduling crasher (2/17/91):
  863.  
  864.     * sched.c (order_calls):  Don't walk off the end of the function.
  865.  
  866. Changes to get i860 version to compile (2/17/91):
  867.  
  868.     * tm-i860.h (INITIAL_FRAME_POINTER_OFFSET):  Define to store 0.
  869.  
  870.     * tm-i860.h (INITIALIZE_TRAMPOLINE):  Use build_int_2 rather than
  871.     build_int.  RMS
  872.  
  873.     * i860.md (cbranch, inverse_cbranch):  Use (eq (cc0) (const_int 0))
  874.     rather than just (cc0), since the latter is not valid as a
  875.     comparison expression in an if_then_else, and this will cause
  876.     a crash in reverse_condition in jump.c during cse.  After doing
  877.     this I also had to add redundant reversed patterns using
  878.     (ne (cc0) (const_int 0)) and with the pc and label switched.
  879.     This seems like fertile ground for insn canonicalization.  RMS
  880.  
  881. Fix to cpp error message (2/18/91):
  882.  
  883.     * cccp.c (make_definition):  Print "-Dfoo" rather than "-D foo".
  884.     @declined by RMS
  885.  
  886. Changes to compile on aviion (2/20/91):
  887.  
  888.     * final.c:  #incldue "gvarargs.h" rather than <varargs.h>  RMS
  889.  
  890. Fix for 68k reload crasher (2/26/91):
  891.  
  892.     * reload.c (find_reloads_address_1): Correctly handle
  893.     (post_inc (mem)).  (From Kenner)  RMS
  894.  
  895. Fix for reload crasher (3/7/91):
  896.  
  897.     * rtlanal.c (reg_overlap_mentioned_p):  Return zero for any
  898.     expression which isn't a reg, subreg or mem.  RMS
  899.  
  900. Changed Objective-C warnings to fatal errors (3/11/91):
  901.  
  902.     * objc-actions.c (build_message_expr, build_selector_expr,
  903.     build_encode_expr, get_class_ivars, start_class):  Finding
  904.     Objective-C code in c source files is now a fatal error.
  905.     (They should recompile with -lang-objc.)  RMS
  906.  
  907. Fix for Objective-C crasher for syntax error (3/11/91):
  908.  
  909.     * objc-actions.c (gen_method_decl):  Don't crash for syntax error
  910.     in method declaration: -bar: x, y  RMS
  911.  
  912. Fix for Objective-C crasher for @encode of undimensioned array (3/11/91):
  913.  
  914.     * objc-actions.c (encode_array):  Treat an undimensioned array
  915.     the same as a pointer.  RMS
  916.  
  917. Fix for c++ crasher with unknown language string (3/12/91):
  918.  
  919.     * cplus-class.c (push_lang_context):  Make an unknown language
  920.     string a fatal error, since continuing will likely cause a crash.
  921.     @ I think this is a bogus fix!
  922.  
  923. Fix for problems with -Wformat (3/13/91):
  924.  
  925.     * c-typeck.c (check_format):  Allow multiple NOP_EXPR's around
  926.     format string.  RMS
  927.  
  928.     * c-typeck.c (function_info_table):  Expand new macro
  929.     EXTRA_FORMAT_FUNCTIONS in initializer, if present.
  930.  
  931. Add support for c++ constructor and destructor sections (3/19/91):
  932.  
  933.     * tm-next.h (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR):
  934.     New macros.  Place reference to constructor or destructor into
  935.     constructor or destructor section.  RMS
  936.  
  937.     * tm-next.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS):  Add
  938.     new constructor and destructor sections.  RMS
  939.  
  940. Fix for problems with Class type in Objective-C (3/21/91):
  941.  
  942.     * objc-actions.c (objc_class_id, synth_module_prologue):  Initialize
  943.     new variable to hold identifier for "objc_class".  RMS
  944.  
  945.     * objc-actions.c (objc_comptypes):  Allow assigning between types
  946.     id and Class without warning.  RMS
  947.  
  948.     * c-typeck.c (warn_for_assignment):  When there is a type mismatch
  949.     in the hidden arguments of a message expression, don't print the
  950.     argument number as 0 or -1.  Instead print the warning as would
  951.     be done    for an explicit call to objc_msgSend (this should never
  952.     happen, but just in case).  RMS
  953.  
  954. Changes to use class references rather than objc_getClass (3/22/91):
  955.  
  956.     * objc-actions.c (objc_getClass_id, objc_getMetaClass_id,
  957.     objc_getClass_decl, objc_getMetaClass_decl, synth_module_prologue):
  958.     Removed variables and their initialization.
  959.  
  960.     * objc-actions.c (get_class_reference):  
  961.  
  962.     * objc-actions.c (get_super_receiver):  
  963.  
  964.     * objc-actions.c (receiver_is_class_object):  
  965.  
  966. Changes to always use cc1obj (4/4/91):
  967.  
  968.     * gcc.c (default_compilers):  Use cc1obj instead of cc1.
  969.     cc1obj without the -lang-objc flag should be identical to cc1.
  970.  
  971. Fix for expr.c crasher from Kenner (4/8/91):
  972.  
  973.     * expr.c (convert_to_mode):  Call protect_from_queue.  RMS
  974.  
  975. Added support for c++ on NeXT (4/8/91):
  976.  
  977.     * __main.c:  New file.  Execute constructors and register
  978.     destructors using atexit.  Soon this will be moved to crt0,
  979.     and __main() will be a nop.
  980.  
  981. Fix for recurring c++ problems (4/8/91):
  982.  
  983.     * cplus-lex.c (note_got_semicolon):  Test IS_AGGR_TYPE_CODE before
  984.     testing IS_AGGR_TYPE, since identifier nodes go through here!
  985.  
  986.     * cplus-decl.c (grokdeclarator):  Test IS_AGGR_TYPE_CODE before
  987.     testing IS_AGGR_TYPE, since identifier nodes go through here!
  988.  
  989. Changes for installation on a NeXT (4/9/91):
  990.  
  991.     * gcc.c (default_compilers):  Run cc1 for c and Objective-C files.
  992.     Run cc1++ for c++ and Objective-C++ files.  UNDONE
  993.  
  994.     * Makefile:  Install cc1obj as cc1, cc1plus as cc1++.
  995.  
  996. Changes for Objective-C++ (4/9/91):
  997.  
  998.     * objcplus-parse.y:  New file (copied from cplus-parse.y).
  999.     (reservedwords):  There are still problems here.
  1000.  
  1001.     * objcplus-actions.c:  New file (copied from objc-actions.c).
  1002.     Changed cplus_class to objc_class_type (3 places).
  1003.  
  1004.     * objcplus-lex.c:  New file.
  1005.     (lang_init, lang_finish):  Removed.
  1006.     (do_identifier):  Add Objective-C actions.
  1007.  
  1008.     * objcplus.gperf:  New file.
  1009.  
  1010.     * Makefile.in:  Added cc1objplus target.
  1011.  
  1012. Changes to simplify integration of Objective-C++ (4/9/91):
  1013.  
  1014.     * objc-actions.c (class_type):  Renamed to objc_class_type to avoid
  1015.     conflict with name of c++ type (3 places).
  1016.  
  1017.     * objc-lang.c, objcplus-lang.c (objc_xref_tag, objc_grokfield,
  1018.     objc_finish_struct, objc_start_struct, objc_push_parm_decl,
  1019.     objc_get_parm_info):  New functions for C/C++ compatibility.
  1020.  
  1021.     * objc-actions.c:  Call new compatibility functions.
  1022.  
  1023. Preparation of C++ for integration of Objective-C++ (4/12/91):
  1024.  
  1025.     * cplus-lang.c:  New file for C++ entry points.
  1026.     (lang_decode_option):  Call cplus_decode_option.
  1027.     (lang_init):  Call cplus_init().
  1028.     (lang_finish):  Call cplus_finish().
  1029.     (print_lang_statistics):  Call print_cplus_statistics.
  1030.  
  1031.     * Makefile.in (CPLUS_OBJS):  Add cplus-lang.o.
  1032.  
  1033.     * cplus-lex.c:
  1034.     (lang_init):  Renamed to cplus_init.  Moved call to check_newline()
  1035.     to lang_init() in cplus-lang.c.
  1036.     (lang_finish):  Renamed to cplus_finish.
  1037.  
  1038.     * cplus-tree.c (print_lang_statistics):  Renamed to
  1039.     print_cplus_statistics.
  1040.  
  1041.     * cplus-decl2.c (lang_decode_option):  Renamed to
  1042.     cplus_decode_option.
  1043.  
  1044. Add Objective-C++ support to C++ (4/21/91):
  1045.  
  1046.     * cplus-lang.c:  Add maybe_objc_... stubs (from c-lang.c).
  1047.  
  1048.     * cplus-tree.h:  Added declarations for maybe_objc_comptypes
  1049.     and maybe_building_objc_message_expr (from c-tree.h).
  1050.  
  1051.     * cplus-decl*.c (???):  Call maybe_objc_check_decl.  TODO
  1052.  
  1053.     * cplus-typeck.c
  1054.     (comptypes, convert_for_assignment):  Call maybe_objc_comptypes.
  1055.     (warn_for_assignment):  Call maybe_building_objc_message_expr.
  1056.  
  1057.     * cplus-decl.c (groktypename_in_parm_context):  New function
  1058.     (modified from c-decl.c).
  1059.  
  1060. Removed //-style comment (5/10/91):
  1061.  
  1062.     * objc-actions.c (start_method_def):  Removed //-style comment.
  1063.  
  1064. Added initial support for "aligned" attribute (5/17/91):
  1065.  
  1066.     * c-parse.y, objc-parse.y (attrib): Always pass aligned attribute
  1067.     through.  Return $1 on failure rather than NULL_TREE for consistency.
  1068.  
  1069.     * c-common.c (decl_attributes): Warn if requested alignment is not
  1070.     a power of two.  Also warn if decl is not a VAR_DECL or a FIELD_DECL,
  1071.     since specifying alignment makes no sense for a TYPE_DECL, and is
  1072.     not implemented for a FUNCTION_DECL.
  1073.  
  1074.     * c-parse.y, objc-parse.y (initdcl, notype_initdcl): Call
  1075.     decl_attributes before finish_decl in order for alignment attribute
  1076.     to take effect.
  1077.     
  1078.     * varasm.c (assemble_variable): Warn if DECL_ALIGN is greater than
  1079.     MAX_OFILE_ALIGNMENT, if defined.  This allows errors to be
  1080.     detected with formats like a.out which support a maximum alignment
  1081.     of 4.
  1082.  
  1083.     * c-parse.y, objc-parse.y (component_declarator): Call decl_attributes
  1084.     with correct args.
  1085.  
  1086.     * stor-layout.c (layout_record, layout_union): Do not clamp struct
  1087.     alignment at BIGGEST_ALIGNMENT, since individual fields may have
  1088.     requested greater alignment than this.  This check shouldn't have
  1089.     done anything anyway.
  1090.  
  1091. NOT DONE YET:
  1092.  
  1093.     * function.c (assign_stack_local, assign_outer_stack_local): Check
  1094.     that alignment is not greater than STACK_BOUNDARY.
  1095.  
  1096.     * function.c (put_var_into_stack): Call assign_stack_local or
  1097.     assign_outer_stack_local with alignment derived from DECL_ALIGN.
  1098.     Warn if that alignment is greater than STACK_BOUNDARY.
  1099.  
  1100. == New version cc-37 ==
  1101.  
  1102. Fixed crasher with struct bitfield initializers (5/24/91):
  1103.  
  1104.     * varasm.c (output_constructor):  Don't crash if val is zero for
  1105.     bitfields.  RMS
  1106.  
  1107. Give warning for extra -x switch after last input file (5/28/91):
  1108.  
  1109.     * gcc.c (process_command).  RMS
  1110.  
  1111. Finished support for "aligned" attribute (5/28/91):
  1112.  
  1113.     * c-parse.y (unary_expr):  When alignof is applied to an expression,
  1114.     call c_alignof_expr so that we can check DECL_ALIGN instead of calling
  1115.     c_alignof (TYPE_ALIGN (TREE_TYPE (expr))).
  1116.  
  1117.     * c-typeck.c (c_alignof_expr):  New function to compute alignof for
  1118.     expr's.  Returns DECL_ALIGN for VAR_DECL's and FIELD_DECL's.  Also
  1119.     return 1 after reporting error about applying alignof to bitfields.
  1120.  
  1121.     * c-tree.h:  Declare c_alignof_expr.
  1122.  
  1123.     * varasm.c (assemble_variable):  MAX_OFILE_ALIGNMENT defaults to
  1124.     BIGGEST_ALIGNMENT if not defined in config.h.
  1125.  
  1126.     * tm-next.h (MAX_OFILE_ALIGNMENT):  Define to be 2^15 for Mach-O.  RMS
  1127.  
  1128.     * tm-next.h (ASM_OUTPUT_ALIGN):  Use .align rather than .even,
  1129.     and allow alignments greater than 2.  RMS
  1130.  
  1131.     * c-common.c (decl_attributes): Warn if requested alignment will
  1132.     not fit in DECL_ALIGN field (which is a byte).  We must change the
  1133.     internal representation to be the log of the actual alignment.
  1134.     We can easily make DECL_ALIGN return the actual alignment, but we
  1135.     will need a new SET_DECL_ALIGN, since it will no longer be an lvalue.
  1136.  
  1137.     gcc.texinfo (Alignment):  Added documentation of  "aligned" attribute.
  1138.  
  1139. Fix for problems with carriage-returns in source files (5/30/91):
  1140.  
  1141.     * c-parse.y, objc-parse.y (skip_white_space, yylex):  Allow '\r'
  1142.     as whitespace unless -pedantic is used (since ANSI disallows it).
  1143.  
  1144. Add -Dm68k cpp predefine (5/30/91):
  1145.  
  1146.     * tm-next.h (CPP_PREDEFINES):  Added -Dm68k in addition to
  1147.     -Dmc68000 since some code expects this, and it is less verbose.  RMS
  1148.  
  1149. Old bug fix for c++ (5/31/91):
  1150.  
  1151.     * dbxout.c (dbxout_parms):  DECL_INCOMING_RTL is sometimes NULL
  1152.     in c++ (it shouldn't be).
  1153.  
  1154. Removed NeXT size_t mod.  See c-decl.c above (5/31/91)
  1155.  
  1156. Renamed objc-common.[hc] back to objc-actions.[hc] (5/31/91):
  1157.  
  1158.     * Makefile.in, objc-parse.y, objc-actions.c, objc-lang.c,
  1159.     objcplus-parse.y, objcplus-lex.c, objcplus-lang.c:
  1160.  
  1161. More changes for Objective-C++ (???):
  1162.  
  1163.     * cplus-tree.h (enum languages):  Added lang_objc.
  1164.  
  1165.     * cplus-class.c, cplus-tree.h (lang_name_objc):  New global.
  1166.     
  1167.     * cplus-decl.c (init_decl_processing):  Initialize lang_name_objc.
  1168.  
  1169.     * cplus-class.c (push_lang_context, pop_lang_context):  Call
  1170.     install_reserved_words().  Handle lang_name_objc.
  1171.  
  1172.     * cplus-lang.c (install_reserved_words):  New dummy function.
  1173.  
  1174. Make c++ use new routines for constructors (6/4/91):
  1175.  
  1176.     * cplus-decl2.c (finish_file):  Use functions assemble_constructor()
  1177.     and assemble_destructor() whcih are in varasm.c.
  1178.  
  1179. == Integrated snapshot 155 ==
  1180.  
  1181. Moved over ChangeLog-NeXT, install-NeXT, Makefile, __main.c.
  1182.  
  1183. Applied patches from NeXT-diffs, NeXT-OBJC-diffs, align-diffs, and
  1184. objcplus-diffs.
  1185.  
  1186. Renamed stddef.h to stddef.h-gnu since it interfered with building the stage1
  1187. compiler (<stddef.h> is #include'd by <stdio.h> on the NeXT).
  1188.  
  1189. Hack to make c++ compile (6/4/91):
  1190.  
  1191.     * cplus-dbxout.c (N_CATCH):  Randomly defined to 0!
  1192.  
  1193. Applied changes to optabs.c from kenner (6/5/91).
  1194.  
  1195.     * optabs.c (expand_binop): Fix typos in multi-word addition; had
  1196.     MODE for SUBMODE.
  1197.  
  1198. Changes to build fixsfsi, etc. into m68k.md (6/6/91):
  1199.  
  1200.     * m68k.md:  Change incorrect reference to -m68040-fp to -m68040-only.
  1201.     Also fix several spelling errors which were annoying.  RMS
  1202.  
  1203.     * m68k.md (fix_trunc*f*i2):  New insn's to replace fintrz on the
  1204.     '040.  These emit a sequence of insn's to change the rounding mode
  1205.     to round-to-zero, perform the truncation, and restore the rounding
  1206.     mode.  These should be faster than either trapping into the kernel
  1207.     with fintrz or calling fixsfsi() or fixdfsi() in gnulib.  Removing
  1208.     these names from the FPA pattern does not appear to affect the
  1209.     generated code when using the FPA because of the combiner.  RMS
  1210.  
  1211. Changes from Kenner (6/10/91):
  1212.  
  1213.     * expr.c (expand_expr, case FLOAT_EXPR, FIX_EXPR): Don't try to
  1214.     do any partial conversions here; expand_fix and expand_float now
  1215.     handle all modes.
  1216.     * optabs.c (fixtab, fixtrunctab, floattab): Table now contains
  1217.     all modes.
  1218.     (can_fix_p, can_float_p): Use mode as index in tables.
  1219.     (init_fixtab, init_floattab): Likewise.
  1220.     Add support for QImode and HImode operations.
  1221.     (expand_float): Rework to remove dependendence on specific modes.
  1222.     Can only use REAL_VALUE_LDEXP in certain configurations.
  1223.     (expand_fix): Likewise.
  1224.     If can't do operation unsigned, or signed into wider mode, emit a
  1225.     sequence that compares operand with 2**(N-1) and, if larger,
  1226.     subtracts 2**(N-1), converts, and adds it back.    
  1227.     Protect from queue and force not memory at start.
  1228.  
  1229. Corresponding changes to m68k.md (6/10/91):
  1230.  
  1231.     * m68k.md (fixuns_trunc*fsi2):  Deleted; now done in expand_fix in
  1232.     optabs.c.  RMS
  1233.  
  1234.     * m68k.md (fix_truncsf*i2):  Deleted; df version will suffice.  RMS
  1235.  
  1236. FIx to kenner's change (6/10/91):
  1237.  
  1238.     * optabs.c (expand_fix):  Typo;  GET_MODE (from) should be fmode
  1239.     in call to can_fix_p().  RMS
  1240.  
  1241. Another fix from kenner (6/11/91):
  1242.  
  1243.     * combine.c (expand_field_assignment)  Fix for problem with
  1244.     fixunssfhi not zeroing upper word of result.
  1245.  
  1246. Changes for specifying format checking (6/11/91):
  1247.  
  1248.     * c-parse.y, objc-parse.y (attrib):  Pass "format" attribute
  1249.     through.  Takes one identifier and two constants as args.
  1250.     identifier must be either printf or scanf.
  1251.  
  1252.     * c-common.c (decl_attributes):  Process "format" attributes.
  1253.     Call new routine record_format_info().
  1254.  
  1255.     * c-typeck.c (struct function_info):  Changed function_ident field;
  1256.     store identifier node rather than char * to speed lookup.
  1257.     Renamed arg_num field to format_num.  Replaced is_varargs field
  1258.     with new first_arg_num field.
  1259.  
  1260.     * c-typeck.c (check_format):  Modified to use new arg_num and
  1261.     first_arg_num fields.
  1262.  
  1263.     * c-typeck.c (record_format_info):  New routine.  Replaces static
  1264.     table of functions to check.
  1265.  
  1266.     * cplus-typeck.c (record_format_info):  New stub routine so c++
  1267.     will link.  Someone should implement format checking for c++.
  1268.  
  1269.     * c-typeck.c (init_format_info_table):  New routine to add
  1270.     entries for ANSI functions to table.
  1271.  
  1272.     * c-decl.c (init_decl_processing):  Call init_format_info_table().
  1273.  
  1274.     * c-typeck.c (build_function_call):  Modified to use dynamic table
  1275.     rather than static one.  Compare identifier nodes rather than
  1276.     using strcmp().
  1277.  
  1278.     * gcc.texinfo ():  Document "format" attribute.
  1279.  
  1280.     * c-typeck.c (check_format):  Call warning() directly rather than
  1281.     returning the warning string.  This way we can give multiple warnings
  1282.     by continuing.  Several changes to make continuing safe.
  1283.  
  1284.     * c-typeck.c (build_function_call):  Incorporated changed return
  1285.     value of check_format().
  1286.  
  1287.     * c-typeck.c (check_format):  Check for NULL format string.
  1288.  
  1289. TODO:
  1290.  
  1291.     Check for passing NULL pointers.
  1292.     Deal correctly with integral promotions.
  1293.     Handle negative numbers ("aligned" attribute also).
  1294.  
  1295. Incorporate changes to c-parse.y into objc-parse.y (6/19/91):
  1296.  
  1297.     * objc-parse.y:  Incorporate change to initlist for labeled elements.
  1298.  
  1299.     * objc-parse.y:  Incorporate changes for MULTIBYTE_CHARS.
  1300.  
  1301.     * objc-parse.y:  Remove unnecessary whitespace differences.
  1302.  
  1303.     * objc-parse.y-diffs:  New file to help maintain consistency
  1304.     between c-parse.y and objc-parse.y.
  1305.  
  1306. Changes to support constant string objects (6/19/91):
  1307.  
  1308.     * objc-parse.y (yylex):  Recognize that @ followed by " starts
  1309.     a constant string object.  Call build_string_object().
  1310.  
  1311.     * objc-actions.c (build_string_object):  New routine to build
  1312.     constant string objects.
  1313.  
  1314.     * objc-actions.c (build_objc_string_object_template):  Initialize
  1315.     new global objc_string_object_template.  Take name from new macro
  1316.     TAG_STRING.
  1317.  
  1318.     * objc-actions.c (objc_init):  Call build_objc_string_object_template,
  1319.     and initialize new global objc_string_object_class_id.
  1320.  
  1321.     * objc-tree.def (OBJC_STRING_CST):  New node.
  1322.  
  1323.     * objc-actions.h (build_objc_string_object, build_objc_string):
  1324.     Declare new functions.
  1325.  
  1326.     * varasm.c (const_hash, compare_constant_1, record_constant_1):
  1327.     For ADDR_EXPR's, don't hash address of SYMBOL_REF.  Only use
  1328.     offset and name of symbol.  This allows constructors which
  1329.     contain pointers to identical string literals to be uniqued.  RMS
  1330.  
  1331. Noticed problem with memory allocation (6/24/91):
  1332.  
  1333.     * tree.c (gcc_obstack_init):  Use OBSTACK_CHUNK_ALLOC and
  1334.     OBSTACK_CHUNK_FREE instead of xmalloc and free, if defined.
  1335.     Call _obstack_begin() instead of obstack_begin().  We should
  1336.     be able to delete "#define obstack_chunk_alloc xmalloc" and
  1337.     "#define obstack_chunk_free free" from lots of source files.  RMS
  1338.  
  1339.     * xm-next.h (OBSTACK_CHUNK_ALLOC):  Use valloc.
  1340.  
  1341.     * gcc.texinfo (OBSTACK_CHUNK_ALLOC, OBSTACK_CHUNK_FREE):
  1342.     Document new macros and defaults.  RMS
  1343.  
  1344. Plugged two BIG memory leaks (6/24/91):
  1345.  
  1346.     * loop.c (loop_optimize, init_loop):  Moved call to
  1347.     gcc_obstack_init() from loop_optimize() to init_loop().
  1348.     This was leaking an entire chunk per call!  RMS
  1349.  
  1350.     * reload1.c (reload, init_reload):  Moved call to
  1351.     gcc_obstack_init() from reload() to new function init_reload().
  1352.     This was leaking an entire chunk per call!  RMS
  1353.  
  1354.     * toplev.c (compile_file):  Call new function init_reload().  RMS
  1355.  
  1356. Implemented #warning cpp directive (6/26/91):
  1357.  
  1358.     * cccp.c (enum node_type):  Added T_WARNING.  RMS
  1359.  
  1360.     * cccp.c (directive_table):  Added #warning.  RMS
  1361.  
  1362.     * cccp.c (do_warning):  Print warning message and continue.  RMS
  1363.  
  1364.     * cpp.texinfo:  Documented new #warning directive.  RMS
  1365.  
  1366. Added length field to NXConstantString's (7/18/91):
  1367.  
  1368.     * objc-actions.c (build_objc_string_object):  Added length field
  1369.     to constructor.
  1370.  
  1371. Changed default include search path on the NeXT (7/18/91):
  1372.  
  1373.     * cccp.c (include_defaults) Use LOCAL_INCLUDE_DIR macro instead
  1374.     of "/usr/local/include".  Provide default definition.
  1375.  
  1376.     * cccp.c (include_defaults) Added INCLUDE_DEFAULTS macro to
  1377.     provide complete control over default include directories.
  1378.     The VMS #ifdef should be moved to tm files and should use this
  1379.     macro, since it is the target machine which matters, not the
  1380.     machine we are compiling on.
  1381.  
  1382.     * gcc.texinfo (LOCAL_INCLUDE_DIR, INCLUDE_DEFAULTS):  Document new
  1383.     macros.
  1384.  
  1385.     * tm-next.h (INCLUDE_DEFAULTS):  Define for NeXT 3.0 release.
  1386.  
  1387. Changed message for Objective-C text in C source files (7/19/91):
  1388.  
  1389.     * objc-actions.c (build_objc_string_object, build_message_expr,
  1390.     build_selector_expr, build_encode_expr, get_class_ivars, start_class):
  1391.     Changed fatal error message to suggest using "-x objective-c" switch.
  1392.  
  1393. Added support for reporting events (7/19/91):
  1394.  
  1395.     * toplev.c (report_event):  New function to process events from cc1.
  1396.     Determines printable name of decl and calls macro REPORT_EVENT().
  1397.  
  1398.     * toplev.c (pfatal_with_name, fatal_io_error,
  1399.     error_with_file_and_line, error_with_decl,
  1400.     warning_with_file_and_line, warning_with_decl,
  1401.     sorry, really_sorry):  Call new function report_event().
  1402.  
  1403.     * cccp.c (error, error_from_errno, warning, error_with_line,
  1404.     pedwarn_with_file_and_line, fatal, perror_with_name,
  1405.     do_elif, do_else):  Call macro REPORT_EVENT().
  1406.  
  1407.     * gcc.c (main, do_spec_1):  Call macro REPORT_EVENT().
  1408.  
  1409. Changes to add @private and @protected (7/24/91):
  1410.  
  1411.     * objc.gperf:  Added @private and @protected keywords.
  1412.  
  1413.     * objc-parse.y:  Declared PRIVATE and PROTECTED tokens.
  1414.  
  1415.     * objc-parse.y (ivar_decl_list):  Allow PRIVATE and PROTECTED.
  1416.  
  1417.     * objc-parse.y (initlist):  Deleted initializers which are
  1418.     ambiguous with message exprs.
  1419.  
  1420.     * objc-parse.y (visibility_spec):  New rule.
  1421.  
  1422.     * objc-parse.y (ivar_decl_list):  Use new rule.
  1423.  
  1424. Fix for function-pointer method arg bug (7/26/91):
  1425.  
  1426.     * tree.c (make_node):  Removed special hack for PARM_DECL's.
  1427.     We should fix this better later.
  1428.  
  1429. Fix to cpp (7/26/91):
  1430.  
  1431.     * cccp.c (initialize_builtins):  Test for Objective-C was reversed.
  1432.     On NeXT, define objc only for -lang-objc, but always permit #import.
  1433.     Always define cplusplus so as to permit "//" comments.
  1434.  
  1435. Fix for @defs bug (7/26/91):
  1436.  
  1437.     * objc-actions.c (build_ivar_chain):  Take a new argument to specify
  1438.     whether leaf ivars should be copied.
  1439.  
  1440.     * objc-actions.c (get_class_ivars):  Call build_ivar_chain() with
  1441.     new arg 1 to ensure that finish_struct doesn't overwrite layout info
  1442.     with temporary storage.
  1443.  
  1444.     * objc-actions.c (build_private_template, continue_class):  Call
  1445.     build_ivar_chain () with new arg 0.
  1446.  
  1447. Fix for "if (...) x = a; else x = b;" bug (7/29/91):
  1448.  
  1449.     * rtlanal.c (reg_referenced_between_p): New function.
  1450.  
  1451.     * jump.c (jump_optimize):  Use it instead of reg_used_between_p when
  1452.     checking for "if (...) x = a; else x = b;" case.
  1453.  
  1454.     * jump.c (jump_optimize): Fix typo in "if (...) x = a; else x = b;"
  1455.     case: had temp3 instead of temp4.
  1456.  
  1457.     @ Looks like tis wasn't a bug after all.  I left the change in.
  1458.  
  1459. Fix for unsigned short to float conversion bug (7/29/91):
  1460.  
  1461.     * optabs.c (expand_float):  Always do conversions to FMODE in the
  1462.     signedness of the input.
  1463.  
  1464. Fix for compiler pathing problem (7/29/91):
  1465.  
  1466.     * tm-next.h (STANDARD_EXEC_PREFIX):  Define to be "/lib/".
  1467.  
  1468. Fix for problems with -object and -bsd (7/30/91):
  1469.  
  1470.     * tm-next.h (WORD_SWITCH):  New macro.
  1471.  
  1472.     * gcc.c (process_command):  Use it to solve problems.
  1473.  
  1474. Fix for #pragma CC_OPT_ON (7/30/91):
  1475.  
  1476.     * reload1.c (reload_as_needed):  Check live_known before accessing
  1477.     basic_block_head.  RMS
  1478.  
  1479. Restore -ObjC flag (7/30/91):
  1480.  
  1481.     * gcc.c (default_compilers):  Add Objective-C mods to C compiler
  1482.     spec conditional on -ObjC flag.  Ugly conflict with -O* flags.
  1483.  
  1484. Add -precomp flag (7/30/91):
  1485.  
  1486.     * gcc.c (default_compilers):  Add precomp flag to cpp for C and
  1487.     Objective-C files.
  1488.  
  1489. Fix for bug with Unix "major" macro (7/30/91):
  1490.  
  1491.     * combine.c:  Use new version.
  1492.  
  1493. Fix for cr bug (7/31/91):
  1494.  
  1495.     * c-parse.y, objc-parse.y:  Apply cr-diffs.
  1496.  
  1497. Fix for div/mod problem (7/31/91):
  1498.  
  1499.     * m68k.md (divmodsi4, udivmodsi4):  Use "register_operand" for "=d"
  1500.     constraints, since this makes reload do needless work.
  1501.  
  1502. Fix for hash div/mod bug (7/31/91):
  1503.  
  1504.     * local-alloc.c (block_alloc):  Record regs_live_at for last insn
  1505.     in basic block too.  Otherwise REG_UNUSED regs may overlap hard
  1506.     regs set in the last insn of the basic block.  RMS
  1507.  
  1508. Bug fixes for div/mod bug from kenner (8/1/91):  NOT INSTALLED YET!
  1509.  
  1510.     * combine.c (try_combine): When replacing SET_DEST inside a PARALLEL,
  1511.     don't replace it with something that has a side effect.
  1512.  
  1513. Fix for kernel hang (8/2/91):
  1514.  
  1515.     * combine.c (try_combine):  Turn off -fexpensive-optimizations.
  1516.     They don't appear to deal with reg_significant[] correctly.
  1517.  
  1518. Fix for cc1obj looping bug from kenner (8/2/91):
  1519.  
  1520.     * reload1.c (reload): Fix typo in condition for reg_equiv_address
  1521.     being set from reg_equiv_memory_loc; had X instead of XEXP (X, 0).
  1522.  
  1523. == New version cc-38 ==
  1524.  
  1525. Fix for cse crasher in atan2 from kenner (8/3/91):
  1526.  
  1527.     * cse.c (cse_insn): When recording this_insn_cc0, build a COMPARE
  1528.     rtl if SRC is a floating-point value.
  1529.  
  1530. Fix for cpp problem with cc860 (8/5/91):
  1531.  
  1532.     * cccp.c (main):  Turn on C++ comments unconditionally.
  1533.  
  1534. Changed objc-parse.y to expect 19 conflicts (8/5/91):
  1535.  
  1536.     * objc-parse.y:  Changed to expect 19 conflicts.
  1537.  
  1538. Fix for empty function crasher from kenner (8/5/91):
  1539.  
  1540.     * flow.c (regno_clobbered_at_setjmp): Don't blow up if no basic
  1541.     blocks.
  1542.  
  1543. Changed reference to -x flag to -ObjC (8/5/91):
  1544.  
  1545.     * objc-actions.c:  Changed warning message 7 places.
  1546.  
  1547. Added warnings for optimization level #pragma's (8/5/91):
  1548.  
  1549.     * out-next.c (handle_pragma):  Issue warnings for #pragma't to
  1550.     change optimization levels.
  1551.  
  1552. == integrated ==
  1553.  
  1554. Fix for spurious unsigned comparison warning (8/6/91):
  1555.  
  1556.     * c-typeck.c (build_binary_op_nodefault):  In signed versus unsigned
  1557.     compare warning, note promotions of unsigned.
  1558.  
  1559. Fix for crash on syntax error (8/6/91):
  1560.  
  1561.     * c-parse.y, objc-parse.y (simple_if):  Allow error instead of
  1562.     lineno_labeled_stmt.  Use new subroutine if_prefix.
  1563.  
  1564. == New version cc-39 ==
  1565.  
  1566. Fix for problem with include file search path (8/7/91):
  1567.  
  1568.     * tm-next.h (INCLUDE_DEFAULTS):  Check all /NextDeveloper paths before
  1569.     checking /usr/include.
  1570.  
  1571. == New version cc-40 ==
  1572.  
  1573. Fix for another problem with include file search path (8/7/91):
  1574.  
  1575.     * tm-next.h (INCLUDE_DEFAULTS):  Check /LocalDeveloper/Imports
  1576.     before /usr/include also.
  1577.  
  1578. Fix for Julius's crasher (8/7/91):
  1579.  
  1580.     * integrate.c (save_for_inline_copying): Clear constant pool after
  1581.     saving constants into the insns.
  1582.  
  1583.     * toplev.c (rest_of_compilation):  Save and restore DECL_INITIAL
  1584.     if we use save_for_inline_copying.
  1585.  
  1586.     * integrate.c (save_for_inline_copying): Really copy DECL_INITIAL.
  1587.     Calling integrate_decl_tree doesn't do it; deleted that call.
  1588.  
  1589.     * integrate.c (copy_decl_tree): New function.
  1590.  
  1591.     * integrate.c (integrate_decl_tree): Renamed from copy_decl_tree.
  1592.  
  1593.     * integrate.c (integrate_parm_decls): Renamed from copy_parm_decls.
  1594.  
  1595. Finished instance variable access control control (8/8/91):
  1596.  
  1597.     * objc-actions.c (add_instance_variable):  Set TREE_PUBLIC,
  1598.     TREE_PRIVATE and TREE_PROTECTED bits in ivar decls.
  1599.  
  1600.     * objc-actions.h (is_private):  Declare new function.
  1601.  
  1602.     * objc-actions.c (is_private):  New function.  Returns true and
  1603.     issues an error if instance variable is private and cannot be
  1604.     accessed from this context.
  1605.  
  1606.     * objc-actions.c (is_public):  Use new function.
  1607.  
  1608.     * objc-parse.y (primary):  Use new function.
  1609.  
  1610.     * CompilerNotes.rtf:  Updated release notes.
  1611.  
  1612. Always issue warning for static access to id (8/9/91):
  1613.  
  1614.     * objc-actions.c (is_public):  Make warning unconditional.
  1615.  
  1616. Fix for include search path problem (8/11/91):
  1617.  
  1618.     * cccp.c (do_include): Get current dir from nominal_fname.
  1619.  
  1620. Fix for code generation bug in /bin/sh (8/12/91):
  1621.  
  1622.     * combine.c (simplify_shift_const): Correct errors involving modes
  1623.     to use for shift.
  1624.  
  1625. Fix for reference to objc_msgSend in warning (8/12/91):
  1626.  
  1627.     * c-typeck.c (convert_for_assignment):  Check for message expr
  1628.     before issuing error referencing objc_msgSend.  Bug #15640.
  1629.  
  1630. Driver changes for precompiled headers (8/12/91):
  1631.  
  1632.     * gcc.c (default_compilers):  Removed warning for using -precomp
  1633.     with .h file.  Removed -precomp from .c and .m specs.
  1634.  
  1635. Fix for new spurious unsigned comparison warning (8/12/91):
  1636.  
  1637.     * c-typeck.c (build_binary_op_nodefault):  Rewote test.
  1638.  
  1639. == integrated ==
  1640.  
  1641. Better bug fix for div/mod bug from kenner (8/12/91):
  1642.  
  1643.     * combine.c (try_combine): When replacing SET_DEST inside a PARALLEL,
  1644.     don't replace it with something that has a side effect.
  1645.  
  1646.     * reload.c (MATCHES): Don't consider two things equal if they have
  1647.     side effects.
  1648.  
  1649.     * m68k.md (divmodsi4, udivmodsi4):  Undid previous change of 7/31/91
  1650.  
  1651. Better bug fix for kernel hang from kenner (8/12/91):
  1652.  
  1653.     * combine.c (set_significant): Handle a complex SET_DEST correctly.
  1654.  
  1655.     * combine.c (try_combine):  Undid previous change of 8/2/91.
  1656.  
  1657. Fix for failing to link in NXConstantString.o (8/12/91):
  1658.  
  1659.     * objc-actions.c (build_objc_string_object):  Call add_class_reference
  1660.     to make sure NXConstantString.o gets linked in.
  1661.  
  1662. Turned off warnings about signed and unsigned (8/13/91):
  1663.  
  1664.     * c-typeck.c (build_binary_op_nodefault):  I turned this off until
  1665.     we have time to make it work right.
  1666.  
  1667. == New version cc-41 ==
  1668.  
  1669. Fix for problem with #warning (8/14/91):
  1670.  
  1671.     * cccp.c (do_warning):  Use warning () rather than error ().
  1672.  
  1673. Fix to driver for precompiled headers (8/14/91):
  1674.  
  1675.     * gcc.c (default_compilers[], link_command_spec):  Make -precomp
  1676.     inhibit compilation and linking like -E.
  1677.  
  1678. Change for new names in header file reorg (8/15/91):
  1679.  
  1680.     * tm-next.h (INCLUDE_DEFAULTS):  Use new directory names.
  1681.  
  1682. == integrated ==
  1683.  
  1684. Experiment with include file search path (8/19/91):
  1685.  
  1686.     * tm-next.h (INCLUDE_DEFAULTS):  Interchange /LocalDeveloper/Headers
  1687.     and /NextDeveloper/2.0CompatibleHeaders to solve Brian's problem.
  1688.  
  1689. Fixed bugs in protocols (8/21/91):
  1690.  
  1691.     * encode_method_prototype() wasn't expanding return type...also
  1692.     fixed bug with `oneway' (Vi->V).
  1693.  
  1694.      * hack_method_prototype() was crashing with -O...should call
  1695.     init_emit().
  1696.  
  1697.     * get_static_reference() should install protocol stuff for
  1698.     typechecking in build_message_expr().
  1699.  
  1700. Fix for problems with -y (8/21/91):
  1701.  
  1702.     * gcc.c (link_command_spec):  Changed Y* to y* so that -ysym flags
  1703.     are passed to the loader.
  1704.  
  1705. Fix for problem with pathing for /bin/as (8/22/91):
  1706.  
  1707.     * gcc.c (standard_exec_prefix_1):  Set to "/bin/" for NeXT.
  1708.  
  1709. == New version cc-42 ==
  1710.  
  1711. Fix to add warning about comparison of unsigned with zero (8/22/91):
  1712.  
  1713.     * c-common.c (shorten_compare): Warn about unsigned >= 0.
  1714.  
  1715. Fix for kernel code generation bug (8/22/91):
  1716.  
  1717.     * expmed.c (emit_store_flag): Set ICODE only after CODE is right.
  1718.  
  1719.     * jump.c (jump_optimize):  Add missing arg to get_condition ().
  1720.  
  1721. == integrated ==
  1722.  
  1723. Fix deps file problem in cpp (8/23/91):
  1724.  
  1725.     * cccp.c (main):  Record name of dependencies file in deps_filename,
  1726.     and remove it if there are errors.  Otherwise, incorrect dependencies
  1727.     may be written which may cause make to fail.
  1728.  
  1729. == New version cc-43 ==
  1730.  
  1731. Fix for crasher when NXString.h is not included (8/26/91):
  1732.  
  1733.     * objc-actions.c (build_objc_string_object): Return error_mark_node,
  1734.     not ERROR_MARK.
  1735.  
  1736. Added @class feature (8/26/91):
  1737.  
  1738.     * objc-actions.c (yylex):  CLASSNAME tokens are now identifier nodes
  1739.     rather than class interface nodes.  Uses new function is_class_name.
  1740.  
  1741.     * objc-parse.y (identifier, typespec, component_decl_list2, receiver):
  1742.     Changed to reflect new usage of CLASSNAME.
  1743.  
  1744.     * objc-actions.c (get_static_reference, get_class_reference):  Both
  1745.     functions now take an identifier rather than an interface to
  1746.     accomodate CLASSNAME change.
  1747.  
  1748.     * objc-actions.c (is_class_name):  New function.
  1749.  
  1750.     * objc.gperf:  Added @class keyword.
  1751.  
  1752.     * objc-parse.y:  Installed new gperf lexer, and added CLASS token.
  1753.  
  1754.     * objc-parse.y (objcdef):  Use new production classdecl.
  1755.  
  1756.     * objc-parse.y (classdecl):  New production.  Calls new function
  1757.     objc_declare_class.
  1758.  
  1759.     * objc-actions.h (objc_declare_class):  Declare new function.
  1760.  
  1761.     * objc-actions.c (class_chain):  New static to hold identifiers of
  1762.     classes declared with @class.
  1763.  
  1764.     * objc-actions.c (objc_declare_class):  Add identifier to class_chain.
  1765.     Create forward reference to struct and set TREE_STATIC_TEMPLATE bit.
  1766.  
  1767.     * objc-actions.c (build_message_expr):  Make illegal receiver an error
  1768.     rather than a warning to avoid duplicate warnings or errors from being
  1769.     reported on objc_msgSend().  Return error_mark_node.
  1770.  
  1771.     * objc-actions.c (build_message_expr, is_public):  Issue errors for
  1772.     static references to classes for which we haven't seen an interface.
  1773.  
  1774. Added @compatibility_alias feature (8/27/91):
  1775.  
  1776.     * objc.gperf:  Added @compatibility_alias keyword.
  1777.  
  1778.     * objc-parse.y:  Installed new gperf lexer, and added ALIAS token.
  1779.  
  1780.     * objc-parse.y (objcdef):  Use new production aliasdecl.
  1781.  
  1782.     * objc-parse.y (aliasdecl):  New production.  Calls new function
  1783.     objc_declare_alias.
  1784.  
  1785.     * objc-actions.h (objc_declare_alias):  Declare new function.
  1786.  
  1787.     * objc-actions.c (alias_chain):  New static to hold identifiers of
  1788.     aliases declared with @compatibility_alias.
  1789.  
  1790.     * objc-actions.c (objc_declare_alias):  Add identifier to alias_chain.
  1791.  
  1792.     * objc-actions.h (is_class_name):  Declareas returning a tree.
  1793.  
  1794.     * objc-actions.c (is_class_name):  Check alias_chain, and return
  1795.     actual class name for aliases.
  1796.  
  1797.     * objc-parse.y (yylex):  Set yylval.ttype to return value of
  1798.     is_class_name.
  1799.  
  1800. Minor cleanup of objc-actions.h (8/27/91):
  1801.  
  1802.     * objc-actions.h:  Make all declarations "extern".
  1803.  
  1804. == integrated ==
  1805.  
  1806. Fix for zero-extract code generation bug (9/5/91):
  1807.  
  1808.     * m68k.md:  Restricted the memory-to-memory zero_extend patterns to
  1809.     avoid problems with memory aliasing.
  1810.  
  1811. Turned off -fstrength-reduce by default (9/5/91):
  1812.  
  1813.     * tm-next.h (OPTIMIZATION_OPTIONS):  Turn off strength reduction
  1814.     at all optimization levels by default since it makes code worse
  1815.     on the 68k.
  1816.  
  1817. Improved prologue and epilogue code when frame-pointers are not used (9/5/91):
  1818.  
  1819.     * out-m68k.c (output_function_prologue):  Add a negative constant
  1820.     to sp rather than subtracting a positive one, since this is faster.
  1821.  
  1822.     * out-m68k.c (output_function_prologue, output_function_epilogue):
  1823.     Use word sized immediates when possible.
  1824.  
  1825. == New version cc-44 ==
  1826.  
  1827. Fix for bitfield comparison bug (9/9/91):
  1828.  
  1829.     * fold-const.c (optimize_bit_field_compare):  Return one when
  1830.     comparison against bitfield constant which is too large uses
  1831.     "!=" rather than "==".  (Bug #15870)
  1832.  
  1833. Moved OPTIMIZATION_OPTIONS change to tm-m68k.h (9/10/91):
  1834.  
  1835.     * tm-m68k.h (OPTIMIZATION_OPTIONS):  Turn off strength reduction
  1836.     at all optimization levels by default since it makes code worse
  1837.     on the 68k.
  1838.  
  1839. Made #warning message more concise (9/10/91):
  1840.  
  1841.     * cccp.c (do_warning):  Don't print "#warning", since warning()
  1842.     already prints "warning:".
  1843.  
  1844. Pick up fsf fix for cpp bug (9/10/91):
  1845.  
  1846.     * cccp.c (skip_if_group): Deal with invalid directives the same
  1847.     way handle_directive does.
  1848.  
  1849. Fix bug with fix_trunc patterns (9/10/91):
  1850.  
  1851.     * m68k.md (fix_trunc*):  Call CC_STATUS_INIT, since these patterns
  1852.     do not leave the condition codes in the expected state.
  1853.  
  1854. Added -arch flag to cc driver (9/10/91):
  1855.  
  1856.     * gcc.c (process_command):  Make -arch flag do the same thing as -b,
  1857.     except that the arg must be separated by a space.
  1858.  
  1859. Fixed problem with constant string objects in struct initializers (9/16/91):
  1860.  
  1861.     * varasm.c (output_addressed_constants):  Handle a CONSTRUCTOR in
  1862.     an ADDR_EXPR correctly.
  1863.  
  1864. Fix for problem with dis from kenner (9/16/91):
  1865.  
  1866.     * combine.c (exand_field_assignment): Don't allow sharing the RTL
  1867.     for the inner object.
  1868.  
  1869. Fix for further problems with redeclaring "id" (9/17/91):
  1870.  
  1871.     * objc-pase.y (yylex):  Only return OBJECTNAME when it is a type name.
  1872.  
  1873. Change to improve Objective-C code generation (9/18/91):
  1874.  
  1875.     * objc-actions.c (build_selector_reference):  Mark selector references
  1876.     TREE_READONLY, so that they can be CSE'd.  (This doesn't work
  1877.     on the 68k yet because memory appears to be as cheap as a constant.)
  1878.  
  1879.     * objc-actions.c (generate_shared_structures):  Mark class and
  1880.     metaclass structures const, so that references to the superclass can
  1881.     be CSE'd.
  1882.  
  1883.     * tm-next.h (SELECT_SECTION):  Check for OBJC decls before testing
  1884.     TREE_READONLY, since some OBJC decls are now const.
  1885.  
  1886. Fix for problems with @class (9/20/91):
  1887.  
  1888.     * objc-parse.y (classdecl):  Use new production identifier_list
  1889.     rather than identifers to allow all identifiers.
  1890.  
  1891.     * objc-actions.c (objc_declare_class):  Handle redeclaration of
  1892.     classes.
  1893.  
  1894. Fix to prevent redeclaration of typedef names as classes (9/20/91):
  1895.  
  1896.     * objc-actions.c (start_class, objc_declare_class):  Use lookup_name
  1897.     to verify that the class name isn't already declared as a variable,
  1898.     function, or typedef.
  1899.  
  1900.  
  1901. == integrated ==
  1902.  
  1903. Fix for crasher with union constructors (9/23/91):
  1904.  
  1905.     * expr.c (store_constructor): Handle union constructor.
  1906.  
  1907. Support -smart flag of new cpp (9/23/91):
  1908.  
  1909.     * gcc.c (default_compilers[]):  Pass -smart flag to cpp when output
  1910.     is bound for cc1.
  1911.  
  1912.     * cccp.c (main):  Recognize and ignore -smart flag.
  1913.  
  1914. == integrated ==
  1915.  
  1916. Improve support for preprocessing assembler files (9/29/91):
  1917.  
  1918.     * gcc.c (default_compilers[]):  Pass -lang-asm rather than -lang-c
  1919.     to cpp when preprocessing assembler files.
  1920.  
  1921.     * cccp.c (main):  Recognize -lang-asm flag.
  1922.  
  1923. == New version cc-45 ==
  1924.  
  1925. Fix for crash on syntax error with else (10/1/91):
  1926.  
  1927.     * c-parse.y, objc-parse.y (stmt):  Allow error after "else".  Make
  1928.     sure that expand_end_cond() is always called once.
  1929.  
  1930. Changes to use new smart cpp (10/1/91):
  1931.  
  1932.     * Makefile (m68k_install):  Install cpp as gnu-cpp.
  1933.  
  1934. == New version cc-46 ==
  1935.  
  1936. Fixes for problems with options to new cpp (10/4/91):
  1937.  
  1938.     * tm-m68k.h (ASM_COMMENT_START):  Define to be '|' on 68k.
  1939.  
  1940.     * gcc.c (default_compilers[]):  Pass -Wprecomp -Wno-precomp to cpp.
  1941.  
  1942.     * gcc.c (default_compilers[]):  Handle -precomp properly in all cases.
  1943.     Create .p files unless -o is specified.  Also handle -no-precomp.
  1944.  
  1945. == New version cc-47 ==
  1946.  
  1947. Improvements to -MD for new Makefile API (10/15/91):
  1948.  
  1949.     * gcc.c (default_compilers[]):  Support new -dependency-file flag.
  1950.  
  1951. Temporary workaround for scheduling bug (10/16/91):
  1952.  
  1953.     * sched.c (attach_deaths):  Print warning rather than aborting when
  1954.     extra REG_DEAD notes are detected.  Fix this properly later.
  1955.  
  1956. Rewrite of Objective-C string object support (10/16/91):
  1957.  
  1958.     * objc-actions.c (objc_string_object_class_ref,
  1959.     build_objc_string_object_class_ref):  Removed variable and function.
  1960.     Build constant_string_id and constant_string_type in
  1961.     synth_module_prologue().
  1962.  
  1963.     * objc-actions.c (STRING_OBJECT_CLASS_NAME):  New macro.
  1964.  
  1965.     * objc-actions.c (build_objc_string_object):  Generate a zero in
  1966.     the isa field of string constants instead of a reference to
  1967.     _NXConstantString_class.
  1968.  
  1969.     * tm-next.h (SELECT_SECTION):  Place constructors for string objects
  1970.     in the string object section.
  1971.  
  1972. Changes to simplify integration of changes for class references (10/16/91):
  1973.  
  1974.     * objc-actions.c (add_selector_reference):  Record string table
  1975.     offset in TREE_PURPOSE field of sel_ref_chain.
  1976.  
  1977.     * objc-actions.c (build_selector_translation_table):  Get string table
  1978.     offset from TREE_PURPOSE field rather than recalculating it.  This
  1979.     avoids a requirement that the selector strings being first in the
  1980.     string table.
  1981.  
  1982.     * objc-actions.c (generate_forward_declaration_to_string_table):
  1983.     Call from synth_module_prologue() rather than from finish_objc().
  1984.  
  1985. == integrated ==
  1986.  
  1987. Chnages to install and use GNU cpp (10/18/91):
  1988.  
  1989.     * Makefile (m68k_install):  Install cpp as /lib/cpp.
  1990.  
  1991.     * gcc.c (default_compilers[]):  Use /lib/cpp-precomp when output is
  1992.     directed to compiler proper.  Otherwise use /lib/cpp.
  1993.  
  1994. == New version cc-48 ==
  1995.  
  1996. Fix for problems with new cpp (10/23/91):
  1997.  
  1998.     * gcc.c (default_compilers[]):  Pass -traditional to cpp when
  1999.     -traditional-cpp is seen.  Use /lib/cpp rather than /lib/cpp-precomp
  2000.     whenever -traditional or -traditional-cpp is seen.
  2001.  
  2002. == New version cc-49 ==
  2003.  
  2004. Fixes for recent fix (11/1/91):
  2005.  
  2006.     * gcc.c (default_compilers[]):  Don't pass -traditional to cpp when
  2007.     -traditional-cpp is seen.
  2008.  
  2009. Removed annoying warning (11/1/91):
  2010.  
  2011.     * gcc.c (main):  Don't warn about unused -B flags.
  2012.  
  2013. Cleaned up include path (11/1/91):
  2014.  
  2015.     * tm-next.h (INCLUDE_DEFAULTS):  Removed /usr/include and
  2016.     /usr/local/include from default search path.
  2017.  
  2018. Added endianess predefine (11/1/91):
  2019.  
  2020.     * tm-next68.h, tm-next88.h (CPP_PREDEFINES):  Define __BIG_ENDIAN__.
  2021.  
  2022. Added architecture predefine (11/1/91):
  2023.  
  2024.     * tm-next68.h, tm-next88.h (CPP_PREDEFINES):  Define __ARCHITECTURE__.
  2025.  
  2026. Fix for Protocol parse error (11/4/91):
  2027.  
  2028.     * objc-parse.y (protocolrefs):  Use identifier_list rather than
  2029.     identifiers to allow class names and other type names.
  2030.  
  2031. Added support for string concatenation in #include (11/4/91):
  2032.  
  2033.     * cccp.c (do_include):  Allow #include "std" "io.h"
  2034.  
  2035. Compensate for malloc preformance bug (11/4/91):
  2036.  
  2037.     * xm-next.h (OBSTACK_CHUNK_SIZE):  Set to pagesize - 4 to workaround
  2038.     malloc bug.
  2039.  
  2040. Fix for bug in obstacks! (11/5/91):
  2041.  
  2042.     * obstack.c (_obstack_newchunk):  Don't delete empty chunks, since
  2043.     they may contain zero sized objects!  This caused a crash whenever
  2044.     a string constant larger than the obstack chunk size was used to 
  2045.     initialize a decl.
  2046.  
  2047. == New version cc-50 ==
  2048.  
  2049. Hacks for dhrystones (11/6/91):
  2050.  
  2051.     * flags.h (flag_word_align_strings):  Declare new flag.
  2052.  
  2053.     * toplev.c (flag_word_align_strings):  Define new flag and turn on
  2054.     for -fword-align-strings.
  2055.  
  2056.     * tm-next.h (CONSTANT_ALIGNMENT, DATA_ALIGNMENT):  Align string
  2057.     constants to word boundaries for -fword-align-strings. 
  2058.  
  2059.     * flags.h (flag_builtin_ansi_functions):  Declare new flag.
  2060.  
  2061.     * toplev.c (flag_builtin_ansi_functions):  Define new flag and turn on
  2062.     for -fbuiltin-ansi-functions.
  2063.  
  2064.     * c-decl.c (init_decl_processing):  Only declare builtin ANSI functions
  2065.     for -fbuiltin-ansi-functions.
  2066.  
  2067. Fix for bss alignment problem (11/8/91):
  2068.  
  2069.     * tm-next.h (ASM_OUTPUT_ALIGNED_LOCAL):  Define.
  2070.  
  2071.     * tm-next88.h (ASM_OUTPUT_LOCAL):  No longer define.
  2072.  
  2073.     * tm-next88.h (FUNCTION_BOUNDARY):  Only align functions to 4-bytes.
  2074.  
  2075. Fix for mark's bug (11/12/91):
  2076.  
  2077.     * combine.c (subst):  Fixed bug in simplification of (neg X) when
  2078.     X has only 1 significant bit.
  2079.  
  2080. Fix for bassanio's cpp driver problem (11/15/91):
  2081.  
  2082.     * gcc.c (default_compilers[]):  Correct handling of cpp when both
  2083.     -E and -traditional-cpp are given.
  2084.  
  2085. Fix for doug's volatile problem (11/16/91):
  2086.  
  2087.     * c-typeck.c (build_array_ref): Ref is volatile if array is volatile.
  2088.  
  2089. Fix for incorrect warnings about volatile functions (11/17/91):
  2090.  
  2091.     * c-typeck.c (build_unary_op):
  2092.     Handle const and volatile lvalues correctly in ADDR_EXPR.
  2093.  
  2094.     * objc-actions.c (generate_shared_structures):  Don't make class and
  2095.     metaclass structures const, since this now causes warnings due to
  2096.     lack of const in Objective-C header files.
  2097.  
  2098.     * calls.c (expand_call):  Handle calls through pointers to volatile
  2099.     functions.  (Turned off until RMS fixes this.)
  2100.  
  2101. == New version cc-51 ==
  2102.  
  2103. Improved optimization of multiplication by constants (11/22/91):
  2104.  
  2105.     * tm-m68k.h (RTX_COSTS):  Reflect relative speed of multiply,
  2106.     divide, shift, and lea insn's.
  2107.  
  2108.     * expmed.c (init_expmed):  Fixed bug which prevented lea insn's from
  2109.     being recognized.  This prevented the lea strategy from being used.
  2110.  
  2111.     * expmed.c (init_expmed):  Calculate shift_cost using a shift by
  2112.     a small constant rather than a variable shift, since these may have
  2113.     different costs.
  2114.  
  2115. Change to force categories to reference their classes (11/26/91):
  2116.  
  2117.     * objc-actions.c (generate_category):  Call add_class_reference() with
  2118.     name of class category is part of.  This helps detect certain problems
  2119.     at link time (or in rld_load()) rather than later.
  2120.  
  2121. Change to place constant constructors in the const section (12/2/91):
  2122.  
  2123.     * tm-next.h (SELECT_SECTION):  Check TREE_CONSTANT in addition to
  2124.     TREE_READONLY since the latter isn't set for constructors.
  2125.  
  2126. Fix for problems with asm's and scheduling (12/3/91):
  2127.  
  2128.     * sched.c (sched_analyze_2): Correctly handle ASM_OPERAND and
  2129.     ASM_INPUT rtx.  Volatile and traditional asm statements are
  2130.     assumed to use and clobber all hard registers and all memory.
  2131.     (schedule_block): Delete code that incorrectly handles ASM_OPERAND
  2132.     and ASM_INPUT rtx by exiting early.
  2133.  
  2134. Fix for missing "may be used uninitialized" warnings (12/10/91):
  2135.  
  2136.     * c-decl.c (c_decode_option):  Set warn_uninitialized for -Wall.
  2137.  
  2138.     * flags.h (warn_uninitialized):  Declare.
  2139.  
  2140.     * toplev.c (warn_uninitialized):  Make global.
  2141.  
  2142. Fix for crasher in final (12/10/91):
  2143.  
  2144.         * flow.c (find_basic_blocks): Set depth of last insn, not first,
  2145.         into basic_block_loop_depth.
  2146.         (propagate_blocks): Use consistently with new definition.
  2147.  
  2148.     * flow.c (propagate_block): Adjust loop depth if it is changed in
  2149.     notes at the end of a block.
  2150.     Abort if loop depth ever reaches zero.
  2151.  
  2152. Improvements to memory usage statistics (12/11/91):
  2153.  
  2154.     * obstack.c (obstack_size):  New function.
  2155.  
  2156.     * toplev.c (main):  Report sizes of all obstacks for -dm.
  2157.  
  2158. == New version cc-52 ==
  2159.  
  2160. Protocol api/space improvements (12/18/91):
  2161.  
  2162.     * objc-parse.y: Added objcprotocolexpr rule.
  2163.  
  2164.     * objc-actions.h: Added PROTOCOL_FORWARD_DECL, build_protocol_expr.
  2165.  
  2166.     * objc-actions.c (objc_protocol_template, protocol_type):  additions.
  2167.     * objc-actions.c (build_protocol_reference):  addition.
  2168.     * objc-actions.c (build_protocol_expr):  addition.
  2169.     * objc-actions.c (generate_protocol_references):  addition.
  2170.     * objc-actions.c (generate_protocols):  modified.
  2171.     * objc-actions.c (generate_shared_structures):  modified.
  2172.     * objc-actions.c (generate_protocol_list):  wire down protocol refs.
  2173.     * objc-actions.c (OBJC_VERSION):  increment version number.
  2174.  
  2175. Fixed bugs related to WORDS_BIG_ENDIAN being defined (12/16/91):
  2176.  
  2177.         * final.c (split_double): Handle all integer constants.
  2178.  
  2179.         * out-m68k.c (output_move_double): Use split_double for all constants.
  2180.  
  2181.         * optabs.c (expand_binop): Fix carry propagation code for multiple
  2182.         words.
  2183.  
  2184.         * m68k.md (umulsidi3, mulsidi3): New DEFINE_EXPANDs and DEFINE_INSN
  2185.         recognizers.
  2186.  
  2187.         * expr.c (do_store_flag): Give up if can't directly compare args.
  2188.  
  2189. Minor improvement to Makefile (12/17/91):
  2190.  
  2191.     * Makefile:  Use touch -f on stamp-* files.
  2192.  
  2193. Improvements to MakeApp support (12/18/91):
  2194.  
  2195.     * make.defs:  Added new directory arg.
  2196.  
  2197.     * make_support.c (make_support):  Use new arg.
  2198.  
  2199.     * objc-actions.c (error_with_ivar, error_with_method, warn_with_method)
  2200.     Use REPORT_EVENT.
  2201.  
  2202.     * objc-actions.c (error_with_method, warn_with_method):  Changed
  2203.     DECL_SOURCE_FILE and DECL_SOURCE_LINE to METHOD_FILENAME and
  2204.     METHOD_LINENUM.  This was a latent bug which happened to work.
  2205.  
  2206.     * toplev.c (report_event):  Make global.
  2207.  
  2208. Changes to simplify integratation of Objective-C++ (12/19/91):
  2209.  
  2210.         * objc-actions.c (class_type):  Renamed to objc_class_type.
  2211.  
  2212. Changes to avoid useless stabs (12/19/91):
  2213.  
  2214.     * dbxout.c (dbxout_symbol):  Don't output stabs for objc symbols.
  2215.  
  2216. == New version cc-53 ==
  2217.  
  2218. Changes to integrate C++ driver (1/13/92):
  2219.  
  2220.     * gcc.c (default_language):
  2221.     * gcc.c (process_command):
  2222.     * gcc.c (lookup_compiler):
  2223.     * gcc.c (default_compilers[]):
  2224.  
  2225. Fix for more asm volatile problems (1/14/92):
  2226.  
  2227.     * reorg.c (mark_referenced_resources):  Treat traditional asm's and
  2228.     asm volatile's correctly.
  2229.  
  2230. Changes for constructors/destructors (1/14/92):
  2231.  
  2232.     * tm-next.h (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR):
  2233.     Output an undefined reference to the symbol .constructors_used or
  2234.     .destructors_used as appropriate.
  2235.  
  2236. Improved warnings for pointer type comparisons (1/15/91):
  2237.  
  2238.     * c-typeck.c (comptypes):  Removed old NeXT mod, since it was much
  2239.     too permissive.
  2240.  
  2241.     * c-typeck.c (comp_target_types):  Added new NeXT mod which is much
  2242.     more specific.  It compares pointer types ignoring qualifiers
  2243.     recursively rather than only one level deep, as ANSI specifies.
  2244.     This makes const char ** and char ** compatible without the other
  2245.     undesirable effects the previous mod had.
  2246.  
  2247. Improvements to Objective-C type printing (1/16/91):
  2248.  
  2249.     * objc-actions.c (error_with_method, warn_with_method):  Old bug.
  2250.     Call gen_method_decl() instead of gen_declaration().
  2251.  
  2252.     * objc-actions.c (gen_declaration, gen_declspecs, adorn_decl):
  2253.     Improve handling of arrays, functions and typedef's.  Eliminated
  2254.     unwanted whitespace.  Handle pointer qualifiers.
  2255.  
  2256. Fix for default method return types (1/16/91):
  2257.  
  2258.     * objc-actions.c (build_method_decl):  Make method return type default
  2259.     to "id"    even when there are type qualifiers.
  2260.  
  2261. Fix for crasher in format warnings (1/20/92):
  2262.  
  2263.     * c-typeck.c (check_format):  If length modifier is incompatible
  2264.     with format, set wanted_type to unmodified format type rather than 0.
  2265.  
  2266. Improvements to Objective-C type checking (1/21/92):
  2267.  
  2268.     * objc-actions.c (lookup_class_method_static):  Check for class
  2269.     methods in protocols.
  2270.  
  2271.     * objc-actions.c (lookup_class_method_static):  Simulate wrap around
  2272.     by calling lookup_instance_method_static() at end of superclass chain.
  2273.  
  2274. Eliminate warnings about longjmp() clobbering variables (1/21/92):
  2275.  
  2276.     * c-decl.c (finish_function):  Treat setjmp() traditionally.
  2277.     Place all local variables on the stack unless they are explicitly
  2278.     declared "register".  This test should be improved to only force
  2279.     variables which could be clobberred by longjmp() onto the stack.
  2280.  
  2281. Further improvements to Objective-C type checking (1/24/92):
  2282.  
  2283.     * objc-actions.c (build_message_expr):  Bug fix.  Check for protocol
  2284.     qualified static types in implementation also.
  2285.  
  2286.     * objc-actions.c (build_message_expr):  Unite type checking for
  2287.     statically allocated and statically typed objects.  The statically
  2288.     allocated code was quite out of date.
  2289.  
  2290. Fix to encode bycopy qualifier in method return types (1/24/92):
  2291.  
  2292.     * objc-actions.c (encode_method_qualifiers):  Encode "bycopy" also.
  2293.  
  2294. Fix to make id default type work with new type qualifiers (1/24/92):
  2295.  
  2296.     * objc-actions.c (adjust_type_for_id_default):  New function.
  2297.     Adds the typespec "id" if none was present.
  2298.  
  2299.     * objc-actions.c (build_keyword_decl, build_method_decl):  Call
  2300.     new function adjust_type_for_id_default().
  2301.  
  2302. Fix to check consistency with protocol interfaces (1/24/92):
  2303.  
  2304.     * objc-actions.c (really_start_method):  Use
  2305.     lookup_instance_method_static() or lookup_class_method_static()
  2306.     to find prototype to compare against implementation.
  2307.  
  2308. More improvements to Objective-C type printing (1/27/92):
  2309.  
  2310.     * objc-actions.c (is_complex_decl):  Don't treat id as a complex type
  2311.     so that we print id rather than struct objc_object *.
  2312.  
  2313.     * objc-actions.c (gen_declspecs):  Handle id and protocol-qualified
  2314.     types correctly.
  2315.  
  2316.     * objc-actions.c (gen_declspecs):  Handle long long.
  2317.  
  2318. Changes to encoding of type qualifiers (1/27/92):
  2319.  
  2320.     * objc-actions.c (encode_type_qualifiers):  New function replaces
  2321.     encode_method_qualifiers() and encode_method_arg_qualifiers().
  2322.     Which qualifiers are allowed in which places will be checked
  2323.     elsewhere.
  2324.  
  2325. Fix for potential id * bug (1/28/92):
  2326.  
  2327.     * objc-actions.c (get_object_reference):  Copied hack from
  2328.     get_static_reference() regarding pointer typesd already being built.
  2329.     This fixes an obscure bug is you use id * and id <Foo> *.
  2330.  
  2331. Changes to reduce diffs between Objective-C++ (1/28/92):
  2332.  
  2333.     * objc-actions.c (synth_module_prologue):  Declare objc_getClass() and
  2334.     objc_getMetaClass() with prototypes (C++ requires this).
  2335.  
  2336.     * objc-actions.[hc]:  New macro FIRST_OBJC_TREE_CODE.  Use it instead
  2337.     of LAST_AND_UNUSED_TREE_CODE.  This simplifies integrating C++.
  2338.  
  2339. Added support for protocols in categories (mself 1/30/92):
  2340.  
  2341.     * objc-parse.y (classdef):  Added protocolrefs to category interfaces.
  2342.  
  2343.     * objc-actions.c (start_class):  Add protocols to category structure.
  2344.  
  2345.     * objc-actions.c (generate_category):  Generate protcol references and
  2346.     list.  Add new protocols argument to build_category_initializer().
  2347.  
  2348.     * objc-actions.c (generate_protocol_list):  Handle category interfaces
  2349.     like class interfaces.
  2350.  
  2351.     * objc-actions.c (build_category_initializer):  Build initializer
  2352.     for new protocols field.
  2353.  
  2354.     * objc-actions.c (build_category_template):  Added new protocols field.
  2355.  
  2356.     * objc-actions.c (generate_protocols,
  2357.     build_shared_structure_initializer):  Fixed latent bug two places
  2358.     where build_unary_op() was being called with a tree as its third arg
  2359.     instead of an int.
  2360.  
  2361.     * objc-actions.c (generate_protocol_list):  Added initializer for new
  2362.     "next" field.  Is there some reason why we handle this like an array
  2363.     rather than as the struct it is?  This isn't consistent with how
  2364.     method_lists are handled.  Yuck.
  2365.  
  2366.     * objc-actions.c (synth_id_with_class_suffix):  Handle
  2367.     CATEGORY_INTERFACE as well as CATEGORY_IMPLEMENTATION!
  2368.  
  2369.     * objc-actions.c (OBJC_VERSION):  Incremented to 5!
  2370.  
  2371.     * objc-actions.c (PROTOCOL_VERSION):  New macro.  Incremented to 2!
  2372.  
  2373. Bug fix for using Protocols with archive libraries (1/31/92):
  2374.  
  2375.     * objc-actions.c (generate_protocols):  Generate a reference
  2376.     to the Protocol class to ensure that it is linked in.  Otherwise
  2377.     protocols will never be initialized since +[Protocol load] will
  2378.     never be called!
  2379.  
  2380. Added type checking for protocols in categories (1/31/92):
  2381.  
  2382.     * objc-actions.c (lookup_instance_method_static,
  2383.     lookup_instance_method_static):  Check protocols in categories too.
  2384.  
  2385.     * objc-actions.c (objc_comptypes):  Check for protocols in
  2386.     categories too.
  2387.  
  2388.     * objc-actions.c (finish_class):  Check that categories fully
  2389.     implement protocols they adopt.
  2390.  
  2391. Fix for crasher with new protocol support (1/31/92):
  2392.  
  2393.     * objc-actions.c (generate_category):  Avoid hairy obstack bug by
  2394.     moving start_decl further down in the function.
  2395.  
  2396. Added Makefile support for profiling (2/4/92):
  2397.  
  2398.     * Makefile:  Just say make profile.
  2399.  
  2400.     * Makefile.in (CLIB):  Define to be -lsys_s so that we don't get
  2401.     -lsys_p when we link with -pg.
  2402.  
  2403. Tighten up checks for Objective-C in C source (2/6/92):
  2404.  
  2405.     * objc-actions.c (objc_declare_class, objc_declare_alias):
  2406.     Check doing_objc_thang.
  2407.  
  2408. Changes to ease integration with C++ (2/6/92):
  2409.  
  2410.     * objc-actions.h (TYPE_PROTOCOL_LIST):  New macro.
  2411.  
  2412.     * objc-actions.c:  Use TYPE_PROTOCOL_LIST instead of TYPE_LANG_SPECIFIC
  2413.  
  2414. == New version cc-54 ==
  2415.  
  2416. Changes to fix const warnings (2/12/92):
  2417.  
  2418.         * c-typeck.c (build_modify_expr): Test TREE_READONLY of lhs.
  2419.  
  2420. Changes to segregate Objective-C strings (2/18/92):
  2421.  
  2422.     * tm-next.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS,
  2423.     objc_section_init, SELECT_SECTION):  Added new Objective-C string
  2424.     sections.
  2425.  
  2426.     * objc-actions.c (enum stringSection):  New enum.
  2427.  
  2428.     * objc-actions.c (add_objc_string):  Changed to return the string
  2429.     directly rather than an offset to pass to build_msg_pool_reference().
  2430.     Added a new section argument.  Uniques strings within each section.
  2431.  
  2432.     * objc-actions.c (build_objc_string_decl):  New function to build
  2433.     the string decls using pushdecl_top_level().
  2434.  
  2435.     * objc-actions.c (build_selector):  New function to replace
  2436.     init_selector().  Just calls add_objc_string() and casts the result.
  2437.  
  2438.     * objc-actions.c (build_selector_reference):  Modified to take an
  2439.     identifier node rather than an offset.  This effectively merges
  2440.     add_selector_reference() into build_selector_reference().
  2441.  
  2442. == New version cc-55 ==
  2443.  
  2444. Changes for latest assembler (3/1/92):
  2445.  
  2446.     * tm-next.h:  Changed .objc_selector_refs to .objc_message_refs.
  2447.     Eliminated .objc_selector_strs.
  2448.  
  2449. == New version cc-56 ==
  2450.  
  2451. Changes to use class references (3/3/92):
  2452.  
  2453.     * tm-next.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS,
  2454.      objc_section_init, SELECT_SECTION):  Added support for class refs
  2455.      section.
  2456.  
  2457. Changes to support new linker flags in driver (3/6/92):
  2458.  
  2459.     * tm-next.h (WORD_SWITCH, LINK_SPEC):  Added new -ObjC and -all_load
  2460.     switches.
  2461.  
  2462. == New version cc-57 ==
  2463.  
  2464. Fix for crasher with setjmp and inlines (3/10/92):
  2465.  
  2466.         * function.c (setjmp_protect): Don't put vars from inline functions
  2467.         on the stack.  (Bug #19834)
  2468.  
  2469. Detect duplicate protocol declarations (3/10/92):
  2470.  
  2471.     * objc-actions.c (start_protocol):  Check for duplicate declarations.
  2472.     (Bug #19854)
  2473.  
  2474. Fix for incorrect line number in warnings (3/10/92):
  2475.  
  2476.     * c-decl.c (pushdecl):  Print line number of previous implicit
  2477.     declaration correctly.  (Bug #19855)
  2478.  
  2479. Fix for canon crasher (3/11/92):
  2480.  
  2481.     * jump.c (jump_optimize): Disable "if (...) {... x = C;} if (x) ..."
  2482.     optimization; there doesn't seem to be a way to fix it.  (Bug #18909)
  2483.  
  2484. Fix for incorrect type descriptors for return values (3/16/92):
  2485.  
  2486.     * objc-actions.c (encode_method_prototype):  Encode base type as well
  2487.     as type qualifiers.  (Bug #20058)
  2488.  
  2489. Fix for problems with alloca() inside function arguments (3/16/92):
  2490.  
  2491.     * calls.c (calls_alloca):  New function.
  2492.  
  2493.     * calls.c (expand_call):  Preexpand any argument that contains a call
  2494.     to alloca() if this call will use the stack.  (Bug #19987)
  2495.  
  2496. Changes to default profiling library (3/16/92):
  2497.  
  2498.     * tm-next.h (LIB_SPEC):  Always use -lsys_s.  (Bug #18835)
  2499.  
  2500. == New version cc-58 ==
  2501.  
  2502. Fix for crasher with @defs (3/23/91):
  2503.  
  2504.     * objc-parse.y (component_decl_list2):  When the class interface has
  2505.     not been seen, return NULL_TREE rather than error_mark_node.  The rest
  2506.     of the front end cannot handle error_mark_node here.  It doesn't always
  2507.     crash, but something appears to end up in the wrong obstack.
  2508.     (Bug #20435)
  2509.  
  2510. Fix for further problems with const warnings (4/8/92):
  2511.  
  2512.     * c-typeck.c (build_indirect_ref):  Set TREE_READONLY of result
  2513.     when pointer is const qualified.  (Bug #21166)
  2514.  
  2515. Fix for zero-extension code gen bug (4/28/92):
  2516.  
  2517.     * optabs.c (add_equal_note):  New function.  Only add equal notes
  2518.     to sequences when they are completely accurate.
  2519.  
  2520.     * optabs.c (emit_unop_insn):  Use add_equal_note().  (Bug #22583)
  2521.  
  2522. == New version cc-59 ==
  2523.  
  2524. Fix for incomplete warnings about protocol conformance (5/11/92):
  2525.  
  2526.     * objc-actions.c (check_protocols):  New routine to recursively
  2527.     check for protocol conformance.  (Bug #23285)
  2528.  
  2529.     * objc-actions.c (finish_class):  Use new routine (2 places).
  2530.  
  2531. Fix for incorrect prototype lookup with class methods (5/19/92):
  2532.  
  2533.     * objc-actions.c (receiver_is_class_object):  Rewrote to check for
  2534.     class references rather than calls to objc_getClass().
  2535.  
  2536.     * objc-actions.c (build_message_expr):  Change call slightly for
  2537.     new function.  (Bug #24120)
  2538.  
  2539. Fix for bug introduced by previous changes for const warnings (5/20/92):
  2540.  
  2541.     * expr.c (expand_expr): For INDIRECT_REF, don't set unchanging bit.
  2542.     (Bug #24300)
  2543.  
  2544. Fix for overflow simplification bug in TeX (5/27/92):
  2545.  
  2546.         * combine.c (simplify_comparison, case PLUS): Only do simplification
  2547.         for equality comparison due to overflow problems.  (Bug #24561)
  2548.  
  2549. == New version cc-60 ==
  2550.  
  2551. Fix for crasher with d = i = j = 0; (6/10/92):
  2552.  
  2553.         * expr.c (expand_expr, FLOAT_EXPR case): Don't pass a VOIDmode.
  2554.  
  2555. Fix for nasty reload crasher (6/10/92):
  2556.  
  2557.     * reload.c (find_reloads): Compute preferred_class after
  2558.     calling find_reloads_toplev or equivalent.
  2559.