Commit Graph

7659 Commits

Author SHA1 Message Date
Jim Wilson
2817f10ffc (sdbout_symbol): Use DECL_ASSEMBLER_NAME if
DECL_LANG_SPECIFIC is set.

From-SVN: r7522
1994-06-18 14:01:07 -07:00
Jim Wilson
1d33b2a9b9 (process_init_element): For fieldtype, don't access
TYPE_MAIN_VARIANT field if the type is error_mark_node.

From-SVN: r7521
1994-06-18 13:58:57 -07:00
Jim Wilson
abdf3eea96 (truncdisi2): Change from define_insn to define_expand.
(truncdihi2, truncdiqi2, extendsidi2): Likewise.
(extendsidi2_internal): New pattern.

From-SVN: r7520
1994-06-18 13:53:45 -07:00
Jim Wilson
9c066566b0 (duplicate_loop_exit_test): Initialize copy to zero.
Emit jump to end lable if copy is still zero.

From-SVN: r7519
1994-06-18 13:50:28 -07:00
Jim Wilson
ee3e2d3de0 (sdbout_one_type): Use DECL_ASSEMBLER_NAME not
DECL_NAME for child_type that is a template type.

From-SVN: r7518
1994-06-18 13:48:02 -07:00
Jim Wilson
f97d29ce9c (move_movables): Copy CALL_INSN_FUNCTION_USAGE field.
From-SVN: r7517
1994-06-18 13:44:41 -07:00
Jim Wilson
0eb111c2d9 (sdbout_one_type): Use DECL_ASSEMBLER_NAME if
DECL_LANG_SPECIFIC is set.

From-SVN: r7516
1994-06-18 13:42:18 -07:00
Jim Wilson
3a83beef35 (dbxout_symbol): Replace DECL_IGNORED_P with
TYPE_DECL_SUPPRESS_DEBUG.

From-SVN: r7515
1994-06-18 13:40:20 -07:00
Richard Kenner
711a5e64b8 (expand_shift): Don't try extzv for lshr.
From-SVN: r7514
1994-06-18 10:31:51 -04:00
Richard Kenner
572e10f482 (lshrsi3): New define_expand.
From-SVN: r7513
1994-06-18 10:26:15 -04:00
Richard Kenner
73d9a835b6 Pass NULL_RTX for TARGET in calls to expand_{un,bin}op.
(expand_float): Use expand_shift instead of expand_binop.

From-SVN: r7512
1994-06-18 10:21:32 -04:00
Ian Lance Taylor
d67342cd3d Correct math.h handling on Lynx again.
From-SVN: r7511
1994-06-17 19:06:33 +00:00
Richard Earnshaw
b5a09c4171 (simplify_binary_operation, case MINUS): Check mode of op0,
instead of op1, before calling plus_constant.

From-SVN: r7510
1994-06-17 14:51:43 +00:00
Jeff Law
2e7e71216f pa.h (DEBUGGER_AUTO_OFFSET): Define.
* pa.h (DEBUGGER_AUTO_OFFSET): Define.  If no frame pointer
	is available, then adjust the offset by the size of the current
	frame.

From-SVN: r7509
1994-06-16 23:43:06 -06:00
Jason Merrill
51783c1428 (output_inline_function): Unset DECL_DEFER_OUTPUT on
fndecl.

From-SVN: r7508
1994-06-16 23:38:08 +00:00
Jason Merrill
07af9d164b (compile_file): Unset DECL_DEFER_OUTPUT on decls considered at end of file.
(compile_file): Unset DECL_DEFER_OUTPUT on decls
        considered at end of file.
(rest_of_compilation): Also postpone compilation of
        inlines with DECL_DEFER_OUTPUT set.
        (compile_file): Always emit postponed inlines if
        -fkeep-inline-functions.

From-SVN: r7507
1994-06-16 23:37:53 +00:00
Jason Merrill
308018308f (DECL_DEFER_OUTPUT): New macro.
From-SVN: r7506
1994-06-16 23:37:43 +00:00
Richard Kenner
224f1d7123 (reload_reg_free_p, case RELOAD_OTHER): Allowed to conflict with
RELOAD_FOR_OTHER_ADDRESS.

