* m68k/m68k.c (m68k_last_compare_had_fp_operands): New variable.
* m68k/m68k.h (m68k_last_compare_had_fp_operands): Declare it.
* m68k/m68k.md (tst*, cmp*): Turn all of these into
define_expand/define_insn pairs. Keep track of whether or not
the test/compare has fp operands.
(seq, sne, sgt, slt, sge, sle): Turn these into
define_expand/define_insn pairs. Make the expanders FAIL if
TARGET_68060 and the last comparison/test had fp operands.
From-SVN: r13731
(layout_record, PCC_BITFIELD_TYPE_MATTERS): Only add padding if a bit
field would otherwise span more units of alignment than its base type.
From-SVN: r13727
(cpp_lex): Invalid multibyte characters are errors if pedantic.
(cpp_parse_escape): Character constants that do not fit are errors if pedantic.
From-SVN: r13726
(__objc_word_return, __objc_double_return): Remove functions.
(__objc_get_forward_imp): New function.
(__objc_init_dispatch_tables): Install zero instead of
__objc_init_install_dtable.
(__objc_init_install_dtable): No longer call the method but
allow objc_msg_lookup return it for normal execution.
(obj_msg_lookup): Differentiate between when a method isn't
implemented and when the dispatch table needs to be installed.
Return the IMP when the dispatch table is installed versus
having __objc_init_install_dtable call it.
(get_imp): Install dispatch table if needed and return IMP
from the newly installed dispatch table.
(__objc_responds_to): Install dispatch table if needed before
checking if method is implemented.
From-SVN: r13723
(expr_no_commas): Do not store temporary skip_evaluation increments on
yacc value stack; the code was buggy and occasionally wrote past the
end of the stack.
From-SVN: r13720
(__objc_word_return, __objc_double_return): New functions.
(__objc_init_install_dtable): Call appropriate return function
based upon method type.
From-SVN: r13715
(class_add_method_list): Check for the +load method when adding a
methods list to a class.
(__objc_install_methods_in_dtable): New function.
(class_add_method_list): Don't check anymore for duplicate methods.
From-SVN: r13711
(objc_send_load, __objc_send_load): New functions.
(__objc_send_message_in_list): New function.
(__objc_force_linking): New function.
(__objc_exec_class): Don't call _objc_load_callback here.
(__objc_exec_class): Access statics from their new place in the defs variable.
From-SVN: r13709
(OBJC_VERSION): Increment version as recent changes have made old
compiled code incompatible with current ObjC runtime.
(build_objc_symtab_template): Make sure defs in objc_symtab is a NULL
terminated array.
(init_def_list): Attach statics to end of def list.
(init_objc_symtab): Take statics list into account.
(init_module_descriptor, build_module_descriptor): Don't add statics.
(generate_static_references): Indicate that statics are used.
(finish_objc): Process statics in the beginning.
From-SVN: r13708
(find_reloads_address, find_reloads_address_1): New argument INSN.
(find_reloads_address_1): Reload inside of p{re,ost}_{in,de}c
instead of entire p{re,ost}_{in,de}c where appropriate.
From-SVN: r13706
(eliminate_regs, case SET): Pass that we are storing to recursive call.
(eliminate_regs, case SUBREG): If storing and same number of words, use
larger mode.
From-SVN: r13704
* mn10300/mn10300.c (const_costs): Remove unused function.
* mn10300/mn10300.h (CONST_COSTS): Rework to generate better code.
* mn10300/mn10300.c (print_operand): Handle 'H' and 'L' output
modifers for high/low part of a 64bit value.
* mn10300/mn10300.h (CONST_DOUBLE_OK_FOR_LETTER_P): Handle 'G'
(LEGITIMATE_CONSTANT_P): Allow any constant.
* mn10300/mn10300.md (movdi, movdf): Implement.
(adddi3, subdi3): New expanders and patterns.
* mn10300/mn10300.c (print_operand): Handle 'A' modifier for an
address which can't be simple register indirect.
* mn10300/mn10300.h (EXTRA_CONSTRAINT): Handle 'R' for bit ops.
* mn10300/mn10300.md: Add several patterns to test, set and clear
bitfields.
* mn10300/mn10300.c (can_use_return_insn): New function.
(expand_epilogue): Emit a RETURN insn if possible.
* mn10300/mn10300.md (return): New pattern.
* mn10300/mn10300.h (CONST_OK_FOR_LETTER_P): Handle 'N'.
* mn10300/mn10300.md (andsi3): Catch "and 255,dn" and "and 65535,dn"
which were not turned into zero_extend patterns.
* mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Handle symbolic
constant as an index/base too.
* mn10300/mn10300.md (movsi): Allow SP to be loaded/saved with
reg+d8 addresses.
* mn10300/mn10300.md (cmpsi): Allow second operand to be a constant.
(subsi3): Likewise.
* mn10300/mn10300.md (sign extension patterns): Fix thinko when
extending from memory.
* mn10300/mn10300.md (tst peepholes): Add peepholes for test/branch
based on N bit being set/clear and the data value being tested dies.
From-SVN: r13701
* mn10300/mn10300.c (expand_prologue): Rework so that eliminating
the frame pointer produces faster/smaller code.
(expand_epilogue): Likewise.
(initial_offset): New function for argument pointer and frame pointer
elimination.
* mn10300/mn10300.h (FIRST_PSEUDO_REGISTER): Bump to 10.
(FIXED_REGISTERS): Add argument pointer register, it's a fake fixed
register.
(CALL_USED_REGISTERS, REG_ALLOC_ORDER): Corresponding changes.
(REGNO_REG_CLASS, REG_CLASS_CONTENTS): Likewise.
(REG_OK_FOR_BASE_P, REGISTER_NAMES): Likewise.
(reg_class, REG_CLASS_NAMES): Delete unwanted DATA_OR_SP_REGS class.
(PREFERRED_OUTPUT_RELOAD_CLASS): Define.
(FIRST_PARM_OFFSET): No longer include register save area in
computation.
(STACK_POINTER_REGNUM): Is now register 9.
(ARG_POINTER_REGNUM): Is now register 8.
(FRAME_POINTER_REQUIRED): Refine.
(ELIMINABLE_REGS, INITIAL_ELIMINATION_OFFSET): Define.
(CAN_DEUG_WITHOUT_FP): Define.
* mn10300/mn10300.md (return_internal): Break into two patterns.
* mn10300/mn10300.h (CONST_OK_FOR_LETTER_P): Handle 'M' too.
(REGISTER_MOVE_COST): Fix errors and refine.
* mn10300/mn10300.c (notice_update_cc): SET_ZN_C0 insns leave the
overflow bit in an unuseable state. Rename CC_SET to CC_TST.
* mn10300/mn10300.md (cc attributes): "set" is gone, replaced by
"tst". Update attributes on various insns.
* mn10300/mn10300.md: Improve sign and zero extension instructions.
(ashlsi3): Improve. Handle address registers too.
(add peephole): Combine two consecutive adjustments of a register
into a single adjustment.
From-SVN: r13700
* mn10300/mn10300.c (expand_prologue): Rework to avoid unnecessary
"add" operations.
(expand_epilogue): Likewise.
* mn10300/mn10300.h (STARTING_FRAME_OFFSET): Is zero after the last
round of prologue/epilogue changes.
(FIRST_PARM_OFFSET): Is now 16 (-4 for REG_PARM_STACK_SPACE + 20 for
register save area).
(REG_PARM_STACK_SPACE): Define as 4 bytes.
(OUTGOING_REG_PARM_STACK_SPACE): Define so caller allocates it.
* mn10300/mn10300.md (call expander): Don't emit insns to adjust the
stack here anymore.
(call_value expander): Likewise.
* mn10300/mn10300.md (bCC patterns): Just use "bCC target" now that
the assembler handles relaxing.
From-SVN: r13696