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 >
Wrap
Text File
|
1992-08-05
|
88KB
|
2,559 lines
Initial port to 68k (1/11/91):
* config.gcc: Entry for NeXT must set out_file to out-next.c. RMS
* config/out-next.c: Typo: "flags" -> "flags.h" RMS
* config/tm-next.h (LIB_SPEC): Brought up-to-date. There are
probably more changes needed here. RMS
Changes to cpp for #import on NeXT (1/15/91):
* cccp.c (main): Allow #import directive in c, c++, and Objective-C
on NeXT, since NeXT header files use #import. #ifdef'ed NeXT.
We should change to using "#pragma once" before 3.0.
Fix for crasher when compiling _fixdfdi in gnulib2.c (1/15/91):
* flow.c (libcall_dead_p): Stallman's change of Jan 7 was not
finished. Now using version of libcall_dead_p from Jan 15,
except undeclared variable "insn" changed to "x" two places.
Fix for #import bug (1/15/91):
* cccp.c (lookup_import): Return -2 if found, not -1. RMS
Fix to Makefile (1/15/91):
* Makefile.in (SYSCALLS.c.X): Depend on gcc, not ./gcc. This screws
up VPATH (at least on the NeXT).
* proto-unproto.1: Doesn't exist. Created empty file so make works.
Fix for crasher when compiling init_lex in cplus-lex.c (1/16/91):
* cse.c (fold_rtx): When folding switch statements with constant
arguments, check that the offset is within the table. This may
not be the case when the constant argument selects the default case.
Do not fold in this case, since this will always be in dead code
which will be deleted when jump is rerun. RMS
NeXT changes for debugging (1/16/91):
* toplev.c (compile_file): Call new function dbxout_finish. RMS
* dbxout.c (dbxout_finish): New function. If defined, expand
ASM_OUTPUT_MAIN_SOURCE_FILE_END. RMS
* config/tm-next.h (ASM_OUTPUT_MAIN_SOURCE_FILE_END): Output
an N_SO symbol with no name to mark the end of the module. This
is needed to support scattered loading on the NeXT. RMS
Fix for incorrect code when optimizing (1/16/91):
* cse.c (subst): Use Stallman's code for the ZERO_EXTEND case.
The existing code called simplify_and_const_int with the wrong mode.
This bug showed up in canon_hash in cse.c There are extensive
differences between Stallman's version of combine.c and mine....
@@@ Integrate recent NeXT changes (1/17/91):
Changes to driver to handle switches with multiple arguments:
* gcc.c (struct switchstr, process_command, give_switch): Added two
new fields for second and third arguments of switch. This ought to be
replaced with a more general mechanism for handling switches which
take multiple arguments.
Changes to improve stabs (1/29/90):
* config/tm-next.h: Define DBX_CONTIN_LENGTH to be 0 so as to avoid
stab continuation altogether. This saves a significant amount of
space in debug files, and eases the loader's job somewhat. RMS
Change to eliminate .gcc_compiled symbols (1/30/90):
* config/tm-next.h: Define ASM_IDENTIFY_GCC to be null to avoid
.gcc_compiled symbols. They interfere with numerically sorted symbol
lists. It is never a good idea to have two symbols with the same
value. On the NeXT, GDB always assumes the code was compiled with
GCC. We need a proper way to store version info and compiler option
info in object files. RMS
Change to remove -p profiling option (5/10/90):
* config/tm-next.h (LIB_SPEC, STARTFILE_SPEC): Warn that -p
is no longer supported, and that -pg should be used instead.
Lots of changes for new assembler sections! (7/16/90):
* config/tm-next.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS,
SELECT_SECTION, SELECT_RTX_SECTION) Output literal strings in
the cstring section, 4-byte and 8-byte literals in the literal4 and
literal8 sections, and other constants in the const section.
These will be uniqued by the loader as appropriate.
The flag flag_no_mach_text_sections suppresses the use of these
new sections, and uses the text section instead. Output Objective-C
symbols in the new Objective-C sections based on the decl's name.
(Ugh, there should be a better way to tag a decl with a section....)
Changes to move branch tables to the const section (7/17/90):
* config/tm-next.h (CASE_VECTOR_PC_RELATIVE, CASE_VECTOR_MODE):
Use absolute branch tables rather than relative ones.
* config/m68k.md (casesi, tablejump): Don't use casesi insn, since it
assumes relative branch tables are being used. Use new tablejump insn
instead. This idea was taken from i860.md. RMS
* config/tm-next.h (GO_IF_INDEXABLE_BASE): Don't use pc relative
addressing for LABEL_REF's. Since branch tables are in the const
section, we treat LABEL_REF's like SYMBOL_REF's here. Otherwise
invalid addresses were being generated.
Change to help keep stack aligned (7/17/90):
* config/tm-next.h (STACK_BOUNDARY): Changed to 32 from 16. This
doesn't appear to affect the calling convention, since all args are
rounded to 32-bits already. It does affect the alignment enforced by
alloca, however. With this change, all stack frames should be 32-bit
aligned at all times (although their contents may not be). RMS
Changes to fix crashes for #pragmas longer than 80 characters (1/9/91):
* config/out-next.c (handle_pragma): Call to xrealloc had wrong args.
@@@ End of integration of recent NeXT changes.
Fixes to make Objective-C work (1/18/91):
* objc-actions.c (start_class): Since the CLASS_CLS_METHODS field is
overloaded with the TYPE_MAIN_VARIANT field, we must explicitly
initialize it to NULL_TREE. This bug was directly related to Stallman
overloading class nodes with type nodes.
New debugging routine (1/19/91):
* tree.c (debug_obstack): New function. Prints which obstack the
object is in, if any. This is very useful for debugging obstack
problems. This routine could be used when printing trees to avoid
crashing when printing freed nodes. RMS
Added new arg to calls to start_function and finish_function (1/19/91):
* objc-actions.c (really_start_method): Added new arg to
start_function() two places.
* objc-actions.c (finish_method_def): Added new arg to
finish_function().
Changes to avoid crashing while printing trees (1/19/91):
* print-tree.c (print_node): Always print ERROR_MARK nodes in
brief format, since they often contain bogus type and chain fields.
RMS
Wow! I can run a small test program now....
Changes to cpp for // on NeXT (1/19/91):
* cccp.c (main): Allow // syle comments in c, c++, and Objective-C
on NeXT.
Change error message so as not to mention NeXT (1/21/91):
* objc-actions.c (objc_check_decl): Changed "NeXT" to "GNU".
Changes to ".m" spec (1/21/91):
* gcc.c (compilers): In ".m" spec, pass -D__OBJC__ to cpp.
Also pass -lang-objc and -gen-decls to cc1obj.
Changes to give error for referencing super in Object (1/21/91):
* objc-actions.c (build_message_expr): Disallow messages to
super in Object.
@@@ Integrate more recent NeXT changes for Objective-C (1/21/91):
Bug fixes for categories (1/23/89):
* objc-actions.c (add_category, lookup_instance_method_static,
lookup_class_method_static, start_class, finish_class, check_methods),
tree.h (struct objc_tree_class_type), tree.c (make_node, copy_node):
Added separate category interface and implementation nodes. This
permits checking for completeness of category implementations, and
fixes several bugs. The names should be changed before this is done.
Add -Wselector warning (1/23/89):
* objc-actions.c (finish_objc, lang_decode_option): Added switch
-Wselector to warn about all potential selector conflicts in the
interfaces seen. Simply runs through the selector hash table.
Elimination of untagged struct instance variable weirdness (1/23/89):
* objc-actions.c (check_ivars): #ifdef'ed out code to allow untagged
struct instance variable in interface to match an untagged struct
instance variable in implementation. ANSI C considers all untagged
structs separate types, so this should simply fail.
* objc-actions.c (gen_declspecs): Improved error messages for type
clashes involving untagged structs (and unions and enums). Now prints
"untagged struct" rather than "struct ".
More bug fixes for categories with the same name (1/29/90):
* objc-actions.c (synth_id_with_class_suffix, really_start_method):
Changed category names to be ...Foo_Bar... instead of ...Bar..., so
that you can have several categories with the same name in one source
file.
Fix to statically type messages to Class objects (1/31/90):
* objc-actions.c (receiver_is_class_object): New function to
determine whether the receiver object is a Class object.
* objc-actions.c (build_message_expr): Use new function to test for
Class objects, and then statically type messages to them. This allows
class methods of the same name to return different types, and it
catches the case where an instance method is sent to a Class object.
Changes to fix referencing super in category of Object (2/9/90):
* objc-actions.c (get_super_receiver): Give error if super_name is
null.
Change to permit unnamed bit-field instance variables (2/22/90):
* objc-actions.c (build_ivar_list_initializer): Set ivar_name field
to NULL for unnamed bit-field ivar's.
Code generation to make `forwarding' work (3/7/90):
* tree.h: add `encode_type' field to method_decl node.
add encode_method_def() and call if from finish_method_def().
remove encode_method_decl() and don't call it from
build_dispatch_table_initializer().
Fix bug in dependency info for .m files (3/13/90):
* cccp.c (main): Check for .m suffix as well as .c and .cc.
Lookup class methods in local implementation (3/21/90):
* objc-actions.c (build_message_expr): Check current implementation
before looking up in interfaces seen so far.
Fix for spin loop for "@interface Foo : Foo" (4/12/90):
* objc-actions.c (build_ivar_chain): Check that interface of super is
not equal to interface of self. No higher order loops are possible.
Changes to improve Objective-C symbol names (4/16/90):
* objc-actions.c (really_start_method): Create symbol with standard
syntax for methods: +[ClassName(CategoryName) method:name:].
* config/tm-next.h: Redefine ASM_OUTPUT_LABELREF to put quotes around
method symbols. Don't use an underscore.
Lots of changes for new assembler sections! (7/16/90):
* objc-actions.c (generate_dispatch_tables): Use new internal names
for category class and instance methods:
__OBJC_CATEGORY_CLASS_METHODS_{ClassName}_{CategoryName} and
__OBJC_CATEGORY_INSTANCE_METHODS_{ClassName}_{CategoryName}.
This fixes an old bug where there was a class Foo_Bar and a category
Bar of Foo in the same source file. It also permits SELECT_SECTION
to distinguish between the two unambiguously.
Changes to fix new Objective-C sections (7/20/90):
* objc-actions.c (finish_objc): Don't output ".data" or ".align 2".
Do switch to all Objective-C sections in order, so that the assembler
will output all of them in the correct order.
Changes to unique selector references (8/8/90):
* objc-actions.c (_OBJC_SELECTOR_REFERENCES_decl,
_OBJC_SELECTOR_REFERENCES_id): Removed.
* objc-actions.c (synth_module_prologue): Eliminated code to forward
declare the selector references array.
* objc-actions.c (init_objc_symtab): Eliminated code to initialize
"refs" field in objc_symtab structure (which is now vestigial).
* objc-actions.c (build_selector_translation_table): Rewrote.
* objc-actions.c (build_selector_reference): New routine.
* objc-actions.c (build_message_expr, build_selector_expr): Use new
routine.
* c-decl.c (pushdecl_top_level): New function (copied from g++).
Fix for problem with static access to ivars in categories (9/10/90):
* objc-actions.c (is_public): Check that category's my_name
matches implementation, not super_name.
Fix for Objective-C method parameter type problems (9/21/90):
* objc-actions.c (get_arg_type_list): Use new function
groktypename_inParmContext.
* c-decl.c (groktypename_in_parm_context): New function.
Changes to add global symbols to pull categories into an archive (1/9/91):
* objc-actions.c (finish_objc): Output global symbols named
.objc_category_name_Foo_Bar, similar to existing symbols for
classes named .objc_class_name_Foo. These will be used when
building archives to ensure that categories are linked in.
@@@ End of integration of more recent NeXT changes for Objective-C.
Changed Objective-C version number in module descriptor (1/22/91):
* objc-actions.c (OBJC_VERSION): Changed to 2. This appears to be
required to get the changes to unique selector references to work.
Changed use of TYPE_SIZE to match Stallman's new usage (1/22/91):
* objc-actions.c (init_module_descriptor, generate_shared_structures):
TYPE_SIZE now measures bits rather than bytes.
* objc-actions.c (build_ivar_list_initializer): Divide by
BITS_PER_UNIT to account for the change from DECL_OFFSET to
DECL_FIELD_BITPOS.
Moved lang_finish up a bit (1/22/91):
* toplev.c (compile_file): Moved lang_finish right after yyparse
returns, since it may also generate code. Warnings were being issued
for variables being defined but not used, even though they were being
used in lang_finish....
Changes to avoid "defined but not used" warnings (1/22/91):
* objc-actions.c (build_module_descriptor): Mark _OBJC_MODULES_decl
as used. This is the magic cookie symbol which the runtime will
look for in a conventional a.out system.
Changes to make encode_method_def work in 2.0 (1/22/91):
* objc-actions.c (encode_method_def): Chnaged to follow changes
in dbxout.c. Use DECL_INCOMING_RTL rather than DECL_OFFSET field.
Also #include rtl.h and no longer declare emit_note. This still
needs major work. There is a hack to add 8 for the 68k....
Change to avoid warnings with __builtin_alloca (1/22/91):
* c-decl.c (init_decl_processing): Declare alloca() and
__builtin_alloca() to take a size_t rather than an int,
since <stdlib.h> declares it to take a size_t on the NeXT. RMS
Deleted all NeXT_SELS_R_CHAR_PTRS #ifdef's (1/23/91):
* objc-actions.c: It didn't work any more.
Deleted all NeXT_SELS_R_INDIRECT #ifdef's (1/23/91):
* objc-actions.c: It never worked.
Changes to support NeXT_SELS_R_STRUCT_PTRS (1/23/91):
* objc-actions.c (objc_selector_template): New variable.
* objc-actions.c (build_objc_selector_template): New function.
Cleanup to selector code generation options (1/23/91):
* objc-actions.c (build_selector_translation_table): Added suport
for both selector strategies.
* objc-actions.c: Renamed NeXT_SELS_R_... to OBJC_SELS_R_...
* objc-actions.c: Renamed NeXT_ENCODE_... to OBJC_ENCODE_...
* objc-actions.c: Added new option OBJC_UNIQUE_SELS.
Changes for size_t in builtin function prototypes (1/23/91):
* c-decl.c (init_decl_processing): sizetype should always be
long_unsigned_type_node on the NeXT, since this is how <stddef.h>
defines it. ?? RMS ?? It is now unsigned long or long, depending
on the setting of -traditional (__STDC__). I'll try this.
More obstack problems (1/23/91):
* objc-actions.c (comp_method_with_proto, comp_proto_with_proto):
Stallman's change to usethe functions end_temporary_allocation and
resume_temporary_allocation is incorrect, since it always leaves
allocation temporary, whether it was before or not.
Problems with error messages (1/23/91):
* objc-actions.c (build_method_decl): make_node automatically sets
DECL_SOURCE_FILE and DECL_SOURCE_LINE for decls nodes.
* objc-actions.c (warn_with_method, error_with_method): Print the
file and line number using DECL_SOURCE_FILE and DECL_SOURCE_LINE.
Improved error message for -Wselector (1/23/91):
* objc-actions.c (finish_objc): Changed warn_selector message.
This could still be improved, since it prints entries from both
the interface and the implementation of classes.
Better warning for sending to super with no super class (1/23/91):
* objc-actions.c (build_message_expr): Return error_mark_node in
addition to issuing warning. This avoids generating a call to
objc_msgSendSuper with bogus args.
Reintegrated Objective-C changes into c-parse.y (1/24/91):
* objc-parse.y: Since objc-parse.y was so out of date with respect
to c-parse.y, I started over with c-parse.y and reintegrated the
Objective-C modifications. Now that Objective-C is working I hope
that objc-parse.y will be kept more up to date.... I did not
re-integrate the lexer since I don't have gperf working. I simply
cut and pasted what Stallman had in objc-parse.y.
Put in temporary change for type checking (1/24/91):
* c-typeck.c (comptypes): Be more leniant about pointer types.
This is not the right final fix. I need to think about this....
Print "In method" rather than "In function"... (1/25/91):
* toplev.c (report_error_function): Check for language specific
ways of reporting errors.
* objc-actions.c (lang_report_error_function): Check for Objective-C
context. Print selector name in quotes rather than followed
by a colon since selectors usually end in a colon.
* c-lang.c (lang_report_error_function): New dummy function.
Always returns zero, since toplev.c handles c functions by default.
* cplus-decl2.c (lang_report_error_function): New function.
Print "In method" rather than "In function" for methods.
Improve fatal error message (1/25/91):
* gcc.c (execute): Clarified fatal error message. Some of our
customers did not understand that an internal compiler error had
occurred. RMS
Declare wchar_t to be unsigned short (1/25/91):
* config/tm-next.h (WCHAR_TYPE_SIZE): Define to be BITS_PER_WORD / 2.
This stuff needs lots of testing!
Minor changes to SECTION_FUNCTION (1/29/91):
* config/tm-next.h (SECTION_FUNCTION): It is now assumed that
DIRECTIVE does NOT contain a newline. This matches tm-nrw.h.
@@@ Integrate recent NeXT changes (1/29/91):
* gcc.c (default_compilers[]): Define __ASSEMBLER__ when
preprocessing ".S" files. RMS
* obstack.c (_obstack_begin): Allow default obstack chunk size
to be configured. This needs to #include "config.h" or this
must be passed from the Makefile.... RMS
* config/tm-next.h, config/tm-nrw.h (OBSTACK_DEFAULT_CHUNK_SIZE):
Define new macro to use pagesize, since malloc and free will use
vm_allocate and vm_deallocate directly for these requests.
(Now in xm-next.h and called OBSTACK_CHUNK_SIZE.)
Elimination of commons (1/23/89):
* flags.h (flag_no_common): Declare new flag. RMS
* toplev.c (flag_no_common, f_options[]): Define new flag (initially
off). Add to machine independent options. This creates two new
flags, -fcommon, and -fno-common. RMS
* varasm.c (assemble_variable): Don't output a common if
flag_no_common is set, or if pedantic. Output a bss symbol
instead (as if it had been initialized to zero). RMS
Changes to remove instructions not implemented on the 68040 (7/16/90):
* config/tm-m68k.h (TARGET_68040, TARGET_040_IEEE_FP): Two new
targets. TARGET_68040 means generate code which will run on
either an '030 or an '040, but avoiding instructions which are
emulated on the '040. TARGET_040_IEEE_FP means to use the new
'040 fp instructions. This code will NOT run on an '030.
* config/tm-m68k.h (TARGET_SWITCHES): Add new switches
-m68040, -m68030, -m68040-fp.
* config/out-m68k.h (standard_68881_constant_p): Always return 0
for TARGET_68040 since fmovecr is no longer implemented in hardware.
* config/m68k.md (ftruncdf2, ftruncsf2): Don't emit fintrz for
TARGET_68040, since it is no longer implemented in hardware.
* config/tm-next.h (TARGET_DEFAULT): Changed to 0207 for 68040.
* config/m68k.md (muldf3): Don't use fscale on 68040.
* config/m68k.md (iorsi3): Don't use bset, since it is slower than
ori. To really solve problems like this we should have some kind of
space vs. speed flag. In a similar vein, on the '040 using moveq
followed by a register op is slower than using a 32-bit immediate op,
but this takes up 48 bits rather than 32.... On the NeXT we are
more concerned about space than speed, but others may disagree.
Changes to add '040 IEEE fp instructions:
* config/m68k.md (movsf, movdf, extendsfdf2, truncdfsf2, floatsisf2,
floatsidf2, floathisf2, floatqidf2): Use new fsmove and fdmove
instructions for all register-to-register and memory-to-register
moves. The existing register-to-memory moves round correctly
already.
* config/m68k.md (adddf3, addsf3, subdf3, subsf3, muldf3, mulsf3,
divdf3, divsf3, negsf2, negdf2, abdssf2, absdf2): Use new
fsxxx and fdxxx arithmetic instructions.
@@@ End of integration.
Miscellaneous comment fix (1/29/91):
* config/m68k.md: The comment should read that the constraint letter
'K' permits all integers EXCEPT those in the range -128 .. 127!
Temporary changes for testing (1/31/91):
* optabs.c (expand_fix): Prefix all gnulib functions with "_"
instead of "__", since these are the names in our shlib.
We should fix the shlib in the long run.
* gcc.c (process_command): Put in very ugly hack to let -bsd pass
through (two places).
* gcc.c (link_command_spec): Don't use gnulib.
Bug fixes for testing. (1/31/91):
* config/out-next.x (handle_pragma): Added #pragma
CC_NO_MACH_TEXT_SECTIONS, which had been dropped. We don't warn if
we see #pragma's which we don't understand. Perhaps we should. RMS
* gcc.c (compilers): Define __GNU__ for all file types. Preprocess
.s files just like .S files.
Changes to how new '040 opcodes are added (1/31/91):
* config/tm-m68k.c (PRINT_OPERAND_PUNCT_VALID_P, PRINT_OPERAND):
Use new %$ and %& specs to insert an 's' or 'd' into fp opcodes
if TARGET_040_IEEE_FP is defined. RMS
Bugs found during testing (2/1/91):
* config/out-next.c (handle_pragma): Call ungetc when '\n' is
seen since HANDLE_PRAGMA is followed by skipline. Line numbers
get screwed up too. RMS
Tried new version of combine.c (2/1/91):
* combine.c: New version from rms.
Warn about options which aren't supported (2/2/91):
* toplev.c (f_options, main): Added new field to options struct to
indicate whether a given option is supported on the current
architecture. If not, then a warning is issued if either the
flag or its negation is specified, and this would cause the flag
to be set to other than its default state. This could be cleaner if
DELAY_SLOTS and INSN_SCHEDULING were #define'd to be 1 rather just
#define'd. It should also be possible to validate -fno-defer-pop
and -fpeephole based on info in the config files.
RMS did this differently.
Allow multiple return points in some framless functions (2/2/91):
* config/out-m68k.c (output_function_prologue,
output_function_epilogue): New functions to avoid giant
macros which are hard to edit. RMS
* config/tm-m68k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE):
Call new functions. RMS
* config/m68k.md (return): New insn pattern for rts and a new
peephole for rtd. RMS
* config/tm-m68k.h (RTL_EPILOGUE): New macro. RMS
* config/out-m68k.c (rtl_epilogue): New function. Determines
whether the epilogue will consist of a single insn. Some code
was duplicated from output_function_epilogue. There should be
a new layout routine to do this common work. #include "flags.h".
RMS
*config/out-m68k.c (output_function_epilogue): Don't output
anything if the epilogue was output as RTL. We detect this by
the barrier insn which is always placed after a return insn. RMS
* config/out-next.c: Don't #include "flags.h", since
out-m68k.c already does now. RMS
Deleted change relating to bset (2/4/91):
* config/m68k.md (iorsi3): I'll put this back when I do more
general space vs. speed optimizations.
Integrated changes from rms (2/4/91):
* objc-parse.y, objc-actions.c: From rms.
* objc-actions.h:
* flags.h: Still contains flag_no_mach_text_sections.
* tree.h:
* c-decl.c: Still problem with size_t.
* c-lang.c: Still lang_report_error_function
* c-typeck.c: Still problem with const char **.
* cccp.c: Still #import, \\, etc.
* cplus-decl2.c: Still lang_report_error_function
* cse.c:
* dbxout.c:
* print-tree.c:
* tree.c:
* varasm.c:
* toplev.c: Still flag_no_mach_text_sections. Also,
dbxout_finish has wrong args.
* gcc.c: Still link_command_spec, ".s" files, -bsd, -D__GNU__.
* function.h:
Integrated new c-parse.y from rms (2/5/91):
* objc-parse.y: Copied changes which were recently made to c-parse.y
Integrated new objc-actions.c from rms (2/5/91):
* objc-actions.c (lang_finish): New function does nothing.
Changes to get correct warnings for messages (2/5/91):
* c-typeck.c (warn_for_assignment): Print selector name rather
than objc_msgSend for methods, and adjust parm number by 2. RMS
Remove -fno-mach-text-sections (2/5/91):
* flags.h, toplev.c, out-next.c: Leave #pragma only.
Fix for instantiate_virtual_regs problem (2/6/91):
* recog.c (apply_change_group): When considering insn's which
have extra clobber's at the end, also consider insn's which contain
only a clobber (these are generated for initializers of structs
local to a block). RMS
Changes for new assembler (2/6/91):
* config/tm-nrw.h (FLOAT_ASM_OP, INT_ASM_OP): Use ".single" and
".int" rather than ".float" and ".word".
Changes for bogus "shift count is negative" warnings (2/6/91):
* c-typeck.c (build_binary_op_nodefault): Check for shift < 0
rather than <= 0. RMS
More changes for NRW (2/6/91):
* config/out-nrw.c: New file.
* config.gcc (nrw): Use xm-next.h and out-nrw.c
Changes for new pic strategy (2/10/91):
* expr.h, function.c (current_function_pic_base): New global
to record addressing base pseudo-reg.
* function.c (expand_function_start): Generate pic prologue
by allocating a pseudo-reg for current_function_pic_base and
expanding the "picbase" pattern to initialize it. Mark these
insn's as part of the parm insn's so that they won't be copied
for inlining. (The name should probably be changed to reflect
the new meaning of last_parm_insn.)
* gcc.texinfo (picbase): Wrote description of new named pattern.
* rtl.def (INLINE_HEADER): Added a new field to record pic_base
for procedure integration.
* rtl.h (PIC_BASE): New macro to access pic_base field.
* integrate.c (initialize_for_inline): Also record
current_function_pic_base in inline_header_rtx.
* emit-rtl.c (gen_inline_header_rtx): New arg.
* integrate.c (expand_inline_function): Map inlined function's
pic_base reg to current_function_pic_base. (In practice these
are always the same since they are the first pseudo's allocated
in each function.)
* function.h (struct function): Added pic_base field.
* function.c (push_function_context, pop_function_context):
Save and restore current_function_pic_base in pic_base field.
(I am assuming that this is all that is required to support
nested functions.)
* rtl.def (GOT_REF, GOT_REL_REF, ABSDIFF_REF): New rtl codes
to represent pic addresses. They should behave just like
symbol_ref's and label_ref's in most parts of the compiler.
It may take some time to track all cases of this down....
* rtl.h (CONSTANT_P): These new rtl codes are all constant.
This should catch a large number of the interesting cases.
* gcc.texinfo (got_ref, got_rel_ref, absdiff_ref): Wrote description
of new rtl constructs.
Clear out the old kruft....
* emit-rtl.c, rtl.h (pic_offset_table_rtx): Removed. This has been
effectively replaced by current_function_pic_base. (Note that
pic_offset_table_rtx was a hard reg, but current_function_pic_base
is a pseudo.)
* emit-rtl.c (init_emit_once): Don't initialize pic_offset_table_rtx.
* toplev.c (rest_of_compilation): Don't use FINALIZE_PIC any more.
This was just a hack, and we have a better solution now.
Prototype for sparc....
* sparc.md (picbase): New pattern to generate pic prologue.
We need a label which is guarnteed to immediately precede
the call insn we are generating, so we generate the label
but don't insert it into the insn list. The pattern which
matches the call insn verifies that the label is not in the
insn list and then inserts it just before emitting itself.
(Perhaps we could add new rtl constructs, this_insn_label_ref
and next_insn_label_ref, which refer to labels which will be
emitted just before and after the current insn during final.)
* jump.c (mark_jump_label): Don't crash when processing labels
which aren't in the insn chain.
* out-sparc.c (finalize_pic): #ifdef'ed out.
* out-sparc.c (legitimize_pic_address): Generate GOT_REL_REF's
relative to current_function_pic_base. No longer use
pic_offset_table_rtx.
* out-sparc.c (check_pic): Turned off for now, since it was
incorrectly barfing on one of the insn's generated by picbase.
* sparc.md: Modified define_split to avoid infinite recursion.
* tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Recognize GOT_REL_REF
indexes as valid. Because of the new rtl, this no longer needs
to refer to current_function_pic_base.
* tm-sparc.h (PRINT_OPERAND_ADDRESS): Print GOT_REL_REF exactly
like SYMBOL_REF on sparc. Sun's assembler is weird. On most
machines some annotation would be needed. Print ABSDIFF_REF
as "__GLOBAL_OFFSET_TABLE_-(L1-.)", and delete special case
hack which tried to parenthesize this expression right when
it was represented explictly in rtl.
* tm-sparc.h (PRINT_OPERAND): Use print_operand rather than
print_addr_const for recursion, since print_addr_const can't
handle GOT_REL_REF or ABSDIFF_REF (or HI fo that matter).
* out-sparc.c (legitimize_pic_address): Wrong number of args in
recursive call. The mode arg is never used....
FIx for problems with extra spaces in CPP_PREDEFINES (2/12/91):
* cccp.c (main): Allow extra whitespace in CPP_PREDEFINES. RMS
* gcc.c (do_spec_1): Allow extra whitespace in CPP_PREDEFINES.
Also transform -Dfoo=bar into -D__foo__=bar correctly. RMS
Fix for local allocation bug with scheduling (2/13/91):
* combine.c (try_combine): Update reg_first_use when an insn
is deleted. Otherwise the scheduler will delete the insn and
local alloc will become confused and crash. Also delete links
which will point to deleted insn, since they are useless. I
don't know of a case where this causes a problem, but they are
cheap to remove here, and they take up time to process
in sched.c otherwise. RMS
Fix for reload crash with CCmode (2/13/91):
* optabs.c (gen_move_insn): Use SImode for reloading of CC mode
registers. Fix from Kenner. RMS
Improvements to scheduling dump info (2/14/91):
* sched.c (schedule_block): Print insn_ref_count in addition to
insn_priority.
Fix for scheduling bug with LOG_LINKS for CCmode registers (2/14/91):
There is a serious problem here. The scheduler was ignoring
LOG_LINKS in JUMP_INSN's when computing ref counts, but was
decrementing the ref count when a JUMP_INSN was issued. The
result was that insn's were being made ready prematurely. The fix
s to call priority for JUMP_INSN in all cases. Here are two:
* sched.c (schedule_block): Call priority for JUMP_INSN too
when checking whether the last insn is a conditional branch
whose outcome may vary.
* sched.c (priority): Check LOG_LINKS for JUMP_INSN's too.
There may be other cases of this....
Fix for more scheduling bugs (2/15/91):
* sched.c (reassign_dependence): #ifdef'ed back in code to
recompute dependencies for deleted insn's. This can happen
when reload1 deletes an insn in delete_dead_insn in reload1.c.
New warning to help find alignment bugs (1/15/91):
* c-typeck.c (build_c_cast): Warn if required alignment of target
type is increased by cast. RMS
* c-tree.h (warn_cast_align): Declare new flag. RMS
* c-decl.c (warn_cast_align, c_decode_option): Initialize new
flag based on -Wcast-align and -Wnocast-align switches. RMS
* gcc.texinfo (-Wcast-align): Document new switch. RMS
Fix importing bug with absolute paths (2/15/91):
* cccp.c (do_include): Check for return value of -2 from
lookup_import, not -1. RMS
Fix for scheduling crasher (2/17/91):
* sched.c (order_calls): Don't walk off the end of the function.
Changes to get i860 version to compile (2/17/91):
* tm-i860.h (INITIAL_FRAME_POINTER_OFFSET): Define to store 0.
* tm-i860.h (INITIALIZE_TRAMPOLINE): Use build_int_2 rather than
build_int. RMS
* i860.md (cbranch, inverse_cbranch): Use (eq (cc0) (const_int 0))
rather than just (cc0), since the latter is not valid as a
comparison expression in an if_then_else, and this will cause
a crash in reverse_condition in jump.c during cse. After doing
this I also had to add redundant reversed patterns using
(ne (cc0) (const_int 0)) and with the pc and label switched.
This seems like fertile ground for insn canonicalization. RMS
Fix to cpp error message (2/18/91):
* cccp.c (make_definition): Print "-Dfoo" rather than "-D foo".
@declined by RMS
Changes to compile on aviion (2/20/91):
* final.c: #incldue "gvarargs.h" rather than <varargs.h> RMS
Fix for 68k reload crasher (2/26/91):
* reload.c (find_reloads_address_1): Correctly handle
(post_inc (mem)). (From Kenner) RMS
Fix for reload crasher (3/7/91):
* rtlanal.c (reg_overlap_mentioned_p): Return zero for any
expression which isn't a reg, subreg or mem. RMS
Changed Objective-C warnings to fatal errors (3/11/91):
* objc-actions.c (build_message_expr, build_selector_expr,
build_encode_expr, get_class_ivars, start_class): Finding
Objective-C code in c source files is now a fatal error.
(They should recompile with -lang-objc.) RMS
Fix for Objective-C crasher for syntax error (3/11/91):
* objc-actions.c (gen_method_decl): Don't crash for syntax error
in method declaration: -bar: x, y RMS
Fix for Objective-C crasher for @encode of undimensioned array (3/11/91):
* objc-actions.c (encode_array): Treat an undimensioned array
the same as a pointer. RMS
Fix for c++ crasher with unknown language string (3/12/91):
* cplus-class.c (push_lang_context): Make an unknown language
string a fatal error, since continuing will likely cause a crash.
@ I think this is a bogus fix!
Fix for problems with -Wformat (3/13/91):
* c-typeck.c (check_format): Allow multiple NOP_EXPR's around
format string. RMS
* c-typeck.c (function_info_table): Expand new macro
EXTRA_FORMAT_FUNCTIONS in initializer, if present.
Add support for c++ constructor and destructor sections (3/19/91):
* tm-next.h (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR):
New macros. Place reference to constructor or destructor into
constructor or destructor section. RMS
* tm-next.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Add
new constructor and destructor sections. RMS
Fix for problems with Class type in Objective-C (3/21/91):
* objc-actions.c (objc_class_id, synth_module_prologue): Initialize
new variable to hold identifier for "objc_class". RMS
* objc-actions.c (objc_comptypes): Allow assigning between types
id and Class without warning. RMS
* c-typeck.c (warn_for_assignment): When there is a type mismatch
in the hidden arguments of a message expression, don't print the
argument number as 0 or -1. Instead print the warning as would
be done for an explicit call to objc_msgSend (this should never
happen, but just in case). RMS
Changes to use class references rather than objc_getClass (3/22/91):
* objc-actions.c (objc_getClass_id, objc_getMetaClass_id,
objc_getClass_decl, objc_getMetaClass_decl, synth_module_prologue):
Removed variables and their initialization.
* objc-actions.c (get_class_reference):
* objc-actions.c (get_super_receiver):
* objc-actions.c (receiver_is_class_object):
Changes to always use cc1obj (4/4/91):
* gcc.c (default_compilers): Use cc1obj instead of cc1.
cc1obj without the -lang-objc flag should be identical to cc1.
Fix for expr.c crasher from Kenner (4/8/91):
* expr.c (convert_to_mode): Call protect_from_queue. RMS
Added support for c++ on NeXT (4/8/91):
* __main.c: New file. Execute constructors and register
destructors using atexit. Soon this will be moved to crt0,
and __main() will be a nop.
Fix for recurring c++ problems (4/8/91):
* cplus-lex.c (note_got_semicolon): Test IS_AGGR_TYPE_CODE before
testing IS_AGGR_TYPE, since identifier nodes go through here!
* cplus-decl.c (grokdeclarator): Test IS_AGGR_TYPE_CODE before
testing IS_AGGR_TYPE, since identifier nodes go through here!
Changes for installation on a NeXT (4/9/91):
* gcc.c (default_compilers): Run cc1 for c and Objective-C files.
Run cc1++ for c++ and Objective-C++ files. UNDONE
* Makefile: Install cc1obj as cc1, cc1plus as cc1++.
Changes for Objective-C++ (4/9/91):
* objcplus-parse.y: New file (copied from cplus-parse.y).
(reservedwords): There are still problems here.
* objcplus-actions.c: New file (copied from objc-actions.c).
Changed cplus_class to objc_class_type (3 places).
* objcplus-lex.c: New file.
(lang_init, lang_finish): Removed.
(do_identifier): Add Objective-C actions.
* objcplus.gperf: New file.
* Makefile.in: Added cc1objplus target.
Changes to simplify integration of Objective-C++ (4/9/91):
* objc-actions.c (class_type): Renamed to objc_class_type to avoid
conflict with name of c++ type (3 places).
* objc-lang.c, objcplus-lang.c (objc_xref_tag, objc_grokfield,
objc_finish_struct, objc_start_struct, objc_push_parm_decl,
objc_get_parm_info): New functions for C/C++ compatibility.
* objc-actions.c: Call new compatibility functions.
Preparation of C++ for integration of Objective-C++ (4/12/91):
* cplus-lang.c: New file for C++ entry points.
(lang_decode_option): Call cplus_decode_option.
(lang_init): Call cplus_init().
(lang_finish): Call cplus_finish().
(print_lang_statistics): Call print_cplus_statistics.
* Makefile.in (CPLUS_OBJS): Add cplus-lang.o.
* cplus-lex.c:
(lang_init): Renamed to cplus_init. Moved call to check_newline()
to lang_init() in cplus-lang.c.
(lang_finish): Renamed to cplus_finish.
* cplus-tree.c (print_lang_statistics): Renamed to
print_cplus_statistics.
* cplus-decl2.c (lang_decode_option): Renamed to
cplus_decode_option.
Add Objective-C++ support to C++ (4/21/91):
* cplus-lang.c: Add maybe_objc_... stubs (from c-lang.c).
* cplus-tree.h: Added declarations for maybe_objc_comptypes
and maybe_building_objc_message_expr (from c-tree.h).
* cplus-decl*.c (???): Call maybe_objc_check_decl. TODO
* cplus-typeck.c
(comptypes, convert_for_assignment): Call maybe_objc_comptypes.
(warn_for_assignment): Call maybe_building_objc_message_expr.
* cplus-decl.c (groktypename_in_parm_context): New function
(modified from c-decl.c).
Removed //-style comment (5/10/91):
* objc-actions.c (start_method_def): Removed //-style comment.
Added initial support for "aligned" attribute (5/17/91):
* c-parse.y, objc-parse.y (attrib): Always pass aligned attribute
through. Return $1 on failure rather than NULL_TREE for consistency.
* c-common.c (decl_attributes): Warn if requested alignment is not
a power of two. Also warn if decl is not a VAR_DECL or a FIELD_DECL,
since specifying alignment makes no sense for a TYPE_DECL, and is
not implemented for a FUNCTION_DECL.
* c-parse.y, objc-parse.y (initdcl, notype_initdcl): Call
decl_attributes before finish_decl in order for alignment attribute
to take effect.
* varasm.c (assemble_variable): Warn if DECL_ALIGN is greater than
MAX_OFILE_ALIGNMENT, if defined. This allows errors to be
detected with formats like a.out which support a maximum alignment
of 4.
* c-parse.y, objc-parse.y (component_declarator): Call decl_attributes
with correct args.
* stor-layout.c (layout_record, layout_union): Do not clamp struct
alignment at BIGGEST_ALIGNMENT, since individual fields may have
requested greater alignment than this. This check shouldn't have
done anything anyway.
NOT DONE YET:
* function.c (assign_stack_local, assign_outer_stack_local): Check
that alignment is not greater than STACK_BOUNDARY.
* function.c (put_var_into_stack): Call assign_stack_local or
assign_outer_stack_local with alignment derived from DECL_ALIGN.
Warn if that alignment is greater than STACK_BOUNDARY.
== New version cc-37 ==
Fixed crasher with struct bitfield initializers (5/24/91):
* varasm.c (output_constructor): Don't crash if val is zero for
bitfields. RMS
Give warning for extra -x switch after last input file (5/28/91):
* gcc.c (process_command). RMS
Finished support for "aligned" attribute (5/28/91):
* c-parse.y (unary_expr): When alignof is applied to an expression,
call c_alignof_expr so that we can check DECL_ALIGN instead of calling
c_alignof (TYPE_ALIGN (TREE_TYPE (expr))).
* c-typeck.c (c_alignof_expr): New function to compute alignof for
expr's. Returns DECL_ALIGN for VAR_DECL's and FIELD_DECL's. Also
return 1 after reporting error about applying alignof to bitfields.
* c-tree.h: Declare c_alignof_expr.
* varasm.c (assemble_variable): MAX_OFILE_ALIGNMENT defaults to
BIGGEST_ALIGNMENT if not defined in config.h.
* tm-next.h (MAX_OFILE_ALIGNMENT): Define to be 2^15 for Mach-O. RMS
* tm-next.h (ASM_OUTPUT_ALIGN): Use .align rather than .even,
and allow alignments greater than 2. RMS
* c-common.c (decl_attributes): Warn if requested alignment will
not fit in DECL_ALIGN field (which is a byte). We must change the
internal representation to be the log of the actual alignment.
We can easily make DECL_ALIGN return the actual alignment, but we
will need a new SET_DECL_ALIGN, since it will no longer be an lvalue.
gcc.texinfo (Alignment): Added documentation of "aligned" attribute.
Fix for problems with carriage-returns in source files (5/30/91):
* c-parse.y, objc-parse.y (skip_white_space, yylex): Allow '\r'
as whitespace unless -pedantic is used (since ANSI disallows it).
Add -Dm68k cpp predefine (5/30/91):
* tm-next.h (CPP_PREDEFINES): Added -Dm68k in addition to
-Dmc68000 since some code expects this, and it is less verbose. RMS
Old bug fix for c++ (5/31/91):
* dbxout.c (dbxout_parms): DECL_INCOMING_RTL is sometimes NULL
in c++ (it shouldn't be).
Removed NeXT size_t mod. See c-decl.c above (5/31/91)
Renamed objc-common.[hc] back to objc-actions.[hc] (5/31/91):
* Makefile.in, objc-parse.y, objc-actions.c, objc-lang.c,
objcplus-parse.y, objcplus-lex.c, objcplus-lang.c:
More changes for Objective-C++ (???):
* cplus-tree.h (enum languages): Added lang_objc.
* cplus-class.c, cplus-tree.h (lang_name_objc): New global.
* cplus-decl.c (init_decl_processing): Initialize lang_name_objc.
* cplus-class.c (push_lang_context, pop_lang_context): Call
install_reserved_words(). Handle lang_name_objc.
* cplus-lang.c (install_reserved_words): New dummy function.
Make c++ use new routines for constructors (6/4/91):
* cplus-decl2.c (finish_file): Use functions assemble_constructor()
and assemble_destructor() whcih are in varasm.c.
== Integrated snapshot 155 ==
Moved over ChangeLog-NeXT, install-NeXT, Makefile, __main.c.
Applied patches from NeXT-diffs, NeXT-OBJC-diffs, align-diffs, and
objcplus-diffs.
Renamed stddef.h to stddef.h-gnu since it interfered with building the stage1
compiler (<stddef.h> is #include'd by <stdio.h> on the NeXT).
Hack to make c++ compile (6/4/91):
* cplus-dbxout.c (N_CATCH): Randomly defined to 0!
Applied changes to optabs.c from kenner (6/5/91).
* optabs.c (expand_binop): Fix typos in multi-word addition; had
MODE for SUBMODE.
Changes to build fixsfsi, etc. into m68k.md (6/6/91):
* m68k.md: Change incorrect reference to -m68040-fp to -m68040-only.
Also fix several spelling errors which were annoying. RMS
* m68k.md (fix_trunc*f*i2): New insn's to replace fintrz on the
'040. These emit a sequence of insn's to change the rounding mode
to round-to-zero, perform the truncation, and restore the rounding
mode. These should be faster than either trapping into the kernel
with fintrz or calling fixsfsi() or fixdfsi() in gnulib. Removing
these names from the FPA pattern does not appear to affect the
generated code when using the FPA because of the combiner. RMS
Changes from Kenner (6/10/91):
* expr.c (expand_expr, case FLOAT_EXPR, FIX_EXPR): Don't try to
do any partial conversions here; expand_fix and expand_float now
handle all modes.
* optabs.c (fixtab, fixtrunctab, floattab): Table now contains
all modes.
(can_fix_p, can_float_p): Use mode as index in tables.
(init_fixtab, init_floattab): Likewise.
Add support for QImode and HImode operations.
(expand_float): Rework to remove dependendence on specific modes.
Can only use REAL_VALUE_LDEXP in certain configurations.
(expand_fix): Likewise.
If can't do operation unsigned, or signed into wider mode, emit a
sequence that compares operand with 2**(N-1) and, if larger,
subtracts 2**(N-1), converts, and adds it back.
Protect from queue and force not memory at start.
Corresponding changes to m68k.md (6/10/91):
* m68k.md (fixuns_trunc*fsi2): Deleted; now done in expand_fix in
optabs.c. RMS
* m68k.md (fix_truncsf*i2): Deleted; df version will suffice. RMS
FIx to kenner's change (6/10/91):
* optabs.c (expand_fix): Typo; GET_MODE (from) should be fmode
in call to can_fix_p(). RMS
Another fix from kenner (6/11/91):
* combine.c (expand_field_assignment) Fix for problem with
fixunssfhi not zeroing upper word of result.
Changes for specifying format checking (6/11/91):
* c-parse.y, objc-parse.y (attrib): Pass "format" attribute
through. Takes one identifier and two constants as args.
identifier must be either printf or scanf.
* c-common.c (decl_attributes): Process "format" attributes.
Call new routine record_format_info().
* c-typeck.c (struct function_info): Changed function_ident field;
store identifier node rather than char * to speed lookup.
Renamed arg_num field to format_num. Replaced is_varargs field
with new first_arg_num field.
* c-typeck.c (check_format): Modified to use new arg_num and
first_arg_num fields.
* c-typeck.c (record_format_info): New routine. Replaces static
table of functions to check.
* cplus-typeck.c (record_format_info): New stub routine so c++
will link. Someone should implement format checking for c++.
* c-typeck.c (init_format_info_table): New routine to add
entries for ANSI functions to table.
* c-decl.c (init_decl_processing): Call init_format_info_table().
* c-typeck.c (build_function_call): Modified to use dynamic table
rather than static one. Compare identifier nodes rather than
using strcmp().
* gcc.texinfo (): Document "format" attribute.
* c-typeck.c (check_format): Call warning() directly rather than
returning the warning string. This way we can give multiple warnings
by continuing. Several changes to make continuing safe.
* c-typeck.c (build_function_call): Incorporated changed return
value of check_format().
* c-typeck.c (check_format): Check for NULL format string.
TODO:
Check for passing NULL pointers.
Deal correctly with integral promotions.
Handle negative numbers ("aligned" attribute also).
Incorporate changes to c-parse.y into objc-parse.y (6/19/91):
* objc-parse.y: Incorporate change to initlist for labeled elements.
* objc-parse.y: Incorporate changes for MULTIBYTE_CHARS.
* objc-parse.y: Remove unnecessary whitespace differences.
* objc-parse.y-diffs: New file to help maintain consistency
between c-parse.y and objc-parse.y.
Changes to support constant string objects (6/19/91):
* objc-parse.y (yylex): Recognize that @ followed by " starts
a constant string object. Call build_string_object().
* objc-actions.c (build_string_object): New routine to build
constant string objects.
* objc-actions.c (build_objc_string_object_template): Initialize
new global objc_string_object_template. Take name from new macro
TAG_STRING.
* objc-actions.c (objc_init): Call build_objc_string_object_template,
and initialize new global objc_string_object_class_id.
* objc-tree.def (OBJC_STRING_CST): New node.
* objc-actions.h (build_objc_string_object, build_objc_string):
Declare new functions.
* varasm.c (const_hash, compare_constant_1, record_constant_1):
For ADDR_EXPR's, don't hash address of SYMBOL_REF. Only use
offset and name of symbol. This allows constructors which
contain pointers to identical string literals to be uniqued. RMS
Noticed problem with memory allocation (6/24/91):
* tree.c (gcc_obstack_init): Use OBSTACK_CHUNK_ALLOC and
OBSTACK_CHUNK_FREE instead of xmalloc and free, if defined.
Call _obstack_begin() instead of obstack_begin(). We should
be able to delete "#define obstack_chunk_alloc xmalloc" and
"#define obstack_chunk_free free" from lots of source files. RMS
* xm-next.h (OBSTACK_CHUNK_ALLOC): Use valloc.
* gcc.texinfo (OBSTACK_CHUNK_ALLOC, OBSTACK_CHUNK_FREE):
Document new macros and defaults. RMS
Plugged two BIG memory leaks (6/24/91):
* loop.c (loop_optimize, init_loop): Moved call to
gcc_obstack_init() from loop_optimize() to init_loop().
This was leaking an entire chunk per call! RMS
* reload1.c (reload, init_reload): Moved call to
gcc_obstack_init() from reload() to new function init_reload().
This was leaking an entire chunk per call! RMS
* toplev.c (compile_file): Call new function init_reload(). RMS
Implemented #warning cpp directive (6/26/91):
* cccp.c (enum node_type): Added T_WARNING. RMS
* cccp.c (directive_table): Added #warning. RMS
* cccp.c (do_warning): Print warning message and continue. RMS
* cpp.texinfo: Documented new #warning directive. RMS
Added length field to NXConstantString's (7/18/91):
* objc-actions.c (build_objc_string_object): Added length field
to constructor.
Changed default include search path on the NeXT (7/18/91):
* cccp.c (include_defaults) Use LOCAL_INCLUDE_DIR macro instead
of "/usr/local/include". Provide default definition.
* cccp.c (include_defaults) Added INCLUDE_DEFAULTS macro to
provide complete control over default include directories.
The VMS #ifdef should be moved to tm files and should use this
macro, since it is the target machine which matters, not the
machine we are compiling on.
* gcc.texinfo (LOCAL_INCLUDE_DIR, INCLUDE_DEFAULTS): Document new
macros.
* tm-next.h (INCLUDE_DEFAULTS): Define for NeXT 3.0 release.
Changed message for Objective-C text in C source files (7/19/91):
* objc-actions.c (build_objc_string_object, build_message_expr,
build_selector_expr, build_encode_expr, get_class_ivars, start_class):
Changed fatal error message to suggest using "-x objective-c" switch.
Added support for reporting events (7/19/91):
* toplev.c (report_event): New function to process events from cc1.
Determines printable name of decl and calls macro REPORT_EVENT().
* toplev.c (pfatal_with_name, fatal_io_error,
error_with_file_and_line, error_with_decl,
warning_with_file_and_line, warning_with_decl,
sorry, really_sorry): Call new function report_event().
* cccp.c (error, error_from_errno, warning, error_with_line,
pedwarn_with_file_and_line, fatal, perror_with_name,
do_elif, do_else): Call macro REPORT_EVENT().
* gcc.c (main, do_spec_1): Call macro REPORT_EVENT().
Changes to add @private and @protected (7/24/91):
* objc.gperf: Added @private and @protected keywords.
* objc-parse.y: Declared PRIVATE and PROTECTED tokens.
* objc-parse.y (ivar_decl_list): Allow PRIVATE and PROTECTED.
* objc-parse.y (initlist): Deleted initializers which are
ambiguous with message exprs.
* objc-parse.y (visibility_spec): New rule.
* objc-parse.y (ivar_decl_list): Use new rule.
Fix for function-pointer method arg bug (7/26/91):
* tree.c (make_node): Removed special hack for PARM_DECL's.
We should fix this better later.
Fix to cpp (7/26/91):
* cccp.c (initialize_builtins): Test for Objective-C was reversed.
On NeXT, define objc only for -lang-objc, but always permit #import.
Always define cplusplus so as to permit "//" comments.
Fix for @defs bug (7/26/91):
* objc-actions.c (build_ivar_chain): Take a new argument to specify
whether leaf ivars should be copied.
* objc-actions.c (get_class_ivars): Call build_ivar_chain() with
new arg 1 to ensure that finish_struct doesn't overwrite layout info
with temporary storage.
* objc-actions.c (build_private_template, continue_class): Call
build_ivar_chain () with new arg 0.
Fix for "if (...) x = a; else x = b;" bug (7/29/91):
* rtlanal.c (reg_referenced_between_p): New function.
* jump.c (jump_optimize): Use it instead of reg_used_between_p when
checking for "if (...) x = a; else x = b;" case.
* jump.c (jump_optimize): Fix typo in "if (...) x = a; else x = b;"
case: had temp3 instead of temp4.
@ Looks like tis wasn't a bug after all. I left the change in.
Fix for unsigned short to float conversion bug (7/29/91):
* optabs.c (expand_float): Always do conversions to FMODE in the
signedness of the input.
Fix for compiler pathing problem (7/29/91):
* tm-next.h (STANDARD_EXEC_PREFIX): Define to be "/lib/".
Fix for problems with -object and -bsd (7/30/91):
* tm-next.h (WORD_SWITCH): New macro.
* gcc.c (process_command): Use it to solve problems.
Fix for #pragma CC_OPT_ON (7/30/91):
* reload1.c (reload_as_needed): Check live_known before accessing
basic_block_head. RMS
Restore -ObjC flag (7/30/91):
* gcc.c (default_compilers): Add Objective-C mods to C compiler
spec conditional on -ObjC flag. Ugly conflict with -O* flags.
Add -precomp flag (7/30/91):
* gcc.c (default_compilers): Add precomp flag to cpp for C and
Objective-C files.
Fix for bug with Unix "major" macro (7/30/91):
* combine.c: Use new version.
Fix for cr bug (7/31/91):
* c-parse.y, objc-parse.y: Apply cr-diffs.
Fix for div/mod problem (7/31/91):
* m68k.md (divmodsi4, udivmodsi4): Use "register_operand" for "=d"
constraints, since this makes reload do needless work.
Fix for hash div/mod bug (7/31/91):
* local-alloc.c (block_alloc): Record regs_live_at for last insn
in basic block too. Otherwise REG_UNUSED regs may overlap hard
regs set in the last insn of the basic block. RMS
Bug fixes for div/mod bug from kenner (8/1/91): NOT INSTALLED YET!
* combine.c (try_combine): When replacing SET_DEST inside a PARALLEL,
don't replace it with something that has a side effect.
Fix for kernel hang (8/2/91):
* combine.c (try_combine): Turn off -fexpensive-optimizations.
They don't appear to deal with reg_significant[] correctly.
Fix for cc1obj looping bug from kenner (8/2/91):
* reload1.c (reload): Fix typo in condition for reg_equiv_address
being set from reg_equiv_memory_loc; had X instead of XEXP (X, 0).
== New version cc-38 ==
Fix for cse crasher in atan2 from kenner (8/3/91):
* cse.c (cse_insn): When recording this_insn_cc0, build a COMPARE
rtl if SRC is a floating-point value.
Fix for cpp problem with cc860 (8/5/91):
* cccp.c (main): Turn on C++ comments unconditionally.
Changed objc-parse.y to expect 19 conflicts (8/5/91):
* objc-parse.y: Changed to expect 19 conflicts.
Fix for empty function crasher from kenner (8/5/91):
* flow.c (regno_clobbered_at_setjmp): Don't blow up if no basic
blocks.
Changed reference to -x flag to -ObjC (8/5/91):
* objc-actions.c: Changed warning message 7 places.
Added warnings for optimization level #pragma's (8/5/91):
* out-next.c (handle_pragma): Issue warnings for #pragma't to
change optimization levels.
== integrated ==
Fix for spurious unsigned comparison warning (8/6/91):
* c-typeck.c (build_binary_op_nodefault): In signed versus unsigned
compare warning, note promotions of unsigned.
Fix for crash on syntax error (8/6/91):
* c-parse.y, objc-parse.y (simple_if): Allow error instead of
lineno_labeled_stmt. Use new subroutine if_prefix.
== New version cc-39 ==
Fix for problem with include file search path (8/7/91):
* tm-next.h (INCLUDE_DEFAULTS): Check all /NextDeveloper paths before
checking /usr/include.
== New version cc-40 ==
Fix for another problem with include file search path (8/7/91):
* tm-next.h (INCLUDE_DEFAULTS): Check /LocalDeveloper/Imports
before /usr/include also.
Fix for Julius's crasher (8/7/91):
* integrate.c (save_for_inline_copying): Clear constant pool after
saving constants into the insns.
* toplev.c (rest_of_compilation): Save and restore DECL_INITIAL
if we use save_for_inline_copying.
* integrate.c (save_for_inline_copying): Really copy DECL_INITIAL.
Calling integrate_decl_tree doesn't do it; deleted that call.
* integrate.c (copy_decl_tree): New function.
* integrate.c (integrate_decl_tree): Renamed from copy_decl_tree.
* integrate.c (integrate_parm_decls): Renamed from copy_parm_decls.
Finished instance variable access control control (8/8/91):
* objc-actions.c (add_instance_variable): Set TREE_PUBLIC,
TREE_PRIVATE and TREE_PROTECTED bits in ivar decls.
* objc-actions.h (is_private): Declare new function.
* objc-actions.c (is_private): New function. Returns true and
issues an error if instance variable is private and cannot be
accessed from this context.
* objc-actions.c (is_public): Use new function.
* objc-parse.y (primary): Use new function.
* CompilerNotes.rtf: Updated release notes.
Always issue warning for static access to id (8/9/91):
* objc-actions.c (is_public): Make warning unconditional.
Fix for include search path problem (8/11/91):
* cccp.c (do_include): Get current dir from nominal_fname.
Fix for code generation bug in /bin/sh (8/12/91):
* combine.c (simplify_shift_const): Correct errors involving modes
to use for shift.
Fix for reference to objc_msgSend in warning (8/12/91):
* c-typeck.c (convert_for_assignment): Check for message expr
before issuing error referencing objc_msgSend. Bug #15640.
Driver changes for precompiled headers (8/12/91):
* gcc.c (default_compilers): Removed warning for using -precomp
with .h file. Removed -precomp from .c and .m specs.
Fix for new spurious unsigned comparison warning (8/12/91):
* c-typeck.c (build_binary_op_nodefault): Rewote test.
== integrated ==
Better bug fix for div/mod bug from kenner (8/12/91):
* combine.c (try_combine): When replacing SET_DEST inside a PARALLEL,
don't replace it with something that has a side effect.
* reload.c (MATCHES): Don't consider two things equal if they have
side effects.
* m68k.md (divmodsi4, udivmodsi4): Undid previous change of 7/31/91
Better bug fix for kernel hang from kenner (8/12/91):
* combine.c (set_significant): Handle a complex SET_DEST correctly.
* combine.c (try_combine): Undid previous change of 8/2/91.
Fix for failing to link in NXConstantString.o (8/12/91):
* objc-actions.c (build_objc_string_object): Call add_class_reference
to make sure NXConstantString.o gets linked in.
Turned off warnings about signed and unsigned (8/13/91):
* c-typeck.c (build_binary_op_nodefault): I turned this off until
we have time to make it work right.
== New version cc-41 ==
Fix for problem with #warning (8/14/91):
* cccp.c (do_warning): Use warning () rather than error ().
Fix to driver for precompiled headers (8/14/91):
* gcc.c (default_compilers[], link_command_spec): Make -precomp
inhibit compilation and linking like -E.
Change for new names in header file reorg (8/15/91):
* tm-next.h (INCLUDE_DEFAULTS): Use new directory names.
== integrated ==
Experiment with include file search path (8/19/91):
* tm-next.h (INCLUDE_DEFAULTS): Interchange /LocalDeveloper/Headers
and /NextDeveloper/2.0CompatibleHeaders to solve Brian's problem.
Fixed bugs in protocols (8/21/91):
* encode_method_prototype() wasn't expanding return type...also
fixed bug with `oneway' (Vi->V).
* hack_method_prototype() was crashing with -O...should call
init_emit().
* get_static_reference() should install protocol stuff for
typechecking in build_message_expr().
Fix for problems with -y (8/21/91):
* gcc.c (link_command_spec): Changed Y* to y* so that -ysym flags
are passed to the loader.
Fix for problem with pathing for /bin/as (8/22/91):
* gcc.c (standard_exec_prefix_1): Set to "/bin/" for NeXT.
== New version cc-42 ==
Fix to add warning about comparison of unsigned with zero (8/22/91):
* c-common.c (shorten_compare): Warn about unsigned >= 0.
Fix for kernel code generation bug (8/22/91):
* expmed.c (emit_store_flag): Set ICODE only after CODE is right.
* jump.c (jump_optimize): Add missing arg to get_condition ().
== integrated ==
Fix deps file problem in cpp (8/23/91):
* cccp.c (main): Record name of dependencies file in deps_filename,
and remove it if there are errors. Otherwise, incorrect dependencies
may be written which may cause make to fail.
== New version cc-43 ==
Fix for crasher when NXString.h is not included (8/26/91):
* objc-actions.c (build_objc_string_object): Return error_mark_node,
not ERROR_MARK.
Added @class feature (8/26/91):
* objc-actions.c (yylex): CLASSNAME tokens are now identifier nodes
rather than class interface nodes. Uses new function is_class_name.
* objc-parse.y (identifier, typespec, component_decl_list2, receiver):
Changed to reflect new usage of CLASSNAME.
* objc-actions.c (get_static_reference, get_class_reference): Both
functions now take an identifier rather than an interface to
accomodate CLASSNAME change.
* objc-actions.c (is_class_name): New function.
* objc.gperf: Added @class keyword.
* objc-parse.y: Installed new gperf lexer, and added CLASS token.
* objc-parse.y (objcdef): Use new production classdecl.
* objc-parse.y (classdecl): New production. Calls new function
objc_declare_class.
* objc-actions.h (objc_declare_class): Declare new function.
* objc-actions.c (class_chain): New static to hold identifiers of
classes declared with @class.
* objc-actions.c (objc_declare_class): Add identifier to class_chain.
Create forward reference to struct and set TREE_STATIC_TEMPLATE bit.
* objc-actions.c (build_message_expr): Make illegal receiver an error
rather than a warning to avoid duplicate warnings or errors from being
reported on objc_msgSend(). Return error_mark_node.
* objc-actions.c (build_message_expr, is_public): Issue errors for
static references to classes for which we haven't seen an interface.
Added @compatibility_alias feature (8/27/91):
* objc.gperf: Added @compatibility_alias keyword.
* objc-parse.y: Installed new gperf lexer, and added ALIAS token.
* objc-parse.y (objcdef): Use new production aliasdecl.
* objc-parse.y (aliasdecl): New production. Calls new function
objc_declare_alias.
* objc-actions.h (objc_declare_alias): Declare new function.
* objc-actions.c (alias_chain): New static to hold identifiers of
aliases declared with @compatibility_alias.
* objc-actions.c (objc_declare_alias): Add identifier to alias_chain.
* objc-actions.h (is_class_name): Declareas returning a tree.
* objc-actions.c (is_class_name): Check alias_chain, and return
actual class name for aliases.
* objc-parse.y (yylex): Set yylval.ttype to return value of
is_class_name.
Minor cleanup of objc-actions.h (8/27/91):
* objc-actions.h: Make all declarations "extern".
== integrated ==
Fix for zero-extract code generation bug (9/5/91):
* m68k.md: Restricted the memory-to-memory zero_extend patterns to
avoid problems with memory aliasing.
Turned off -fstrength-reduce by default (9/5/91):
* tm-next.h (OPTIMIZATION_OPTIONS): Turn off strength reduction
at all optimization levels by default since it makes code worse
on the 68k.
Improved prologue and epilogue code when frame-pointers are not used (9/5/91):
* out-m68k.c (output_function_prologue): Add a negative constant
to sp rather than subtracting a positive one, since this is faster.
* out-m68k.c (output_function_prologue, output_function_epilogue):
Use word sized immediates when possible.
== New version cc-44 ==
Fix for bitfield comparison bug (9/9/91):
* fold-const.c (optimize_bit_field_compare): Return one when
comparison against bitfield constant which is too large uses
"!=" rather than "==". (Bug #15870)
Moved OPTIMIZATION_OPTIONS change to tm-m68k.h (9/10/91):
* tm-m68k.h (OPTIMIZATION_OPTIONS): Turn off strength reduction
at all optimization levels by default since it makes code worse
on the 68k.
Made #warning message more concise (9/10/91):
* cccp.c (do_warning): Don't print "#warning", since warning()
already prints "warning:".
Pick up fsf fix for cpp bug (9/10/91):
* cccp.c (skip_if_group): Deal with invalid directives the same
way handle_directive does.
Fix bug with fix_trunc patterns (9/10/91):
* m68k.md (fix_trunc*): Call CC_STATUS_INIT, since these patterns
do not leave the condition codes in the expected state.
Added -arch flag to cc driver (9/10/91):
* gcc.c (process_command): Make -arch flag do the same thing as -b,
except that the arg must be separated by a space.
Fixed problem with constant string objects in struct initializers (9/16/91):
* varasm.c (output_addressed_constants): Handle a CONSTRUCTOR in
an ADDR_EXPR correctly.
Fix for problem with dis from kenner (9/16/91):
* combine.c (exand_field_assignment): Don't allow sharing the RTL
for the inner object.
Fix for further problems with redeclaring "id" (9/17/91):
* objc-pase.y (yylex): Only return OBJECTNAME when it is a type name.
Change to improve Objective-C code generation (9/18/91):
* objc-actions.c (build_selector_reference): Mark selector references
TREE_READONLY, so that they can be CSE'd. (This doesn't work
on the 68k yet because memory appears to be as cheap as a constant.)
* objc-actions.c (generate_shared_structures): Mark class and
metaclass structures const, so that references to the superclass can
be CSE'd.
* tm-next.h (SELECT_SECTION): Check for OBJC decls before testing
TREE_READONLY, since some OBJC decls are now const.
Fix for problems with @class (9/20/91):
* objc-parse.y (classdecl): Use new production identifier_list
rather than identifers to allow all identifiers.
* objc-actions.c (objc_declare_class): Handle redeclaration of
classes.
Fix to prevent redeclaration of typedef names as classes (9/20/91):
* objc-actions.c (start_class, objc_declare_class): Use lookup_name
to verify that the class name isn't already declared as a variable,
function, or typedef.
== integrated ==
Fix for crasher with union constructors (9/23/91):
* expr.c (store_constructor): Handle union constructor.
Support -smart flag of new cpp (9/23/91):
* gcc.c (default_compilers[]): Pass -smart flag to cpp when output
is bound for cc1.
* cccp.c (main): Recognize and ignore -smart flag.
== integrated ==
Improve support for preprocessing assembler files (9/29/91):
* gcc.c (default_compilers[]): Pass -lang-asm rather than -lang-c
to cpp when preprocessing assembler files.
* cccp.c (main): Recognize -lang-asm flag.
== New version cc-45 ==
Fix for crash on syntax error with else (10/1/91):
* c-parse.y, objc-parse.y (stmt): Allow error after "else". Make
sure that expand_end_cond() is always called once.
Changes to use new smart cpp (10/1/91):
* Makefile (m68k_install): Install cpp as gnu-cpp.
== New version cc-46 ==
Fixes for problems with options to new cpp (10/4/91):
* tm-m68k.h (ASM_COMMENT_START): Define to be '|' on 68k.
* gcc.c (default_compilers[]): Pass -Wprecomp -Wno-precomp to cpp.
* gcc.c (default_compilers[]): Handle -precomp properly in all cases.
Create .p files unless -o is specified. Also handle -no-precomp.
== New version cc-47 ==
Improvements to -MD for new Makefile API (10/15/91):
* gcc.c (default_compilers[]): Support new -dependency-file flag.
Temporary workaround for scheduling bug (10/16/91):
* sched.c (attach_deaths): Print warning rather than aborting when
extra REG_DEAD notes are detected. Fix this properly later.
Rewrite of Objective-C string object support (10/16/91):
* objc-actions.c (objc_string_object_class_ref,
build_objc_string_object_class_ref): Removed variable and function.
Build constant_string_id and constant_string_type in
synth_module_prologue().
* objc-actions.c (STRING_OBJECT_CLASS_NAME): New macro.
* objc-actions.c (build_objc_string_object): Generate a zero in
the isa field of string constants instead of a reference to
_NXConstantString_class.
* tm-next.h (SELECT_SECTION): Place constructors for string objects
in the string object section.
Changes to simplify integration of changes for class references (10/16/91):
* objc-actions.c (add_selector_reference): Record string table
offset in TREE_PURPOSE field of sel_ref_chain.
* objc-actions.c (build_selector_translation_table): Get string table
offset from TREE_PURPOSE field rather than recalculating it. This
avoids a requirement that the selector strings being first in the
string table.
* objc-actions.c (generate_forward_declaration_to_string_table):
Call from synth_module_prologue() rather than from finish_objc().
== integrated ==
Chnages to install and use GNU cpp (10/18/91):
* Makefile (m68k_install): Install cpp as /lib/cpp.
* gcc.c (default_compilers[]): Use /lib/cpp-precomp when output is
directed to compiler proper. Otherwise use /lib/cpp.
== New version cc-48 ==
Fix for problems with new cpp (10/23/91):
* gcc.c (default_compilers[]): Pass -traditional to cpp when
-traditional-cpp is seen. Use /lib/cpp rather than /lib/cpp-precomp
whenever -traditional or -traditional-cpp is seen.
== New version cc-49 ==
Fixes for recent fix (11/1/91):
* gcc.c (default_compilers[]): Don't pass -traditional to cpp when
-traditional-cpp is seen.
Removed annoying warning (11/1/91):
* gcc.c (main): Don't warn about unused -B flags.
Cleaned up include path (11/1/91):
* tm-next.h (INCLUDE_DEFAULTS): Removed /usr/include and
/usr/local/include from default search path.
Added endianess predefine (11/1/91):
* tm-next68.h, tm-next88.h (CPP_PREDEFINES): Define __BIG_ENDIAN__.
Added architecture predefine (11/1/91):
* tm-next68.h, tm-next88.h (CPP_PREDEFINES): Define __ARCHITECTURE__.
Fix for Protocol parse error (11/4/91):
* objc-parse.y (protocolrefs): Use identifier_list rather than
identifiers to allow class names and other type names.
Added support for string concatenation in #include (11/4/91):
* cccp.c (do_include): Allow #include "std" "io.h"
Compensate for malloc preformance bug (11/4/91):
* xm-next.h (OBSTACK_CHUNK_SIZE): Set to pagesize - 4 to workaround
malloc bug.
Fix for bug in obstacks! (11/5/91):
* obstack.c (_obstack_newchunk): Don't delete empty chunks, since
they may contain zero sized objects! This caused a crash whenever
a string constant larger than the obstack chunk size was used to
initialize a decl.
== New version cc-50 ==
Hacks for dhrystones (11/6/91):
* flags.h (flag_word_align_strings): Declare new flag.
* toplev.c (flag_word_align_strings): Define new flag and turn on
for -fword-align-strings.
* tm-next.h (CONSTANT_ALIGNMENT, DATA_ALIGNMENT): Align string
constants to word boundaries for -fword-align-strings.
* flags.h (flag_builtin_ansi_functions): Declare new flag.
* toplev.c (flag_builtin_ansi_functions): Define new flag and turn on
for -fbuiltin-ansi-functions.
* c-decl.c (init_decl_processing): Only declare builtin ANSI functions
for -fbuiltin-ansi-functions.
Fix for bss alignment problem (11/8/91):
* tm-next.h (ASM_OUTPUT_ALIGNED_LOCAL): Define.
* tm-next88.h (ASM_OUTPUT_LOCAL): No longer define.
* tm-next88.h (FUNCTION_BOUNDARY): Only align functions to 4-bytes.
Fix for mark's bug (11/12/91):
* combine.c (subst): Fixed bug in simplification of (neg X) when
X has only 1 significant bit.
Fix for bassanio's cpp driver problem (11/15/91):
* gcc.c (default_compilers[]): Correct handling of cpp when both
-E and -traditional-cpp are given.
Fix for doug's volatile problem (11/16/91):
* c-typeck.c (build_array_ref): Ref is volatile if array is volatile.
Fix for incorrect warnings about volatile functions (11/17/91):
* c-typeck.c (build_unary_op):
Handle const and volatile lvalues correctly in ADDR_EXPR.
* objc-actions.c (generate_shared_structures): Don't make class and
metaclass structures const, since this now causes warnings due to
lack of const in Objective-C header files.
* calls.c (expand_call): Handle calls through pointers to volatile
functions. (Turned off until RMS fixes this.)
== New version cc-51 ==
Improved optimization of multiplication by constants (11/22/91):
* tm-m68k.h (RTX_COSTS): Reflect relative speed of multiply,
divide, shift, and lea insn's.
* expmed.c (init_expmed): Fixed bug which prevented lea insn's from
being recognized. This prevented the lea strategy from being used.
* expmed.c (init_expmed): Calculate shift_cost using a shift by
a small constant rather than a variable shift, since these may have
different costs.
Change to force categories to reference their classes (11/26/91):
* objc-actions.c (generate_category): Call add_class_reference() with
name of class category is part of. This helps detect certain problems
at link time (or in rld_load()) rather than later.
Change to place constant constructors in the const section (12/2/91):
* tm-next.h (SELECT_SECTION): Check TREE_CONSTANT in addition to
TREE_READONLY since the latter isn't set for constructors.
Fix for problems with asm's and scheduling (12/3/91):
* sched.c (sched_analyze_2): Correctly handle ASM_OPERAND and
ASM_INPUT rtx. Volatile and traditional asm statements are
assumed to use and clobber all hard registers and all memory.
(schedule_block): Delete code that incorrectly handles ASM_OPERAND
and ASM_INPUT rtx by exiting early.
Fix for missing "may be used uninitialized" warnings (12/10/91):
* c-decl.c (c_decode_option): Set warn_uninitialized for -Wall.
* flags.h (warn_uninitialized): Declare.
* toplev.c (warn_uninitialized): Make global.
Fix for crasher in final (12/10/91):
* flow.c (find_basic_blocks): Set depth of last insn, not first,
into basic_block_loop_depth.
(propagate_blocks): Use consistently with new definition.
* flow.c (propagate_block): Adjust loop depth if it is changed in
notes at the end of a block.
Abort if loop depth ever reaches zero.
Improvements to memory usage statistics (12/11/91):
* obstack.c (obstack_size): New function.
* toplev.c (main): Report sizes of all obstacks for -dm.
== New version cc-52 ==
Protocol api/space improvements (12/18/91):
* objc-parse.y: Added objcprotocolexpr rule.
* objc-actions.h: Added PROTOCOL_FORWARD_DECL, build_protocol_expr.
* objc-actions.c (objc_protocol_template, protocol_type): additions.
* objc-actions.c (build_protocol_reference): addition.
* objc-actions.c (build_protocol_expr): addition.
* objc-actions.c (generate_protocol_references): addition.
* objc-actions.c (generate_protocols): modified.
* objc-actions.c (generate_shared_structures): modified.
* objc-actions.c (generate_protocol_list): wire down protocol refs.
* objc-actions.c (OBJC_VERSION): increment version number.
Fixed bugs related to WORDS_BIG_ENDIAN being defined (12/16/91):
* final.c (split_double): Handle all integer constants.
* out-m68k.c (output_move_double): Use split_double for all constants.
* optabs.c (expand_binop): Fix carry propagation code for multiple
words.
* m68k.md (umulsidi3, mulsidi3): New DEFINE_EXPANDs and DEFINE_INSN
recognizers.
* expr.c (do_store_flag): Give up if can't directly compare args.
Minor improvement to Makefile (12/17/91):
* Makefile: Use touch -f on stamp-* files.
Improvements to MakeApp support (12/18/91):
* make.defs: Added new directory arg.
* make_support.c (make_support): Use new arg.
* objc-actions.c (error_with_ivar, error_with_method, warn_with_method)
Use REPORT_EVENT.
* objc-actions.c (error_with_method, warn_with_method): Changed
DECL_SOURCE_FILE and DECL_SOURCE_LINE to METHOD_FILENAME and
METHOD_LINENUM. This was a latent bug which happened to work.
* toplev.c (report_event): Make global.
Changes to simplify integratation of Objective-C++ (12/19/91):
* objc-actions.c (class_type): Renamed to objc_class_type.
Changes to avoid useless stabs (12/19/91):
* dbxout.c (dbxout_symbol): Don't output stabs for objc symbols.
== New version cc-53 ==
Changes to integrate C++ driver (1/13/92):
* gcc.c (default_language):
* gcc.c (process_command):
* gcc.c (lookup_compiler):
* gcc.c (default_compilers[]):
Fix for more asm volatile problems (1/14/92):
* reorg.c (mark_referenced_resources): Treat traditional asm's and
asm volatile's correctly.
Changes for constructors/destructors (1/14/92):
* tm-next.h (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR):
Output an undefined reference to the symbol .constructors_used or
.destructors_used as appropriate.
Improved warnings for pointer type comparisons (1/15/91):
* c-typeck.c (comptypes): Removed old NeXT mod, since it was much
too permissive.
* c-typeck.c (comp_target_types): Added new NeXT mod which is much
more specific. It compares pointer types ignoring qualifiers
recursively rather than only one level deep, as ANSI specifies.
This makes const char ** and char ** compatible without the other
undesirable effects the previous mod had.
Improvements to Objective-C type printing (1/16/91):
* objc-actions.c (error_with_method, warn_with_method): Old bug.
Call gen_method_decl() instead of gen_declaration().
* objc-actions.c (gen_declaration, gen_declspecs, adorn_decl):
Improve handling of arrays, functions and typedef's. Eliminated
unwanted whitespace. Handle pointer qualifiers.
Fix for default method return types (1/16/91):
* objc-actions.c (build_method_decl): Make method return type default
to "id" even when there are type qualifiers.
Fix for crasher in format warnings (1/20/92):
* c-typeck.c (check_format): If length modifier is incompatible
with format, set wanted_type to unmodified format type rather than 0.
Improvements to Objective-C type checking (1/21/92):
* objc-actions.c (lookup_class_method_static): Check for class
methods in protocols.
* objc-actions.c (lookup_class_method_static): Simulate wrap around
by calling lookup_instance_method_static() at end of superclass chain.
Eliminate warnings about longjmp() clobbering variables (1/21/92):
* c-decl.c (finish_function): Treat setjmp() traditionally.
Place all local variables on the stack unless they are explicitly
declared "register". This test should be improved to only force
variables which could be clobberred by longjmp() onto the stack.
Further improvements to Objective-C type checking (1/24/92):
* objc-actions.c (build_message_expr): Bug fix. Check for protocol
qualified static types in implementation also.
* objc-actions.c (build_message_expr): Unite type checking for
statically allocated and statically typed objects. The statically
allocated code was quite out of date.
Fix to encode bycopy qualifier in method return types (1/24/92):
* objc-actions.c (encode_method_qualifiers): Encode "bycopy" also.
Fix to make id default type work with new type qualifiers (1/24/92):
* objc-actions.c (adjust_type_for_id_default): New function.
Adds the typespec "id" if none was present.
* objc-actions.c (build_keyword_decl, build_method_decl): Call
new function adjust_type_for_id_default().
Fix to check consistency with protocol interfaces (1/24/92):
* objc-actions.c (really_start_method): Use
lookup_instance_method_static() or lookup_class_method_static()
to find prototype to compare against implementation.
More improvements to Objective-C type printing (1/27/92):
* objc-actions.c (is_complex_decl): Don't treat id as a complex type
so that we print id rather than struct objc_object *.
* objc-actions.c (gen_declspecs): Handle id and protocol-qualified
types correctly.
* objc-actions.c (gen_declspecs): Handle long long.
Changes to encoding of type qualifiers (1/27/92):
* objc-actions.c (encode_type_qualifiers): New function replaces
encode_method_qualifiers() and encode_method_arg_qualifiers().
Which qualifiers are allowed in which places will be checked
elsewhere.
Fix for potential id * bug (1/28/92):
* objc-actions.c (get_object_reference): Copied hack from
get_static_reference() regarding pointer typesd already being built.
This fixes an obscure bug is you use id * and id <Foo> *.
Changes to reduce diffs between Objective-C++ (1/28/92):
* objc-actions.c (synth_module_prologue): Declare objc_getClass() and
objc_getMetaClass() with prototypes (C++ requires this).
* objc-actions.[hc]: New macro FIRST_OBJC_TREE_CODE. Use it instead
of LAST_AND_UNUSED_TREE_CODE. This simplifies integrating C++.
Added support for protocols in categories (mself 1/30/92):
* objc-parse.y (classdef): Added protocolrefs to category interfaces.
* objc-actions.c (start_class): Add protocols to category structure.
* objc-actions.c (generate_category): Generate protcol references and
list. Add new protocols argument to build_category_initializer().
* objc-actions.c (generate_protocol_list): Handle category interfaces
like class interfaces.
* objc-actions.c (build_category_initializer): Build initializer
for new protocols field.
* objc-actions.c (build_category_template): Added new protocols field.
* objc-actions.c (generate_protocols,
build_shared_structure_initializer): Fixed latent bug two places
where build_unary_op() was being called with a tree as its third arg
instead of an int.
* objc-actions.c (generate_protocol_list): Added initializer for new
"next" field. Is there some reason why we handle this like an array
rather than as the struct it is? This isn't consistent with how
method_lists are handled. Yuck.
* objc-actions.c (synth_id_with_class_suffix): Handle
CATEGORY_INTERFACE as well as CATEGORY_IMPLEMENTATION!
* objc-actions.c (OBJC_VERSION): Incremented to 5!
* objc-actions.c (PROTOCOL_VERSION): New macro. Incremented to 2!
Bug fix for using Protocols with archive libraries (1/31/92):
* objc-actions.c (generate_protocols): Generate a reference
to the Protocol class to ensure that it is linked in. Otherwise
protocols will never be initialized since +[Protocol load] will
never be called!
Added type checking for protocols in categories (1/31/92):
* objc-actions.c (lookup_instance_method_static,
lookup_instance_method_static): Check protocols in categories too.
* objc-actions.c (objc_comptypes): Check for protocols in
categories too.
* objc-actions.c (finish_class): Check that categories fully
implement protocols they adopt.
Fix for crasher with new protocol support (1/31/92):
* objc-actions.c (generate_category): Avoid hairy obstack bug by
moving start_decl further down in the function.
Added Makefile support for profiling (2/4/92):
* Makefile: Just say make profile.
* Makefile.in (CLIB): Define to be -lsys_s so that we don't get
-lsys_p when we link with -pg.
Tighten up checks for Objective-C in C source (2/6/92):
* objc-actions.c (objc_declare_class, objc_declare_alias):
Check doing_objc_thang.
Changes to ease integration with C++ (2/6/92):
* objc-actions.h (TYPE_PROTOCOL_LIST): New macro.
* objc-actions.c: Use TYPE_PROTOCOL_LIST instead of TYPE_LANG_SPECIFIC
== New version cc-54 ==
Changes to fix const warnings (2/12/92):
* c-typeck.c (build_modify_expr): Test TREE_READONLY of lhs.
Changes to segregate Objective-C strings (2/18/92):
* tm-next.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS,
objc_section_init, SELECT_SECTION): Added new Objective-C string
sections.
* objc-actions.c (enum stringSection): New enum.
* objc-actions.c (add_objc_string): Changed to return the string
directly rather than an offset to pass to build_msg_pool_reference().
Added a new section argument. Uniques strings within each section.
* objc-actions.c (build_objc_string_decl): New function to build
the string decls using pushdecl_top_level().
* objc-actions.c (build_selector): New function to replace
init_selector(). Just calls add_objc_string() and casts the result.
* objc-actions.c (build_selector_reference): Modified to take an
identifier node rather than an offset. This effectively merges
add_selector_reference() into build_selector_reference().
== New version cc-55 ==
Changes for latest assembler (3/1/92):
* tm-next.h: Changed .objc_selector_refs to .objc_message_refs.
Eliminated .objc_selector_strs.
== New version cc-56 ==
Changes to use class references (3/3/92):
* tm-next.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS,
objc_section_init, SELECT_SECTION): Added support for class refs
section.
Changes to support new linker flags in driver (3/6/92):
* tm-next.h (WORD_SWITCH, LINK_SPEC): Added new -ObjC and -all_load
switches.
== New version cc-57 ==
Fix for crasher with setjmp and inlines (3/10/92):
* function.c (setjmp_protect): Don't put vars from inline functions
on the stack. (Bug #19834)
Detect duplicate protocol declarations (3/10/92):
* objc-actions.c (start_protocol): Check for duplicate declarations.
(Bug #19854)
Fix for incorrect line number in warnings (3/10/92):
* c-decl.c (pushdecl): Print line number of previous implicit
declaration correctly. (Bug #19855)
Fix for canon crasher (3/11/92):
* jump.c (jump_optimize): Disable "if (...) {... x = C;} if (x) ..."
optimization; there doesn't seem to be a way to fix it. (Bug #18909)
Fix for incorrect type descriptors for return values (3/16/92):
* objc-actions.c (encode_method_prototype): Encode base type as well
as type qualifiers. (Bug #20058)
Fix for problems with alloca() inside function arguments (3/16/92):
* calls.c (calls_alloca): New function.
* calls.c (expand_call): Preexpand any argument that contains a call
to alloca() if this call will use the stack. (Bug #19987)
Changes to default profiling library (3/16/92):
* tm-next.h (LIB_SPEC): Always use -lsys_s. (Bug #18835)
== New version cc-58 ==
Fix for crasher with @defs (3/23/91):
* objc-parse.y (component_decl_list2): When the class interface has
not been seen, return NULL_TREE rather than error_mark_node. The rest
of the front end cannot handle error_mark_node here. It doesn't always
crash, but something appears to end up in the wrong obstack.
(Bug #20435)
Fix for further problems with const warnings (4/8/92):
* c-typeck.c (build_indirect_ref): Set TREE_READONLY of result
when pointer is const qualified. (Bug #21166)
Fix for zero-extension code gen bug (4/28/92):
* optabs.c (add_equal_note): New function. Only add equal notes
to sequences when they are completely accurate.
* optabs.c (emit_unop_insn): Use add_equal_note(). (Bug #22583)
== New version cc-59 ==
Fix for incomplete warnings about protocol conformance (5/11/92):
* objc-actions.c (check_protocols): New routine to recursively
check for protocol conformance. (Bug #23285)
* objc-actions.c (finish_class): Use new routine (2 places).
Fix for incorrect prototype lookup with class methods (5/19/92):
* objc-actions.c (receiver_is_class_object): Rewrote to check for
class references rather than calls to objc_getClass().
* objc-actions.c (build_message_expr): Change call slightly for
new function. (Bug #24120)
Fix for bug introduced by previous changes for const warnings (5/20/92):
* expr.c (expand_expr): For INDIRECT_REF, don't set unchanging bit.
(Bug #24300)
Fix for overflow simplification bug in TeX (5/27/92):
* combine.c (simplify_comparison, case PLUS): Only do simplification
for equality comparison due to overflow problems. (Bug #24561)
== New version cc-60 ==
Fix for crasher with d = i = j = 0; (6/10/92):
* expr.c (expand_expr, FLOAT_EXPR case): Don't pass a VOIDmode.
Fix for nasty reload crasher (6/10/92):
* reload.c (find_reloads): Compute preferred_class after
calling find_reloads_toplev or equivalent.