From-SVN: r7505
1994-06-16 18:54:00 -04:00
Ian Lance Taylor
787e63c8f3 Correct argument type for ffs in string.h on Alpha OSF/1 V2.0
From-SVN: r7504
1994-06-16 14:59:50 +00:00
Richard Kenner
c85663b1a8 (set_nonvarying_address_components): Rework and also handle an AND
used for non-aligned accesses.

From-SVN: r7503
1994-06-16 06:47:10 -04:00
Michael Meissner
88d0b2b865 Change REG_ALLOC_ORDER so the 386 bootstraps.
From-SVN: r7502
1994-06-16 10:36:20 +00:00
Doug Evans
fa653e400a (TARGET_ENV32): Mark as deprecated.
(-mv9/-mno-v9): Not useable yet.
(-m{int,long}{32,64}): Clean up.
(-mptr{32,64}): Comment out for now.

From-SVN: r7501
1994-06-16 01:07:50 +00:00
Jason Merrill
a646a21183 (warn_if_unused_value): Handle TREE_NO_UNUSED_WARNING for
COMPOUND_EXPRs, too.

From-SVN: r7500
1994-06-16 00:47:03 +00:00
Jason Merrill
248c0f743b (TREE_NO_UNUSED_WARNING): Note that this can be applied
to COMPOUND_EXPRs, too.

From-SVN: r7499
1994-06-16 00:47:03 +00:00
Richard Kenner
b6b12107a9 (divsi3): Fix divide by 2^N with compare RTL.
From-SVN: r7498
1994-06-15 20:40:39 -04:00
Richard Kenner
f63184aca6 (maxsf3, minsf3, maxdf3, mindf3): Fix predicate of define_split.
(muldi3): Fix predicate.
(movdf matcher): Allow update and indexed for lfd instruction.

From-SVN: r7497
1994-06-15 20:35:05 -04:00
Doug Evans
0725d62132 (dbxout_type): Fix call to bzero.
From-SVN: r7496
1994-06-15 23:23:33 +00:00
Richard Kenner
7ac4a26649 (simplify_unary_operation): Fix typo in last change.
From-SVN: r7495
1994-06-15 19:20:18 -04:00
Per Bothner
d0310c5364 (dbxout_range_type): Handle an array range that is neither int nor subrange.
From-SVN: r7494
1994-06-15 15:21:27 -07:00
Mike Stump
f0e01782d7 40th Cygnus<->FSF merge
From-SVN: r7493
1994-06-15 18:30:58 +00:00
Richard Kenner
7dbe2fdcf5 Remove erroneously-installed change.
From-SVN: r7492
1994-06-15 08:22:00 -04:00
Doug Evans
60103a3482 gcc.c: Include multilib.h.
* gcc.c: Include multilib.h.
	(print_multi_lib, print_multi_directory, multilib_select,
	multilib_dir): New static variables.
	(option_map): Added --print-multi-lib and --print-multi-directory.
	(set_spec): Get multilib_select from specs file.
	(process_command): Dump multilib_select into specs file.  Handle
	-print-multi-lib and -print-multi-directory.
	(do_spec_1): Try multilib_dir for %D case.
	(find_file): Try multilib_dir.
	(main): Call set_multilib_dir.  Handle print_multi_lib and
	print_multi_directory.
	(used_arg, set_multilib_dir, print_multilib_info): New functions.

From-SVN: r7491
1994-06-15 08:04:07 +00:00
Doug Evans
f6cdc7ea0f (multilib.h, stmp-multilib, install-multilib): New targets.
(gcc.o): Depend on multilib.h.
(clean): Remove multilib.h and tmpmultilib*.

