(ENCODE_SECTION_INFO): Likewise.
(CPP_PREDEFINES): Use __stdcall__, __cdecl__.
(VALID_MACHINE_DECL_ATTRIBUTE): Call is_attribute_p.
`args' must be NULL.
(build_type_attribute_variant): Call it.
(valid_machine_attribute): Handle attributes with arguments.
(is_attribute_p): New function.
(lookup_attribute): New function.
(attribute_in_list): Deleted.
(attribute_list_contained): Check TREE_PURPOSE and TREE_VALUE.
Jim Wilson [Thu, 27 Apr 1995 22:50:50 +0000 (15:50 -0700)]
(expand_return): When returning BLKmode structure...
(expand_return): When returning BLKmode structure, use
operand_subword instead of doing arithmetic on the register number.
Also, for structures smaller than word_mode, copy it into a word_mode
temporary and then subreg it.
Richard Kenner [Wed, 26 Apr 1995 23:18:37 +0000 (19:18 -0400)]
(OBJC_VERSION): Version 7.
(build_objc_string_object): Build a full declaration if not using the next
runtime.
(objc_add_static_instance): New function.
(init_module_descriptor): Add reference to static instances table.
(build_module_descriptor): Add field for static instances table.
(get_objc_string_decl): New function.
(generate_static_references): New function.
(finish_objc): Call generate_static_references if needed.
Richard Kenner [Wed, 26 Apr 1995 23:07:00 +0000 (19:07 -0400)]
Changed Class * to Class in order to match NEXTSTEP and OpenStep runtime.
Changed Class * to Class in order to match NEXTSTEP and OpenStep
runtime.
(OBJC_VERSION): Version 7.
(objc_init_statics): New function.
(__objc_exec_class): Invoke objc_init_statics if needed.
Richard Kenner [Wed, 26 Apr 1995 23:05:45 +0000 (19:05 -0400)]
Changed Class * to Class in order to match NEXTSTEP and OpenStep runtime.
Changed Class * to Class in order to match NEXTSTEP and OpenStep
runtime.
(objc_static_instances): New struct to record static instances of a certain
class.
(objc_module): New tag STATICS to point to the table of objc_statics_instances.
Richard Kenner [Wed, 26 Apr 1995 21:24:01 +0000 (17:24 -0400)]
(finish_struct): Add ATTRIBUTES argument, call decl_attributes and set DECL_PACKED from TYPE_PACKED.
(finish_struct): Add ATTRIBUTES argument, call decl_attributes and set
DECL_PACKED from TYPE_PACKED.
(finish_enum): Add ATTRIBUTES argument, call decl_attributes, and make enum
narrow if TYPE_PACKED.
Jim Wilson [Tue, 25 Apr 1995 23:36:38 +0000 (16:36 -0700)]
(struct move_by_pieces): Add to_struct and from_struct fields.
(move_by_pieces): Set to_struct and from_struct fields.
(move_by_pieces_1): Set MEM_IN_STRUCT_P of to1 and from1.
(expand_builtin, case BUILT_IN_MEMCPY): New variable type.
Set MEM_IN_STRUCT_P of src_mem and dest_mem.
Richard Kenner [Tue, 25 Apr 1995 23:09:01 +0000 (19:09 -0400)]
(expand_builtin_apply_args): If STACK_REGS is defined...
(expand_builtin_apply_args): If STACK_REGS is defined, generate USE
insns before the function body, thus showing which registers are
filled with parameters.
Reverse order of saving registers, more compact code for i387.
(expand_builtin_apply): Likewise.
(FP_mode_reg): Trimmed to a smaller size, less overhead.
(FP_MODE_REG): New macro over which FP_mode_reg will be accessed.
(mark_regs_pat, straighten_stack): New functions.
(reg_to_stack): Amend initialisation of FP_mode_reg.
Mark FP registers mentioned in USE insns before NOTE_INSN_FUNCTION_BEG.
(get_true_reg): Eliminate FP subreg accesses in favour of the actual FP
register in use.
(record_reg_life_pat): Make it work on SUBREGs as well. Make use of the new
mark_regs_pat function. Handle USE insns if called unnested.
(record_reg_life): Don't check for QImode again, we know that it is there.
Process CALL_INSNs like all other insns, they might `use' some FP argument
registers if register passing.
(stack_result_p): Changed in stack_result and returning an rtx.
(stack_reg_life_analysis): Take a new stackentry state argument.
Use stack_result and the rtx to mark using mark_regs_pat. This ensures that
types that need multiple FP registers are handled correctly
Delete the no_live_regs shortcut to save space.
Use stackentry state to determine filled registers.
(replace_reg): Accept COMPLEX_FLOAT as well.
(move_for_stack_reg): Optimise away some pointer dereferencing.
(subst_stack_regs): Make sure the stack is in the right order and of the right
size for register passing.
(goto_block_pat): Make sure the stack is in the right order to return possible
multi-register values from the function.
(convert_regs): Fix comment about CALL_INSN, it's no longer valid.
Make sure the stack is of the right size and in the right order to return
possible multi-register values from the function.
Richard Kenner [Tue, 25 Apr 1995 22:52:18 +0000 (18:52 -0400)]
(valid_machine_attribute): Use new function attribute_in_list...
(valid_machine_attribute): Use new function attribute_in_list, makes
sure type_attribute_variants are reused even when attributes have
parameters.
Assign any new type to TREE_TYPE (decl).
(attribute_in_list): New function.
(attribute_list_contained): Use it.
Richard Kenner [Tue, 25 Apr 1995 21:47:34 +0000 (17:47 -0400)]
Removed __NetBSD__ from conditional.
Declare strerror if HAVE_STRERROR is defined; otherwise declare
sys_errlist and sys_nerr.
(my_strerror): New function.
(errno): Don't define if already defined as a macro.