From-SVN: r7490
1994-06-15 08:03:05 +00:00
Doug Evans
08b28cd3a2 Initial revision
From-SVN: r7489
1994-06-15 08:01:42 +00:00
Doug Evans
5181669e07 Initial revision
From-SVN: r7488
1994-06-15 07:53:49 +00:00
Doug Evans
a8d2b75275 sparc.md (cpu): New attribute.
* sparc/sparc.md (cpu): New attribute.
	(type attribute): New value cmove (conditional moves).
	(cmpdi): New pattern for v9.
	(seq*, sne*): Add v9 support.
	(sgt,slt,sge,sle): Explicitly restrict operand 0 to the integer
	registers.  Try emitting a conditional move for v9.
	(sgtu,sltu,sgeu,sleu): Likewise.
	(comparison insns): Add v9 versions.
	(scc insns): Add DImode versions for v9.
	(beq, bne, bgt, blt, bge, ble): If comparing DImode with 0 on v9,
	use brxx insns.  Use emit_jump_insn, not emit_insn, as the latter
	mishandles brxx insns.
	(branch insns): Update calls to output_cbranch.
	Add v9 versions to support multiple floating point condition code regs.
	Add v9 versions to support brxx insns.
	(lo_sum, high, pic): Add v9 support.
	(symbolic move patterns): Disable for v9.
	(DImode, DFmode, TFmode moves): Add v9 support.
	(conditional move insns): Define for v9.
	(zero_extendqidi2, extendqidi2, zero_extendhidi2, extendhidi2,
	zero_extendsidi2, extendsidi2, floatdisf2, floatdidf2, floatditf2,
	fix_truncsfdi2, fix_truncdfdi2, fix_trunctfdi2, muldi3, divdi3,
	udivdi3, ashldi3, ashrdi3, lshrdi3, ffsdi2): New patterns for v9.
	(bitfield compare insn): Add DImode version for v9.
	(adddi3, subdi3, negdi2, anddi3, iordi3, xordi3, one_cmpldi2,
	mixed mode fp mult insns, negdf2, negtf2, absdf2, abstf2, tablejump,
	call, call_value, untyped_call, untyped_return, indirect_jump,
	flush_register_windows, flush): Add v9 support.
	(ldd peep holes): Disable for v9.
	(set/compare peep hole): Define DImode version for v9.
	(sign extend/compare peep hole): Likewise.
	(return peep holes): Add v9 support.
	(call/jump peep holes): Add v9 support.

From-SVN: r7487
1994-06-15 07:50:13 +00:00
Doug Evans
61a55e8b09 sparc.c (SKIP_CALLERS_UNIMP_P): Define.
* sparc/sparc.c (SKIP_CALLERS_UNIMP_P): Define.
	(sparc_cpu_type, sparc_arg_count, sparc_n_named_args,
	frame_base_offset, fpconv_stack_temp): New globals.
	(leaf_reg_remap): Add additional registers for v9.
	(sparc_override_options, sparc64_init_expanders,
	sparc64_fpconv_stack_temp, intreg_operand, ccfp_reg_operand,
	data_segment_operand, text_segment_operand, v9_regcmp_op,
	arith11_operand, arith10_operand, arith11_double_operand,
	arith10_double_operand, gen_v9_scc, emit_v9_brxx_insn,
	sparc_init_modes, build_big_number, output_v9branch,
	sparc_initialize_trampoline, sparc64_initialize_trampoline):
	New functions.
	(arith_double_operand, gen_compare_reg, finalize_pic,
	emit_move_sequence, mem_aligned_8, output_move_double,
	output_move_quad, output_fp_move_double, output_fp_move_quad,
	output_block_move, save_regs, restore_regs): Add v9 support.
	(sparc_mode_class): New enum.
	(*_MODES): Redefine to use it.
	(hard_32bit_mode_classes): Renamed from hard_regno_mode_ok.
	(hard_regno_mode_classes, hard_64bit_mode_classes,
	sparc_mode_class): New globals.
	(num_gfregs): Renamed from num_fregs.
	(compute_frame_size): Add v9 support.  Simplify calculations.
	(output_function_prologue): Call build_big_number to compute stack
	size in %g1, then adjust %sp.
	Fix saving of call saved registers.  Handle new v9 registers.
	(output_function_epilogue): Fix restoration of call saved registers.
	Handle new v9 registers.
	Use SKIP_CALLERS_UNIMP_P to see if unimp insn is at return address.
	(sparc_builtin_saveregs): Define v9 version.
	(output_cbranch): New argument fp_cond_reg.  All callers changed.
	Add v9 support.
	(output_return): Use SKIP_CALLERS_UNIMP_P.
	(print_operand): New codes '_', '@', 'C', 'D'.
	(output_double_int): Handle LABEL_REF and MINUS for v9.
	Use ASM_LONGLONG if assembler can handle it.

From-SVN: r7486
1994-06-15 07:49:12 +00:00
Doug Evans
7a6cf43910 sparc.h (cpu_type): New enum.
* sparc/sparc.h (cpu_type): New enum.
	(CPP_PREDEFINES,CPP_SPEC): Add v9 support.
	(NO_BUILTIN_PTRDIFF_TYPE, NO_BUILTIN_SIZE_TYPE, MAX_WCHAR_TYPE_SIZE,
	SHORT_TYPE_SIZE, INT_TYPE_SIZE, LONG_TYPE_SIZE, LONG_LONG_TYPE_SIZE,
	FLOAT_TYPE_SIZE, DOUBLE_TYPE_SIZE, MAX_INT_TYPE_SIZE,
	MAX_LONG_TYPE_SIZE): Define.
	(PTRDIFF_TYPE, SIZE_TYPE, BITS_PER_WORD, MAX_BITS_PER_WORD,
	UNITS_PER_WORD, MAX_UNITS_PER_WORD, LONG_DOUBLE_TYPE_SIZE,
	POINTER_SIZE, PARM_BOUNDARY, STACK_BOUNDARY, SPARC_STACK_ALIGN,
	EMPTY_FIELD_BOUNDARY, BIGGEST_ALIGNMENT, FIRST_PSEUDO_REGISTER,
	FIXED_REGISTERS, CALL_USED_REGISTERS, CONDITIONAL_REGISTER_USAGE):
	Add v9 support.
	(sparc_override_options, sparc_code_model): Declare.
	(OVERRIDE_OPTIONS): Call it.
	(MASK_*): Define bits set by target flags.
	(TARGET_*): Use them.
	({MASK,TARGET}_{V9,INT64,LONG64,PTR64,ENV32,STACK_BIAS,
	MEDLOW,MEDANY,FULLANY}): Define.
	(MEDANY_BASE_REG): Define.
	(V9_SWITCHES, TARGET_OPTIONS): Define.
	(TARGET_SWITCHES, TARGET_DEFAULT): Use MASK_*.
	(SPARC_STACK_BIAS, SECONDARY_MEMORY_NEEDED_MODE): Define.
	(SECONDARY_MEMORY_NEEDED): Simplify.
	(hard_regno_mode_class, sparc_mode_class, sparc_cpu_type): Declare.
	(REG_PARM_STACK_SPACE): Do not define if v9.
	(HARD_REGNO_NREGS, HARD_REGNO_MODE_OK, MODES_TIEABLE_P,
	RETURN_IN_MEMORY, STRUCT_VALUE, STRUCT_VALUE_INCOMING, reg_class,
	REG_CLASS_NAMES, REG_CLASS_CONTENTS, REGNO_REG_CLASS, REG_ALLOC_ORDER,
	REG_LEAF_ALLOC_ORDER, LEAF_REGISTERS, REG_CLASS_FROM_LETTER,
	CLASS_MAX_NREGS, STARTING_FRAME_OFFSET, FIRST_PARM_OFFSET,
	BASE_RETURN_VALUE_REG, BASE_OUTGOING_VALUE_REG, BASE_PASSING_ARG_REG,
	BASE_INCOMING_ARG_REG, FUNCTION_ARG_REGNO_P): Add v9 support.
	(sparc_arg_class): New enum (v9 only).
	(sparc_args): New struct to record v9 arguments.
	(CUMULATIVE_ARGS): Use it (v9 only).
	(GET_SPARC_ARG_CLASS): Define.
	(sparc_arg_count, sparc_n_named_args): Declare.
	(PASS_IN_REG_P): Define.
	(ROUND_REG, ROUND_ADVANCE, INIT_CUMULATIVE_ARGS, FUNCTION_ARG_ADVANCE,
	FUNCTION_ARG, FUNCTION_INCOMING_ARG, FUNCTION_ARG_PARTIAL_NREGS,
	FUNCTION_ARG_PASS_BY_REFERENCE, FUNCTION_ARG_CALLEE_COPIES):
	Add v9 support.
	(sparc64_init_expanders, sparc64_fpconv_stack_temp): Declare.
	(INIT_EXPANDERS): Define (v9 only).
	(gen_v9_scc, output_v9branch): Declare.
	(HAVE_conditional_move): Define.
	(FUNCTION_PROFILER, FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER,
	DYNAMIC_CHAIN_ADDRESS, RETURN_ADDR_RTX, REGNO_OK_FOR_FP_P,
	REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P, EXTRA_CONSTRAINT,
	CASE_VECTOR_MODE, Pmode, EXTRA_CC_MODES, EXTRA_CC_NAMES,
	SELECT_CC_MODE, REGISTER_NAMES): Add v9 support.
	(REGNO_OK_FOR_CCFP_P): Define.
	(sparc_initialize_trampoline, sparc64_initialize_trampoline): Declare.
	(INITIALIZE_TRAMPOLINE): Call them.
	(ENCODE_SECTION_INFO): Mark functions in v9.
	(RTX_COSTS): Assume MULT costs the same for v9 as v8.
	(ASM_LONGLONG, ASM_FLOAT): Define.
	(ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT): Add v9 support.

From-SVN: r7485
1994-06-15 07:46:50 +00:00
Doug Evans
df9da8adc8 * sparc/sysv4.h (ASM_OUTPUT_CASE_LABEL): Handle 64 bit pointers.
From-SVN: r7484
1994-06-15 07:45:23 +00:00
Doug Evans
5ca018b4e5 Add v9 support.
From-SVN: r7483
1994-06-15 07:43:31 +00:00
Doug Evans
4505c23636 genconfig.c (main): Allow targets to override HAVE_conditional_move.
* genconfig.c (main): Allow targets to override HAVE_conditional_move.
	* jump.c (jump_optimize): Use it at run-time.

From-SVN: r7482
1994-06-15 07:42:17 +00:00
Doug Evans
a3ae935a82 config.sub (sparc64): New cpu.
* config.sub (sparc64): New cpu.
	(aout, elf): New os's.

From-SVN: r7481
1994-06-15 07:40:43 +00:00
Michael Meissner
4b71cd6ed2 Support 32x32->64 bit multiply
From-SVN: r7480
1994-06-15 02:44:18 +00:00
Torbjorn Granlund
1ecba59dce Trivial simplification of many patterns.
(subsi3): Don't handle CONST_INT for operand 2.
(ashiftrt, op2 > 8): New pattern.
(lshiftrt, op2 > 8): New pattern.

From-SVN: r7479
1994-06-15 02:35:23 +00:00
Torbjorn Granlund
6918e4ae27 (PREDICATE_CODES): Add cmplsrcb_operand.
From-SVN: r7478
1994-06-15 02:32:24 +00:00
Torbjorn Granlund
6f7f03f812 (cmplsrcb_operand): New predicate.
From-SVN: r7477
1994-06-15 02:32:05 +00:00
Torbjorn Granlund
fe006562ba (logical patterns): Tune to give better code for immediate values.
From-SVN: r7476
1994-06-15 02:31:28 +00:00
Torbjorn Granlund
e627f0b601 Revert last patch: (fold, case *_DIV_EXPR): Optimize (x / C << y)...
From-SVN: r7475
1994-06-15 02:29:07 +00:00
Torbjorn Granlund
ebc75e94ec (MAX_SHORTS): Deleted.
From-SVN: r7474
1994-06-15 02:24:47 +00:00
Torbjorn Granlund
37bdb7e314 (encode, decode): Use 4 HOST_WIDE_INTs for encoded value with HOST_BITS_PER_WIDE_INT/2 bits in each.
(encode, decode): Use 4 HOST_WIDE_INTs for encoded
value with HOST_BITS_PER_WIDE_INT/2 bits in each.
(LOWPART, HIGHPART): New macros.
(BASE): Move definition outside of div_and_round_double.
(add_double, mul_double, lshift_double, rshift_double): Rewrite.
(lrotate_double): Use LOWPART, HIGHPART, and BASE.
(rrotate_double): Likewise.
(div_and_round_double): Major changes to code for general case.
Now it actually produces non-garbage results for large operands.
(div_and_round_double): Simplify condition for special code used when
divisor < BASE.
(const_binop): Delete special cases for multiplying by 0, 1, 2, 4, 8.
(fold, case *_DIV_EXPR): Don't try to optimize for overflow.

From-SVN: r7473
1994-06-15 02:23:14 +00:00