Commit Graph

770 Commits

Author SHA1 Message Date
Mark Mitchell
c15398de77 tree.def (TYPE_NONCOPIED_PARTS): Revise documentation to match reality.
* tree.def (TYPE_NONCOPIED_PARTS): Revise documentation to match
        reality.
        * expr.c (init_noncopied_parts): Don't generate initializers for
        parts that don't need them.

From-SVN: r26969
1999-05-17 07:21:14 +00:00
Craig Burley
41af162ca7 disable maintenance of errno
From-SVN: r26897
1999-05-12 00:38:14 -04:00
Mark Mitchell
5c7a310f81 emit-rtl.c (start_sequence): Expand comments.
* emit-rtl.c (start_sequence): Expand comments.
	(start_sequence_for_rtl_expr): Likewise.
	(push_to_sequence): Likewise.
	(end_sequence): Likewise.
	* expr.c (inhibit_defer_pop): Likewise.
	* expr.h (inhibit_defer_pop): Likewise.
	(NO_DEFER_POP): Likewise.
	(OK_DEFER_POP): Likewise.

From-SVN: r26704
1999-04-29 23:01:29 +00:00
Zack Weinberg
76bbe0281d expr.c (emit_move_insn_1): Abort if MODE argument is invalid.
1999-04-27 08:32 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
	* expr.c (emit_move_insn_1): Abort if MODE argument is invalid.
	(compare): Punt if TREE_OPERAND (exp, 0) is an ERROR_MARK.

From-SVN: r26673
1999-04-27 05:34:43 +00:00
Mumit Khan
6a9c4aed1a function.c (put_var_into_stack): Change ptr_mode to Pmode in setup for chkr_set_right_libfunc calls.
* function.c (put_var_into_stack): Change ptr_mode to Pmode
        in setup for chkr_set_right_libfunc calls.
        (assign_params): Likewise.
        * expr.c (emit_push_insn): Change ptr_mode to Pmode in
        setup for chkr_copy_bitmap_libfunc and chkr_set_right_libfunc calls.
        (expand_assignment): Change ptr_mode to Pmode in
        setup for chkr_add_libfunc and chkr_copy_bitmap_libfunc.
        (store_expr): Change ptr_mode to Pmode in
        setup for chkr_add_libfunc and chkr_copy_bitmap_libfunc.
        (expand_expr): Change ptr_mode to Pmode in
        setup for chkr_check_addr_libfunc.
        (expand_builtin): Change ptr_mode to Pmode in
        setup for chkr_check_str_libfunc, chkr_copy_bitmap_libfunc and
        chkr_check_addr_libfunc.
        * calls.c (rtx_for_function_call): Change ptr_mode to Pmode in
        setup for chkr_check_exec_libfunc.
        (expand_call): Change ptr_mode to Pmode in
        setup for chkr_set_right_libfunc.
        (expand_call): Change ptr_mode to Pmode in
        setup for chkr_set_right_libfunc.
        (store_one_arg): Change ptr_mode to Pmode in
        setup for chkr_set_right_libfunc.

Co-Authored-By: Donn Terry <donn@interix.com>

From-SVN: r26664
1999-04-26 16:51:09 -06:00
Donn Terry
ab40f61225 * expr.c (expand_assignment): Improve test for pointer type.
From-SVN: r26634
1999-04-25 18:39:01 -06:00
Donn Terry
6419e5b063 expr.c (expand_assignment): Force pointers to proper mode if POINTERS_EXTEND_UNSIGNED is defined.
* expr.c (expand_assignment): Force pointers to proper mode if
        POINTERS_EXTEND_UNSIGNED is defined.

From-SVN: r26484
1999-04-15 16:52:22 -06:00
Jeffrey A Law
efd07ca794 expr.c (expand_expr, [...]): Do not try to optimize a aggregate address which has VOIDmode.
* expr.c (expand_expr, case ARRAY_REF, COMPONENT_REF, BIT_FIELD_REF):
        Do not try to optimize a aggregate address which has VOIDmode.
        Mirrors March 23 change to expand_assignment.

From-SVN: r26307
1999-04-08 19:35:36 -06:00
Richard Henderson
d22cba0ade expr.c (expand_builtin): Use copy_to_mode_reg; don't force constants into a register.
* expr.c (expand_builtin) [BUILT_IN_RETURN_ADDRESS]: Use
        copy_to_mode_reg; don't force constants into a register.

From-SVN: r26231
1999-04-06 19:14:06 -07:00
Richard Henderson
89c846727b expr.c (expand_builtin_setjmp): Put setjmp return label on nonlocal_goto_handler_labels for flow.
* expr.c (expand_builtin_setjmp): Put setjmp return label on
        nonlocal_goto_handler_labels for flow.

From-SVN: r26225
1999-04-06 15:10:24 -07:00
Michael Hayes
6e01bd94f8 tm.texi (USE_LOAD_POST_DECREMENT, [...]): Document.
* tm.texi (USE_LOAD_POST_DECREMENT, USE_LOAD_PRE_DECREMENT,
	USE_STORE_POST_DECREMENT, USE_STORE_PRE_DECREMENT): Document.
	(USE_LOAD_POST_INCREMENT, USE_LOAD_PRE_INCREMENT,
	USE_STORE_POST_INCREMENT, USE_STORE_PRE_INCREMENT): Fix documentation.
	* rtl.h	(USE_LOAD_POST_DECREMENT, USE_LOAD_PRE_DECREMENT,
	USE_STORE_POST_DECREMENT, USE_STORE_PRE_DECREMENT,
	USE_LOAD_POST_INCREMENT, USE_LOAD_PRE_INCREMENT,
	USE_STORE_POST_INCREMENT, USE_STORE_PRE_INCREMENT): Provide default
	definition.
	* expr.c: (USE_LOAD_POST_INCREMENT, USE_LOAD_PRE_INCREMENT,
	USE_STORE_POST_INCREMENT, USE_STORE_PRE_INCREMENT): Delete default
	definition.

From-SVN: r26134
1999-04-02 15:39:55 +00:00
Jim Wilson
6ab06cbb5b Fix irix6 libstdc++ v3 build failure with complex types.
* expr.c (store_field): When check direct_store, assume all complex
	modes can be directly stored.

From-SVN: r26104
1999-04-01 04:05:24 -08:00
Jeffrey A Law
9a7b9f4f06 expr.c (expand_assignment): Do not try to optimize a aggregate address which has VOIDmode.
* expr.c (expand_assignment): Do not try to optimize a aggregate
        address which has VOIDmode.

From-SVN: r25934
1999-03-23 15:33:35 -07:00
Martin v. Löwis
68557e1473 * expr.c (expand_expr): Handle ERROR_MARK much earlier.
From-SVN: r25864
1999-03-19 14:26:50 +00:00
Kaveh R. Ghazi
91813b2835 Warning fixes:
* calls.c (initialize_argument_information): Mark parameters
        `num_actuals' and `n_named_args' with ATTRIBUTE_UNUSED.
        * dbxout.c (dbxout_start_new_source_file): Likewise for parameter
        `filename'.
        (dbxout_finish): Likewise for parameters `file' and `filename'.
        (dbxout_prepare_symbol): Likewise for parameter `decl'.
        (dbxout_begin_function): Likewise.
        * explow.c (hard_function_value): Likewise for parameter `func'.
        * function.c (locate_and_pad_parm): Likewise for parameter `fndecl'.
        * expmed.c (expand_divmod): Omit unused argument to `expand_abs'.
        * expr.c (expand_expr): Likewise.
        * expr.h (expand_abs): Delete unused argument from prototype.
        * optabs.c (expand_abs): Remove unused parameter `unsignedp'.
        * sdbout.c (sdbout_init): Mark parameter `syms' with ATTRIBUTE_UNUSED.
        (sdbout_end_block): Likewise for parameter `n'.
        * toplev.c (debug_define): Likewise for parameters `lineno' and
        `buffer'.
        (debug_undef): Likewise.
        * varasm.c (named_section): Likewise for parameter 'reloc'.
        (assemble_external): Likewise for parameter `decl'.
        (assemble_alias): Likewise for parameter `target'.

From-SVN: r25858
1999-03-19 08:50:14 +00:00
Jeffrey A Law
6bcd94ae80 expr.c (expand_expr): Allow a CALL_EXPR with a mode wider than MAX_INTEGER_COMPUTATION_MODE.
* expr.c (expand_expr): Allow a CALL_EXPR with a mode wider than
        MAX_INTEGER_COMPUTATION_MODE.

From-SVN: r25714
1999-03-11 17:02:32 -07:00
Per Bothner
b335b813b5 tree.def (TRY_FINALLY_EXPR, [...]): New tree nodes,
h
	* tree.def (TRY_FINALLY_EXPR, GOTO_SUBROUTINE_EXPR):  New tree nodes,
	* expr.c (expand_expr):  Support new tree nodes.

From-SVN: r25308
1999-02-19 03:19:30 -08:00
Jeffrey A Law
c5d5d46141 except.c (start_catch_handler): Use emit_cmp_and_jump_insns.
* except.c (start_catch_handler): Use emit_cmp_and_jump_insns.
        * explow.c (probe_stack_range): Likewise.
        * expmed.c (do_cmp_and_jump): Likewise.
        * expr.c (store_expr, expand_expr, expand_builtin): Likewise.
        (do_tablejump): Likewise.
        * stmt.c (expand_expr_stmt, expand_end_case): Likewise.
        (do_jump_if_equal, emit_case_nodes): Likewise.
        * optabs.c (emit_cmp_and_jump_insns): Clarify comments.  If UNSIGNEDP,
        then convert comparison to an unsigned code before emitting the jump.
        (expand_float, expand_fix): Use emit_cmp_and_jump_insns.

From-SVN: r25205
1999-02-14 13:08:39 -07:00
Richard Henderson
acd693d10c output.h (current_function_has_computed_jump): Rename from current_function_addresses_labels.
* output.h (current_function_has_computed_jump): Rename from
        current_function_addresses_labels.
        * function.h (struct function): Likewise for addresses_labels member.
        * rtl.h (FUNCTION_FLAGS_HAS_COMPUTED_JUMP): Likewise.
        * function.c (current_function_has_computed_jump): Likewise.
        Update all references.
        * integrate.c (function_cannot_inline_p):
        Test current_function_has_computed_jump instead of addresses_labels.
        (initialize_for_inline): Likewise save.
        (output_inline_function): Likewise restore.
        * expr.c (expand_expr): Don't reference addresses_labels variables.
        * stmt.c (expand_computed_goto): Set has_computed_jump.

From-SVN: r25100
1999-02-08 13:39:33 -08:00
Jeffrey A Law
ab87f8c8d1 Merge in gcc2 snapshot 19980929. See gcc/ChangeLog and gcc/FSFChangeLog for
details.

From-SVN: r24879
1999-01-26 18:43:17 -07:00
Andrew MacLeod
15914757c6 * expr.c (emit_push_insn): Fix Dumb Typo.
From-SVN: r24811
1999-01-21 20:50:56 +00:00
Andrew MacLeod
fbe1758db2 expr.c (MOVE_BY_PIECES_P): Define condition for deciding to use move_by_pieces.
* expr.c (MOVE_BY_PIECES_P): Define condition for deciding to use
	move_by_pieces.
	(MOVE_MAX_PIECES): Define maximum number of bytes to move at once.
	(USE_LOAD_POST_INCREMENT, USE_LOAD_PRE_DECREMENT): Define defaults.
	(USE_STORE_POST_INCREMENT, USE_STORE_PRE_DECREMENT): Define defaults.
	(move_by_pieces): Use new macros.
	(emit_block_move): Use new macros.
	(clear_by_pieces): Use new macros.
	(clear_storage): Use new macros.
	(emit_push_insn): Use new macros.
	(expand_expr): Use new macros.
	* config/sh/sh.h (USE_LOAD_POST_INCREMENT, USE_LOAD_PRE_DECREMENT):
	Define.
	(USE_STORE_POST_INCREMENT, USE_STORE_PRE_DECREMENT): Define.
	(MOVE_BY_PIECES_P): Define based on alignment and TARGET_SMALLCODE.
	(MOVE_MAX_PIECES): move 8 bytes on SH4.
	* tm.texi(MOVE_BY_PIECES_P, MOVE_MAX_PIECES, USE_LOAD_POST_INCREMENT,
	USE_LOAD_PRE_DECREMENT, USE_STORE_POST_INCREMENT,
	USE_STORE_PRE_DECREMENT): Describe new macros.

From-SVN: r24801
1999-01-21 11:33:44 +00:00
Richard Henderson
ee5332b81a cse.c (fold_rtx): Revert 29 Dec change.
* cse.c (fold_rtx): Revert 29 Dec change.
        (cse_insn): Revert 12 Jan change.
        * expr.c (expand_builtin): Don't emit CONST around CONSTANT_P_RTX.
        * regclass.c (reg_scan_mark_refs): Revert 29 Dec change.
        * rtl.def: Likewise.
        * rtl.h (CONSTANT_P): Likewise.
        * expr.c (emit_move_insn): Never try to flush CONSTANT_P_RTX
        to memory.
        * recog.c (immediate_operand): Accept CONSTANT_P_RTX.
        * alpha.c (input_operand): Likewise.
        * c4x.c (const_operand): Likewise.
        * explow.c (allocate_dynamic_stack_space): Use register_operand
        instead of arith_operand, which does not exist.
        * 1750a.h: Fix comment closure.
        * a29k.c (a29k_set_memflags): Fix typo in 19 Jan change.
        * arc.md (one_cmplsi2_set_cc_insn): Fix set mode mismatch.
        * arm.h (TARGET_SWITCHES): Fix typo.
        * i370.md (anon mult and div patterns): Fix set mode mismatch.
        * i860.c (output_delayed_branch): Fix operands to constrain_operands.
        (output_delay_insn): Likewise.
        * m88k.md (anon rotate insns): Fix set mode mismatch.
        (anon BLKmode moves): Commonize and fix set mode mismatches.
        * ns32k.md (udivmoddi[shq]i4_internal): Fix mode mismatch.
        * romp.md (movdf): Fix typo.

From-SVN: r24796
1999-01-20 18:21:28 -08:00
Richard Henderson
70f8a7a13f Update comment to match code.
From-SVN: r24785
1999-01-20 01:15:00 -08:00
Richard Henderson
d804ed43d0 expr.c (do_jump_for_compare): Handle conditional branch expanders emitting multiple jump instructions.
* expr.c (do_jump_for_compare): Handle conditional branch expanders
        emitting multiple jump instructions.
        * jump.c (condjump_label): New function.
        * rtl.h (condjump_label): Declare it.

From-SVN: r24773
1999-01-19 13:30:48 -08:00
Richard Henderson
c14c652997 expr.c (emit_move_insn_1): Revert 17 Dec change.
* expr.c (emit_move_insn_1): Revert 17 Dec change.  Don't emit
        clobber during or after reload.

From-SVN: r24772
1999-01-19 13:11:00 -08:00
Mark Mitchell
c6df88cbec rtl.h (rtx_def): Update documentation.
* rtl.h (rtx_def): Update documentation.
	(MEM_IN_STRUCT_P): Likewise.
	(MEM_SCALAR_P): New macro.
	(MEM_COPY_ATTRIBUTES): Likewise.
	(MEM_SET_IN_STRUCT_P): Likewise.
	* rtl.texi (MEM_SCALAR_P): Document.
	* alias.c (canon_rtx): Use MEM_COPY_ATTRIBUTES.
	(fixed_scalar_and_varying_struct_p): New function.  Use
	MEM_SCALAR_P rather than !MEM_IN_STRUCT_P.
	(aliases_everything_p): Likewise.
	(true_dependence): Use them.
	(write_dependence_p): New function, containing code common to
	anti_dependence and output_dependence.
	(anti_dependence): Use it.
	(output_dependence): Likewise.
	* calls.c (save_fixed_argument_area): Don't clear
	MEM_IN_STRUCT_P.
	(expand_call): Use MEM_SET_IN_STRUCT_P.
	(emit_library_call): Don't clear MEM_IN_STRUCT_P.
	(emit_library_call_value): Likewise.
	(store_one_arg): Use MEM_SET_IN_STRUCT_P.
	* combine.c (simplify_rtx): Use MEM_COPY_ATTRIBUTES.
	(make_extraction): Likewise.
	(simplify_shift_const): Likewise.
	(gen_lowpart_for_combine): Likewise.
	* cse.c (gen_lowpart_if_possible): Use MEM_COPY_ATTRIBUTES.
	* emit-rtl.c (operand_subword): Likewise.
	(change_address): Likewise.
	* explow.c (stabilize): Use MEM_COPY_ATTRIBUTES.
	* expr.c (protect_from_queue): Use MEM_COPY_ATTRIBUTES.
	(emit_group_store): Use MEM_SET_IN_STRUCT_P.
	(copy_blkmode_from_reg): Likewise.
	(store_field): Likewise.
	(expand_expr): Remove bogus guesswork setting MEM_IN_STRUCT_P
	heuristically.  Use MEM_SET_IN_STRUCT_P.
	(get_memory_rtx): Likewise.
	* final.c (alter_subreg): Use MEM_COPY_ATTRIBUTES.
	* function.c (assign_stack_temp): Clear MEM_SCALAR_P and
	MEM_ALIAS_SET on newly returned MEMs.
	(assign_temp): Use MEM_SET_IN_STRUCT_P.
	(put_reg_into_stack): Likewise.
	(fixup_var_refs1): Use MEM_COPY_ATTRIBUTES.
	(gen_mem_addressof): Use MEM_SET_IN_STRUCT_P.
	(assign_parms): Likewise.
	(expand_function): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	(copy_rtx_and_substitute): Use MEM_COPY_ATTRIBUTES.
	* loop.c (note_addr_stored): Remove check on MEM_IN_STRUCT_P.
	* optabs.c (gen_move_insn): Use MEM_COPY_ATTRIBUTES.
	* print-rtl.c (print_rtx): Print /f for frame_related.
	* recog.c (validate_replace_rtx_1): Use MEM_COPY_ATTRIBUTES.
	* reload1.c (reload): Copy MEM_SCALAR_P as well.
	* stmt.c (expand_decl): Use MEM_SET_IN_STRUCT_P.
	(expand_anon_union_decl): Use MEM_COPY_ATTRIBUTES.
	* varasm.c (make_decl_rtl): Use MEM_SET_IN_STRUCT_P.
	(output_constant_def): Likewise.
	* a29k.c (a29k_set_memflags_1): Take scalar_p.
	Set MEM_SCALAR_P.
	(a29k_set_memflags): Use it.
	* alpha.c (get_aligned_mem): Use MEM_COPY_ATTRIBUTES.
	* c4x.c (c4x_scan_for_ld): Likewise.
	* h8300.c (fix_bit_operand): Likewise.
	* m88k.c (legitimize_address): Likewise.
	(block_move_loop): Likewise.
	(block_move_no_loop): Likewise.
	(block_move_sequence): Likewise.
	(m88k_builtin_saveregs): Use MEM_SET_IN_STRUCT_P.
	* mips/abi64.h (SETUP_INCOMING_VARARGS): Likewise.
	* rs6000.c (expand_block_move_insn): Use MEM_COPY_ATTRIBUTES.
	* sh.c (sh_builtin_saveregs): Use MEM_SET_IN_STRUCT_P.
	* arm.h (arm_gen_load_multiple): Take scalar_p.
	(arm_store_load_multiple): Likewise.
	* arm.c (arm_gen_load_multiple): Likewise.
	(arm_gen_store_multiple): Likewise.
	(arm_gen_movstrqi): Treat MEM_SCALAR_P like MEM_IN_STRUCT_P.

From-SVN: r24759
1999-01-19 10:32:33 +00:00
Richard Henderson
1f06ee8d0d expr.c (queued_subexp_p): Make public.
* expr.c (queued_subexp_p): Make public.
        * expr.h (queued_subexp_p): Declare it.
        * recog.c (asm_operand_ok): New function.
        (check_asm_operands): Use it.  After reload, use constrain_operands
        instead.
        * recog.h (asm_operand_ok): Declare it.
        * stmt.c (expand_asm_operands): Use it to try harder to make
        asms initially satisfy their constraints.

From-SVN: r24686
1999-01-15 10:43:47 -08:00
Jeff Law
fdf004cfcb Fix copyrights.
From-SVN: r24531
1999-01-06 13:02:36 -07:00
Richard Henderson
44d22bef0a expr.c (expand_builtin): Use value_mode for the return mode.
* expr.c (expand_builtin) [case BUILT_IN_CONSTANT_P]: Use
        value_mode for the return mode.

From-SVN: r24525
1999-01-06 10:51:30 -08:00
Charles M. Hannum
12f06d174c expr.c (store_expr): If the lhs is a memory location pointed to be a postincremented (or...
�
        * expr.c (store_expr): If the lhs is a memory location pointed
        to be a postincremented (or postdecremented) pointer, always
        force the rhs to be evaluated into a pseudo.

From-SVN: r24507
1999-01-05 18:28:56 -07:00
Richard Henderson
185ebd6c71 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>:
* rtl.def (CONSTANT_P_RTX): Clarify commentary.
        * expr.c (expand_builtin, case BUILT_IN_CONSTANT_P): Rework to
        consider constant CONSTRUCTOR constant and to defer some cases
        to cse.
        * cse.c (fold_rtx, case CONST): Add handling for CONSTANT_P_RTX.
        * regclass.c (reg_scan_mark_refs, case CONST): Likewise.
Richard Henderson  <rth@cygnus.com>
        * expr.c (init_expr_once): Kill can_handle_constant_p recognition.
        * cse.c (fold_rtx, case 'x'): Remove standalone CONSTANT_P_RTX code.

From-SVN: r24439
1998-12-29 03:36:22 -08:00
Nick Clifton
b2e7e6fb8a Do not generate CLOBBERs for non-pseudo regs.
From-SVN: r24364
1998-12-17 14:02:32 +00:00
Jeffrey A Law
940da3246d cse.c (fold_rtx): Make autoincrement addressing mode tests be runtime selectable.
* cse.c (fold_rtx): Make autoincrement addressing mode tests be
        runtime selectable.
        * expr.c (move_by_pieces): Similarly.
        (move_by_pieces_1, clear_by_pieces, clear_by_pieces_1): Similarly.
        * flow.c (find_auto_inc): Similarly.
        (try_pre_increment): Similarly.
        * loop.c (strength_reduce): Similarly.
        * regclass.c (auto_inc_dec_reg_p): Similarly.
        * regmove.c (try_auto_increment): Similarly.
        (fixup_match_1): Similarly.
        * rtl.h (HAVE_PRE_INCREMENT): Define if not already defined.
        (HAVE_PRE_DECREMENT): Similarly.
        (HAVE_POST_INCREMENT, HAVE_POST_DECREMENT): Similarly.
        sponding changes to all target header files.

From-SVN: r23837
1998-11-24 16:15:19 -07:00
Bernd Schmidt
c795bca923 expr.c (STACK_BYTES): Delete unused macro.
* expr.c (STACK_BYTES): Delete unused macro.
	* calls.c: Provide default for PREFERRED_STACK_BOUNDARY.
	(STACK_BYTES): Use PREFERRED_STACK_BOUNDARY, not STACK_BOUNDARY.
	(expand_call): Likewise.
	(emit_library_call): Likewise.
	(emit_library_call_value): Likewise.
	* function.c: Provide default for PREFERRED_STACK_BOUNDARY.
	(STACK_BYTES): Use PREFERRED_STACK_BOUNDARY, not STACK_BOUNDARY.
	* explow.c: Provide default for PREFERRED_STACK_BOUNDARY.
	(round_push): Use PREFERRED_STACK_BOUNDARY, not STACK_BOUNDARY.
	(allocate_dynamic_stack_space): Likewise.
	* tm.texi (PREFERRED_STACK_BOUNDARY): Document new macro.
	(STACK_BOUNDARY): Update description to reflect the new situation.

From-SVN: r23730
1998-11-19 15:47:55 -07:00
J"orn Rennecke
f3f2255a8c expr.c (store_expr): Don't generate load-store pair if TEMP is identical (according to ==) with TARGET.
* expr.c (store_expr): Don't generate load-store pair
	if TEMP is identical (according to ==) with TARGET.

From-SVN: r23696
1998-11-18 14:15:03 +00:00
Nick Clifton
2b28d92ef6 Add code written by rth to generate use shifts to perform an extension if no
suitable extend patterns can be found.

From-SVN: r23398
1998-10-28 10:30:46 +00:00
Jason Merrill
fdc46fbe65 expr.c (pending_chain): Move up.
* expr.c (pending_chain): Move up.
	(save_expr_status): Do save pending_chain.
	(restore_expr_status): And restore it.
	* function.h (struct function): Add pending_chain.

From-SVN: r23241
1998-10-22 22:18:53 -04:00
Kaveh R. Ghazi
c84e271261 Warning fixes:
* Makefile.in (gencheck.o): Depend on gansidecl.h.
	* c-common.c (print_char_table): Add missing initializers.
	(scan_char_table): Likewise.
	(time_char_table): Likewise.
	* c-decl.c (c_decode_option): Mark parameter `argc' with
	ATTRIBUTE_UNUSED.
	(declare_parm_level): Mark parameter `definition_flag' with
	ATTRIBUTE_UNUSED.
	* c-lex.c (readescape): Use `(unsigned)1' in shift.
	(yylex): Likewise.  Cast `sizeof' to an (int) when comparing
	against one.
	* calls.c (store_one_arg): Remove unused parameter `fndecl'.  All
	callers changed.
	(emit_call_1): Mark parameters `fndecl' and `funtype' with
	ATTRIBUTE_UNUSED.
	(expand_call): Cast result of MIN() to (unsigned int) when
	comparing against an unsigned value.
	* cccp.c (pcfinclude): Remove unused parameter `limit'.  All
	callers changed.
	(make_definition): Remove unused parameter `op'.  All callers
	changed.
	(create_definition): Cast REST_EXTENSION_LENGTH to (long) when
	comparing against the result of pointer arithmetic.
	* config/mips/mips.h (FUNCTION_ARG_BOUNDARY): Cast to (unsigned)
	when comparing against one.
	* dwarf2out.c (dwarf2out_frame_debug): Cast REGNO() and
 	HARD_FRAME_POINTER_REGNUM to (unsigned) when comparing against
 	one.
	(output_die): Move variable `i' into the scope in which it is
	used.  Change its type to `unsigned'.
	(output_die): Cast the result of `strlen' to (int) when passing it
	to ASM_OUTPUT_ASCII().
	(output_pubnames): Likewise.
	(output_line_info): Likewise.
	* emit-rtl.c (global_rtl): Add missing initializers.
	* explow.c (promote_mode): Mark parameter `for_call' with
	ATTRIBUTE_UNUSED.
	* expmed.c (expand_shift): Cast the result of GET_MODE_BITSIZE to
 	`unsigned HOST_WIDE_INT' when comparing against one.
	(synth_mult): Change type of variable `cost' to int.
	(emit_store_flag): Use `(unsigned HOST_WIDE_INT) 1' in shift.
	* expr.c (copy_blkmode_from_reg): Cast BITS_PER_WORD to (unsigned)
	when comparing against one.
	(get_inner_reference): Change variable `alignment' to unsigned.
	(expand_expr): Cast the result of GET_MODE_ALIGNMENT to (unsigned
	int) when comparing against one.
	(expand_builtin_setjmp): Change type of variable `i' to size_t.
	* fold-const.c (div_and_round_double): Cast BASE to
	(HOST_WIDE_INT) when comparing against one.
	* gencheck.c: Include gansidecl.h.
	(main): Mark parameter `argv' with ATTRIBUTE_UNUSED.
	* optabs.c (gen_cond_trap): Mark parameters `code', `op2' and
	`tcode' with ATTRIBUTE_UNUSED.
	* real.c (edivm): Cast constant value to (unsigned long) in
	expression compared against an unsigned value.
	* stmt.c (expand_return): Cast BITS_PER_WORD to (unsigned) when
	comparing against one.
	(expand_end_case): Cast CASE_VALUES_THRESHOLD to (unsigned int)
	when comparing against one.
	* stor-layout.c (mode_for_size): Cast MAX_FIXED_MODE_SIZE to
	(unsigned int) when comparing against one.  Likewise for
	GET_MODE_BITSIZE.
	(smallest_mode_for_size): Likewise.
	(save_storage_status): Mark parameter `p' with ATTRIBUTE_UNUSED.
	(restore_storage_status): Likewise.
	* toplev.c (debug_args): Add missing initializer.
	(f_options): Spelling correction.  Add missing initializers.
	(documented_lang_options): Likewise.
	(debug_end_source_file): Mark parameter `lineno' with
	ATTRIBUTE_UNUSED.
	* tree.c (valid_machine_attribute): Mark parameters `attr_args',
	`decl' and `type' with ATTRIBUTE_UNUSED.
	* varasm.c (decode_reg_name): Cast `sizeof' expression to (int)
	when comparing against one.
	(assemble_variable): Mark parameter `top_level' with
	ATTRIBUTE_UNUSED.
	(assemble_external_libcall): Mark parameter `fun' with
	ATTRIBUTE_UNUSED.
	(output_constant_pool): Mark parameters `fnname' and `fndecl' with
	ATTRIBUTE_UNUSED.

From-SVN: r23054
1998-10-13 15:25:25 +00:00
Herman A.J. ten Brugge
e1a9b2ab4f expr.c (push_block): Handle targets where the stack grows to higher addresses...
* expr.c (push_block): Handle targets where the stack grows
        to higher addresses, but args grow to lower addresses and
        ACCUMULATE_OUTGOING_ARGS is not defined.

From-SVN: r23046
1998-10-13 04:08:10 -06:00
Ken Raeburn
7d384cc0b3 Fine-grained control of -fcheck-memory-usage with new no_check_memory_usage attribute.
Fine-grained control of -fcheck-memory-usage with new no_check_memory_usage
attribute.  Misc minor bugfixes and tests for it too.

From-SVN: r22983
1998-10-11 02:21:54 +00:00
Jim Wilson
10a9f2beac Fix for irix6 -O0 bug, see testcase gcc.c-torture/compile/981007-1.c.
* expr.c (emit_group_store): Handle a PARALLEL destination.

From-SVN: r22893
1998-10-07 05:12:21 -07:00
Alexandre Petit-Bianco
70e6ca43a3 tree.def (GOTO_EXPR): Modified documentation.
8
	* tree.def (GOTO_EXPR): Modified documentation.
	* expr.c (expand_expr): Expand GOTO_EXPR into a goto or a computed
 	goto.

From-SVN: r22859
1998-10-05 15:36:16 -07:00
Gavin Romig-Koch
c36fce9a42 calls.c (expand_call): Encapsulate code into copy_blkmode_from_reg.
* calls.c (expand_call) : Encapsulate code into
	copy_blkmode_from_reg.
	* expr.c (copy_blkmode_from_reg): New function.
	* expr.h (copy_blkmode_from_reg): New function.
	* integrate.c (function_cannot_inline_p): We can inline
	these now.
	(expand_inline_function): Use copy_blkmode_from_reg
	if needed.  Avoid creating BLKmode REGs.
	(copy_rtx_and_substitute): Don't try to SUBREG a BLKmode
	object.

From-SVN: r22714
1998-10-01 13:00:21 +00:00
Jeffrey A Law
ee06cc21bf expr.c (expand_expr): Handle COMPONENT_REF...
* expr.c (expand_expr): Handle COMPONENT_REF, BIT_FIELD_REF ARRAY_REF
        and INDIRECT_REF in code to check MAX_INTEGER_COMPUTATION_MODE.

From-SVN: r22666
1998-09-30 02:59:18 -06:00
Mark Mitchell
ece320145f c-common.c (c_get_alias_set): Tighten slightly for FUNCTION_TYPEs and ARRAY_TYPEs.
* c-common.c (c_get_alias_set): Tighten slightly for FUNCTION_TYPEs
	and ARRAY_TYPEs.  Tidy up.  Improve support for type-punning.
	* expr.c (store_field): Add alias_set parameter.  Set the
	MEM_ALIAS_SET accordingly, if the target is a MEM.
	(expand_assignment): Use it.
	(store_constructor_field): Pass 0.
	(expand_expr): Likewise.

From-SVN: r22620
1998-09-28 07:44:12 +00:00
J"orn Rennecke
34c7390981 expr.c (store_constructor): When initializing a field that is smaller than a word...
* expr.c (store_constructor): When initializing a field that is smaller
	than a word, at the start of a word, try to widen it to a full word.
	* cse.c (cse_insn): When we are about to change a register,
	remove any invalid references to it.
	(remove_invalid_subreg_refs): New function.
	(mention_regs): Special treatment for SUBREGs.
	(insert_regs): Don't strip SUBREG for call to mention_regs.
	Check if reg_tick needs to be bumped up before that call.
	(lookup_as_function): Try to match known word_mode constants when
	looking for a norrower constant.
	(canon_hash): Special treatment for SUBREGs.

From-SVN: r22567
1998-09-24 10:59:41 +01:00
Richard Henderson
710384268d tree.h (BUILT_IN_CALLER_RETURN_ADDRESS): Unused.
* tree.h (BUILT_IN_CALLER_RETURN_ADDRESS): Unused.  Kill.
	(BUILT_IN_FP, BUILT_IN_SP, BUILT_IN_SET_RETURN_ADDR_REG): Kill.
	(BUILT_IN_EH_STUB_OLD, BUILT_IN_EH_STUB, BUILT_IN_SET_EH_REGS): Kill.
	(BUILT_IN_EH_RETURN, BUILT_IN_DWARF_CFA): New.
	* c-decl.c (init_decl_processing): Update accordingly.
	* expr.c (expand_builtin): Likewise.
	* cp/decl.c (init_decl_processing): Likewise.
	* rtl.h (global_rtl): Add cfa entry.
	(virtual_cfa_rtx, VIRTUAL_CFA_REGNUM): New.
	(LAST_VIRTUAL_REGISTER): Update.
	* emit-rtl.c (global_rtl): Add cfa entry.
	(init_emit): Initialize it.
	* function.c (cfa_offset): New.
	(instantiate_virtual_regs): Initialize it.
	(instantiate_virtual_regs_1): Instantiate virtual_cfa_rtx.
	(expand_function_end): Call expand_eh_return.
	* tm.texi (ARG_POINTER_CFA_OFFSET): New.
	* except.c (current_function_eh_stub_label): Kill.
	(current_function_eh_old_stub_label): Likwise; update all references.
	(expand_builtin_set_return_addr_reg): Kill.
	(expand_builtin_eh_stub_old, expand_builtin_eh_stub): Kill.
	(expand_builtin_set_eh_regs): Kill.
	(eh_regs): Produce a third reg for the actual handler address.
	(eh_return_context, eh_return_stack_adjust): New.
	(eh_return_handler, eh_return_stub_label): New.
	(init_eh_for_function): Initialize them.
	(expand_builtin_eh_return, expand_eh_return): New.
	* except.h: Update prototypes.
	* flow.c (find_basic_blocks_1): Update references to the stub label.
	* function.h (struct function): Kill stub label elements.
	* libgcc2.c (in_reg_window): For REG_SAVED_REG, check that the
	register number is one that would be in the previous window.
	Provide a dummy definition for non-windowed targets.
	(get_reg_addr): New function.
	(get_reg, put_reg, copy_reg): Use it.
	(__throw): Rely on in_reg_window, not INCOMING_REGNO.  Kill stub
	generating code and use __builtin_eh_return.  Use __builtin_dwarf_cfa.
	* alpha.c (alpha_eh_epilogue_sp_ofs): New.
	(alpha_init_expanders): Initialize it.
	(alpha_expand_epilogue): Use it.
	* alpha.h: Declare it.
	* alpha.md (eh_epilogue): New.
	* m68h.h (ARG_POINTER_CFA_OFFSET): New.
	* sparc.h (ARG_POINTER_CFA_OFFSET): New.

From-SVN: r22436
1998-09-15 12:19:12 -07:00
Hans-Peter Nilsson
7e24ffc924 expr.c: Corrected comment about what MOVE_RATIO does.
* expr.c: Corrected comment about what MOVE_RATIO does.
        * config/alpha/alpha.h: Ditto.
        * config/1750a/1750a.h: Ditto.
        * config/clipper/clipper.h: Ditto.
        * config/i386/i386.h: Ditto.

From-SVN: r22339
1998-09-08 16:48:00 -06:00
Hans-Peter Nilsson
9862dea924 expr.c (expand_expr): Change ">" to ">=" making MOVE_RATIO use consistent.
* expr.c (expand_expr): Change ">" to ">=" making MOVE_RATIO use
        consistent.
        * tm.texi (Costs): Say MOVE_RATIO is number of mem-mem move
        *sequences* *below* which scalar moves will be used.

From-SVN: r22107
1998-08-30 13:21:22 -06:00
Alexandre Petit-Bianco
f42e28dd5f tree.def (LABELED_BLOCK_EXPR, [...]): New tree nodes.
�
	* tree.def (LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR): New tree nodes.
  	* tree.h (LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY,
 	EXIT_BLOCK_LABELED_BLOCK, EXIT_BLOCK_RETURN, LOOP_EXPR_BODY): New
 	macros.
	* expr.c (expand_expr): Handle LABELED_BLOCK_EXPR and
 	EXIT_BLOCK_EXPR.

From-SVN: r21897
1998-08-21 12:32:19 -07:00
Jeffrey A Law
52cf711504 expr.c (emit_block_move): Do not call memcpy as a libcall instead build up a CALL_EXPR and call it like...
* expr.c (emit_block_move): Do not call memcpy as a libcall
        instead build up a CALL_EXPR and call it like any other
        function.
        (clear_storage): Similarly for memset.

From-SVN: r21831
1998-08-18 11:49:28 -06:00
Jeffrey A Law
2e245dac40 expr.c (move_by_pieces): No longer static.
* expr.c (move_by_pieces): No longer static.  Remove prototype.
        * rtl.h (move_by_pieces): Add extern prototype.
        * mips.c (expand_block_move): Handle aligned straight line copy by
        calling move_by_pieces.

From-SVN: r21794
1998-08-17 10:37:49 -06:00
Jeff Law
ce3c0b5314 expr.c (expand_expr): Allow assignments from TImode PARM_DECLs and VAR_DECLs.
8
        * expr.c (expand_expr): Allow assignments from TImode PARM_DECLs
        and VAR_DECLs.

From-SVN: r21784
1998-08-17 04:50:00 -06:00
J"orn Rennecke
6036acbbf2 expr.c (store_expr): Don't optimize away load-store pair when either source or destination have a...
* expr.c (store_expr): Don't optimize away load-store pair
	when either source or destination have a side effect.

From-SVN: r21732
1998-08-14 14:58:02 +01:00
Jason Merrill
ff59bfe6b2 expr.c (safe_from_p): Change code to ERROR_MARK only when not accessing nodes.
* expr.c (safe_from_p): Change code to ERROR_MARK only when not
	accessing nodes.
	* toplev.c (display_help): Add braces to shut up warnings.
	* fold-const.c (non_lvalue): Don't deal with null pointer
	constants here.
	(fold, case COMPOUND_EXPR): Wrap a constant 0 in a NOP_EXPR.

From-SVN: r21698
1998-08-13 12:12:55 -04:00
Dave Brolley
74a4fbfcc8 stor-layout.c (layout_type): Handle arrays of bits, for Chill.
Mon Jul 27 17:18:52 1998  Dave Brolley  <brolley@cygnus.com>
	* stor-layout.c (layout_type): Handle arrays of bits, for Chill.
	* expr.c (get_inner_reference): Handle zero-based, unsigned, array
	index conversion.

From-SVN: r21416
1998-07-27 10:37:00 -04:00
Jeffrey A Law
71bca5068d expr.c (check_max_integer_computation_mode): Allow conversions of constant integers to MAX_INTEGER_COMPUTATION_MODE.
* expr.c (check_max_integer_computation_mode): Allow conversions
        of constant integers to MAX_INTEGER_COMPUTATION_MODE.
        (expand_expr): Likewise.

From-SVN: r21349
1998-07-23 06:51:00 -06:00
Alexandre Petit-Bianco
6e7f84a732 expr.c (expand_expr): Expand RETURN_EXPR.
8
	* expr.c (expand_expr): Expand RETURN_EXPR.

From-SVN: r21347
1998-07-23 05:09:39 -07:00
Jeffrey A Law
b5f881570b expr.c (expand_expr): Only set MEM_IN_STRUCT_P if the memory address is not varying for...
* expr.c (expand_expr): Only set MEM_IN_STRUCT_P if the memory address
        is not varying for REFERENCE_TYPE or when we think we might have found
        an optimized access to the first element in an array.

From-SVN: r21099
1998-07-13 03:26:59 -06:00
J"orn Rennecke
41b083c42e expr.c (emit_queue): If emitting a SEQUENCE, set QUEUED_INSN to the first insn of the sequence.
* expr.c (emit_queue): If emitting a SEQUENCE, set QUEUED_INSN
	to the first insn of the sequence.

From-SVN: r20997
1998-07-07 14:26:49 +01:00
Richard Henderson
aac5cc1620 expr.c (emit_group_load, [...]): Rewrite considering the size and alignment of the structure being manipulated.
* expr.c (emit_group_load, emit_group_store): Rewrite considering
        the size and alignment of the structure being manipulated.
        * expr.c, calls.c, function.c: Update all callers.
        * expr.h: Update prototypes.
        * cse.c (invalidate): Cope with parallels.

From-SVN: r20867
1998-06-30 22:10:51 -07:00
Richard Henderson
822a3443ec expr.c (expand_assignment, [...]): Use convert_memory_address instead of convert_to_mode when possible.
* expr.c (expand_assignment, store_constructor, expand_expr): Use
        convert_memory_address instead of convert_to_mode when possible.

From-SVN: r20865
1998-06-30 21:13:55 -07:00
Richard Henderson
cff48d8f76 rtl.def (CONSTANT_P_RTX): New.
* rtl.def (CONSTANT_P_RTX): New.
        * rtl.h (CONSTANT_P): Recognize it.
        * cse.c (fold_rtx): Eliminate it.
        * expr.c (can_handle_constant_p): New variable.
        (init_expr_once): Initialize it.
        (expand_builtin): Generate CONSTANT_P_RTX if the expression is not
        immediately recognizable as a constant.

From-SVN: r20846
1998-06-30 09:19:11 -07:00
Jeff Law
9ec36da574 * Merge from gcc2 June 9, 1998 snapshot. See ChangeLog.13 for
details.

From-SVN: r20808
1998-06-29 15:40:49 -06:00
Kaveh R. Ghazi
4f70758f37 Warning fixes:
* Makefile.in (fix-header): Don't needlessly depend on cpperror.o.
        * alias.c (CHECK_ALIAS_SETS_FOR_CONSISTENCY): Cast expansion to
        void since it is evaluated in a comma list.
        * mips.h (ASM_GENERATE_INTERNAL_LABEL): Always sprintf `NUM'
        argument as a long and cast `NUM' to long to ensure it is of the
        proper width.  Wrap macro arguments in parens when they appear in
        the expansion.
        * sol2.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
        * sparc.h (ASM_GENERATE_INTERNAL_LABEL): Likewise.
        (ASM_DECLARE_RESULT): Fix fprintf format specifier to match
        function argument return type.
        (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_FP_P,
        REGNO_OK_FOR_CCFP_P): Use `(unsigned)' not `U'.
        * cpplib.c (cpp_message_from_errno): Remove unneeded argument to
        cpp_message.
        * dbxout.c: Fix the comments after an #endif to reflect the actual
        condition tested in the preceding #if.
        * except.c (find_all_handler_type_matches): Switch to old-style
        function definition.
        * expr.c (expand_builtin): Remove unused variable `type' twice.
        * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Cast -1 before comparing it
        to an unsigned long.
        * haifa-sched.c (print_insn_chain): Remove unused function.
        * objc/objc-act.c (build_msg_pool_reference): Hide prototype and
        definition.
        * toplev.c: When testing whether to include dbxout.h, also include
        it when XCOFF_DEBUGGING_INFO is defined.
        * unroll.c (unroll_loop): Add parentheses around assignment used
        as truth value.

From-SVN: r20801
1998-06-29 17:36:07 +00:00
Mark Mitchell
41472af877 invoke.texi (-fstrict-aliasing): Document.
* invoke.texi (-fstrict-aliasing): Document.
	* rtl.texi (MEM_ALIAS_SET): Document.
	* flags.h (flag_strict_aliasing): Declare.
	* toplev.c (flag_strict_aliasing): Define.
	(f_options): Add -strict-aliasing.
	(main): Set flag_strict_aliasing if -O2 or higher.
	* tree.h (tree_type): Add alias_set field.
	(TYPE_ALIAS_SET): New macro.
	(TYPE_ALIAS_SET_KNOWN_P): Likewise.
	(get_alias_set): Declare.
	* tree.c (lang_get_alias_set): Define.
	(make_node): Initialize TYPE_ALIAS_SET.
	(get_alias_set): New function.
	* print-tree.c (print_node): Dump the alias set for a type.
	* c-tree.h (c_get_alias_set): Declare.
	* c-common.c (c_get_alias_set): New function.
	* c-decl.c (init_decl_processing): Set lang_get_alias_set.
	* expr.c (protect_from_queue): Propogage alias sets.
	(expand_assignment): Calculate alias set for new MEMs.
	(expand_expr): Likewise.
	* function.c (put_var_into_stack): Likewise.
	(put_reg_into_stack): Likewise.
	(gen_mem_addressof): Likewise.
	(assign_parms): Likewise.
	* stmt.c (expand_decl): Likewise.
	* varasm.c (make_decl_rtl): Eliminate redundant clearing of
	DECL_RTL.  Calculate alias set for new MEMs.
	* rtl.def (REG): Add dummy operand.
	(MEM): Add extra operand to store the MEM_ALIAS_SET.
	* rtl.h (MEM_ALIAS_SET): New macro.
	(gen_rtx_MEM): Declare.
	* emit-rtl.c (gen_rtx_MEM): New function.
	* gengenrtl.c (sepcial_rtx): Make MEMs special.
	* alias.c (CHECK_ALIAS_SETS_FOR_CONSISTENCY): New macro.
	(DIFFERENT_ALIAS_SETS_P): Likewise.
	(canon_rtx): Propogate the alias set to the new MEM.
	(true_dependence): Check the alias sets.
	(anti_dependence): Likewise.
	(output_dependence): Likewise.
	* explow.c (stabilize): Progoate alias sets.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	* final.c (alter_subreg): Make sure not to leave MEM_IN_STRUCT_P
	in an unpredictable state.  Propogate alias sets.
	* reload1.c (reload): Clear MEM_ALIAS_SET for new MEMs about which
	we have no alias information.

From-SVN: r20719
1998-06-25 15:14:41 +00:00
Herman A.J. ten Brugge
8975220280 expr.c (expand_assignment): Rework address calculation for structure field members to expose more invariant...
* expr.c (expand_assignment): Rework address calculation for structure
        field members to expose more invariant computations to the loop
        optimizer.
        (expand_expr): Likewise.

From-SVN: r20705
1998-06-24 16:40:29 -06:00
John Carr
9e6a570365 optabs.c: Use gen_rtx_FOO (...) instead of gen_rtx (FOO, ...).
* optabs.c: Use gen_rtx_FOO (...) instead of gen_rtx (FOO, ...).
	* expr.c: Likewise.
	* explow.c: Likewise.
	* combine.c: Likewise.
	* reload1.c: Likewise.
	* gcse.c: Likewise.

From-SVN: r20701
1998-06-24 14:49:51 +00:00
John Carr
55a6ba9ff3 expr.c (get_memory_rtx): New function.
* expr.c (get_memory_rtx): New function.
	(expand_builtin): Call get_memory_rtx for MEM arguments to builtin
	string functions.
	* expmed.c (init_expmed): Initialize all elements of *_cost arrays.

From-SVN: r20700
1998-06-24 13:32:56 +00:00
H.J. Lu
0d091530be expr.c (do_jump_by_parts_greater_rtx): Removed.
* expr.c (do_jump_by_parts_greater_rtx): Removed.
	(truthvalue_conversion): Likewise.

From-SVN: r20611
1998-06-19 16:06:11 -06:00
John Carr
e0cd077072 haifa-sched.c (haifa_classify_insn): TRAP_IF is risky.
* haifa-sched.c (haifa_classify_insn): TRAP_IF is risky.
	(sched_analyze_2): Allow scheduling TRAP_IF.
	* reorg.c (mark_referenced_resources): Examine operands of TRAP_IF.
	* rtl.h (TRAP_CODE): New macro.
	* rtl.def (TRAP_IF): Change second operand type to rtx.
	* optabs.c (gen_cond_trap): New function.
	(init_traps): New function.
	(init_optabs): Call init_traps.
	* expr.h: Declare gen_cond_trap.
	* jump.c (jump_optimize): Optimize jumps to and around traps.
	* sparc.md: Define trap instructions.
	* rs6000.md: Define trap instructions.
	* rs6000.c (print_operand): New code 'V' for trap condition.
	(trap_comparison_operator): New function.
	* m88k.md: Update use of TRAP_IF.
	* tree.h (enum built_in_function): New function code BUILT_IN_TRAP.
	* c-decl.c (init_decl_processing): New builtin __builtin_trap.
	* expr.c (expand_builtin): Handle BUILT_IN_TRAP.
	* expr.c (expand_builtin): Error if __builtin_longjmp second argument
	is not 1.

From-SVN: r20543
1998-06-17 16:14:09 +00:00
Jeffrey A Law
dbecbbe48a expr.c (check_max_integer_computation_mode): New function.
* expr.c (check_max_integer_computation_mode): New function.
        (expand_expr): Avoid integer computations in modes wider than
        MAX_INTEGER_COMPUTATION_MODE.
        * fold-const.c (fold): Likewise.
        * tree.h (check_max_integer_computation_mode): Declare.
        * tm.texi (MAX_INTEGER_COMPUTATION_MODE): Document it.

From-SVN: r20538
1998-06-17 05:44:02 -06:00
Andreas Schwab
8d62b411cf expr.c (do_jump, [...]): When comparing complex prevent operands from being evaluated twice.
* expr.c (do_jump, case EQ_EXPR, NE_EXPR): When comparing complex
	prevent operands from being evaluated twice.

From-SVN: r20440
1998-06-12 01:26:05 +00:00
Jim Wilson
3e2b9a3d25 Fix build failure when pointers smaller than integers.
* expr.c (expand_builtin_setjmp): Store const1_rtx in target.
	(expand_builtin_longjmp): Abort if value isn't const1_rtx.
	Delete code storing value in static_chain_rtx.
	(expand_builtin, case BUILT_IN_LONGJMP): Pass NULL_RTX for target
	to second expand_expr call.

From-SVN: r20418
1998-06-10 07:55:48 -07:00
Andrew MacLeod
a1622f838f [multiple changes]
Thu Jun  8 14:16:15 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
	* eh-common.h: Remove NEW_EH_MODEL compile time flag, and replace with
	flag_new_exceptions runtime flag.
	(struct old_exception_table): New struct which represents what
	the exception table looks like without the new model.
	(NEW_EH_RUNTIME): New value used as a tag in the exception table to
	flag that this is a new style table.
	* except.h: Remove compile time flag NEW_EH_MODEL.
	(expand_builtin_eh_stub_old): New prototype.
	* tree.h (enum built_in_function): Add BUILT_IN_EH_STUB_OLD.
	* expr.c (expand_builtin): New builtin func BUILT_IN_EH_STUB_OLD.
	* c-decl.c (init_decl_processing): Add new builtin function
	__builtin_eh_stub_old.
	* final.c (final_scan_insn): Replace compile time flag NEW_EH_MODEL.
	* flags.h (flag_new_exceptions): New runtime flag.
	* toplev.c (flag_new_exceptions): Initialize default to 0,
	-fnew-exceptions sets to 1.
	* except.c (output_exception_table_entry): Output New style exception
	identifier into table, and replace compile time flag NEW_EH_MODEL
	with runtime flag flag_new_exceptions.
	(output_exception_table): Replace compile time flag NEW_EH_MODEL.
	(expand_builtin_eh_stub_old): Duplicates original functionality of
	expand_builtin_eh_stub.
	(expand_builtin_eh_stub): Replace compile time flag NEW_EH_MODEL.
	* libgcc2.c (find_exception_handler): Remove NEW_EH_MODEL #ifdefs.
	(old_find_exception_handler): New func, same as find_exception_handler
	except it works on the old style exception table.
	(__throw): Replace NEW_EH_MODEL. Detect new model based on presence
	of identifier in the exception table, and call appropriate routines.
1998-06-08  Andrew MacLeod  <amacleod@cygnus.com>
	* except.c (init_exception_processing): Remove NEW_EH_MODEL compile
	time flag.  Call __cp_eh_info instead of __cp_exception_info.
	* exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag.
	(__cp_exception_info): Return offset into cp_eh_info structure to
	match what use to be the start of this structure.
	(__cp_eh_info): New function to return a pointer to cp_eh_info struct.
	(__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL
	compile time flag.
	(__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call
	__cp_eh_info instead of __cp_exception_info.

From-SVN: r20336
1998-06-08 12:43:28 +00:00
Richard Henderson
8b015896c2 expr.c (force_operand): Detect PIC address loads before splitting arithmetic.
* expr.c (force_operand): Detect PIC address loads before
splitting arithmetic.

From-SVN: r20331
1998-06-08 03:44:01 -07:00
David Edelsohn
a260abc996 tree.c (get_inner_array_type): New function.
Thu Jun  4 14:35:27 1998  David Edelsohn  <edelsohn@mhpcc.edu>
	* tree.c (get_inner_array_type): New function.
	* tree.h (get_inner_array_type): Prototype.
	* expr.h (STACK_SAVEAREA_MODE): New macro.
	* expr.c (expand_builtin_setjmp): Initialize sa_mode using
	STACK_SAVEAREA_MODE.
	(expand_builtin_longjmp): Likewise.
	* explow.c (emit_stack_save): Likewise.
	(allocate_dynamic_stack_space): Use Pmode not insn_operand_mode.
	* rs6000/aix41.h (ASM_CPU_SPEC): Define relative to ASM_DEFAULT_SPEC.
	(CPP_CPU_SPEC): Define relative to CPU_DEFAULT_SPEC.
	* rs6000/aix43.h: New file.
	* rs6000/t-aix43: New file.
	* rs6000/x-aix41: New file.
	* rs6000/x-aix43: New file.
	* configure.in (rs6000-ibm-aix*): Use them.
	* rs6000/powerpc.h: Delete.
	* rs6000/sysv4.h: Move necessary powerpc.h definitions to here.
	* rs6000/netware.h: and here.
	* rs6000/win-nt.h: and here.
	* rs6000/rs6000.c (processor_target_table, 620): Do not affect
	MASK_POWERPC64.
	(rs6000_override_options): Ignore flag_pic for AIX.
	(rs6000_immed_double_const): Delete.
	(u_short_cint_operand): Don't assume 32-bit CONST_INT.
	(reg_or_u_short_operand): Don't assume 32-bit CONST_INT.
	(num_insns_constant): mask64_operand() is 2 insns.
	(logical_operand): Don't assume 32-bit CONST_INT.
	(non_logical_cint_operand): Don't assume 32-bit CONST_INT.
	(easy_fp_constant): Any CONST_DOUBLE_HIGH is okay for 64-bit.
	(mask_constant): HOST_WIDE_INT parameter.
	(non_and_cint_operand): Delete.
	(mask64_operand): New function.
	(and64_operand): New function.
	(function_arg_advance): DImode arguments do not need special
	alignment when 64-bit.
	(function_arg): Likewise.
	(setup_incoming_varargs): Reverse reg_size assignment.
	(print_operand): HOST_WIDE_INT second parameter.
	(print_operand, 'B'): New case.
	(print_operand, 'M'): Fix typo in lossage string.
	(print_operandm 'S'): New case.
	(rs6000_stack_info): Reverse reg_size assignment.  Use total_raw_size
	to compute AIX push_p.  Use reg_size to compute {cr,lr}_save_offset.
	(rs6000_output_load_toc_table): Reverse init_ptr assignment.  Use
	TARGET_64BIT not TARGET_POWERPC64.  Convert fprintf to fputs.
	Load GOT highpart, don't add it.  Add lowpart with {cal|la}.
	(rs6000_allocate_stack_space): Use {cal|la}.
	(output_epilog): Use {cal|la}
	(output_function_profiler): Add call glue to mcount call.
	Load GOT highpart, don't add it.  Add lowpart with {cal|la}.
	* rs6000/rs6000.h (TARGET_SWITCHES): Add powerpc64.
	(STACK_BOUNDARY): Depend on TARGET_32BIT.
	(ADJUST_FIELD_ALIGN): Calculate array alignment using innermost type.
	(CONST_OK_FOR_LETTER_P): Don't assume 32-bit CONST_INT.
	(EXTRA_CONSTRAINTS): Remove NT 'S' and 'T'.  Replace 'S' with
	64-bit mask operand.
	(RS6000_SAVE_TOC): Depend on TARGET_32BIT.
	(STACK_SAVEAREA_MODE): New macro.
	(LEGITIMATE_CONSTANT_P): DImode okay for 64bit.
	(LEGITIMIZE_RELOAD_ADDRESS): New macro.
	(RTX_COSTS, AND/IOR/XOR): Reflect current machine description.
	(ASM_FILE_START): Emit 64-bit ABI directive.
	(ASM_DECLARE_FUNCTION_NAME): Align CSECT on doubleword in 64-bit mode.
	(ASM_OUTPUT_SPECIAL_POOL_ENTRY): DImode okay for 64-bit.
	(PREDICATE_CODES): Add "and64_operand" and "mask64_operand".
	Delete "non_and_cint_operand".  "input_operand" includes CONST_DOUBLE.
	* rs6000/rs6000.md (iorsi3, xorsi3): Use HOST_WIDE_INT for mask.
	Restore define_splits.
	(floatsidf2, floatunssidf2): Remove !TARGET_POWERPC64 final constraint.
	(floatsidf2_internal, floatunssidf2_internal2): Likewise.
	Do not specify base register operand mode.
	(floatsidf2_loadaddr): Do not specify base register operand mode.
	(floatsidf2_store1, floatsidf2_store2): Operand 1 must be base
	register; do not specify mode.  Remove !TARGET_POWERPC64 final
	constraint.
	(floatsidf2_load): Do not specify base register operand mode.  Remove
	!TARGET_POWERPC64 final constraint.
	(fix_truncdfsi2_internal, fix_truncdfsi2_{store,load}): Do not specify
	base register operand mode.
	(adddi3): Split large constants early.
	(absdi3): Shift by 63, not 31.
	(*mulsidi3_ppc64): New pattern.
	(rotldi3): Add masking combiner patterns.
	(anddi3): Add rldic{r,l} masking.  Remove split of large constants
	because PPC insns zero-extend.
	(iordi3, xordi3): Split large constants early.
	(movsi matcher): Remove S and T constraints.
	(movsf const_double): create SImode constant from TARGET_DOUBLE.
	(movdf_hardfloat32): Add default abort() case.
	(movdf easy_fp_const): create DImode constant from TARGET_DOUBLE.
	(movdi): Remove 64-bit constant generator.  Try to convert
	CONST_DOUBLE to CONST_INT.  Handle TOC memory constants.
	(movdi_32): Add default abort() case.
	(movdi_64): Add numerous ways to split 64-bit constants.
	Make catch-all define_split more optimal and never FAIL.
	(movti_ppc64): Add default abort() case.
	(allocate_stack): Remove operand modes.  Use Pmode.
	(restore_stack_block): Remove operand modes.  Generate Pmode
	temporary.
	(save_stack_nonlocal, restore_stack_nonlocal):  Generate Pmode
	temporary.  Save area is double Pmode.
	(call_indirect_aix64, call_value_indirect_aix64): New patterns.
	(call, call_value): Do not specify address operand mode.  Choose
	appropriate AIX ABI.
	(*call_local64, *ret_call_local64): New patterns.
	(*call_nonlocal_aix64, *ret_call_nonlocal_aix64): New patterns.
	(*ret_call_nonlocal_aix32): Use call_value_indirect for REG.
	(compare): Materialize DImode truthvalues.

From-SVN: r20229
1998-06-04 07:47:15 -04:00
Craig Burley
ff439b5fee expr.c (safe_from_p): Avoid combinatorial explosion over duplicate SAVE_EXPRs by ensuring we never...
* expr.c (safe_from_p): Avoid combinatorial explosion
        over duplicate SAVE_EXPRs by ensuring we never recurse
        on one that has already been visited.

From-SVN: r20214
1998-06-03 18:30:40 -06:00
Richard Henderson
f0348c2524 expr.c (store_expr): Revert stray patch associated with 1998-05-23 commit.
* expr.c (store_expr): Revert stray patch associated with
	1998-05-23 commit.

From-SVN: r20201
1998-06-02 15:48:51 -07:00
Bernd Schmidt
2638126a5d expr.c (emit_move_insn_1): When moving complex values in several steps...
* expr.c (emit_move_insn_1): When moving complex values in several
        steps, emit a CLOBBER to show the destination dies.
Re-add patch.

From-SVN: r20195
1998-06-02 15:30:26 -06:00
Jeffrey A Law
6c8538ccb1 expr.c (expand_expr, [...]): Handle taking the address of an ADDRESSOF rtx.
* expr.c (expand_expr, case ADDR_EXPR): Handle taking the
        address of an ADDRESSOF rtx.

From-SVN: r20193
1998-06-02 15:16:10 -06:00
Mike Stump
0bc02db4e6 expr.c (expand_builtin_setjmp): Handle BUILTIN_SETJMP_FRAME_VALUE.
* expr.c (expand_builtin_setjmp): Handle BUILTIN_SETJMP_FRAME_VALUE.
        * i960.h (SETUP_FRAME_ADDRESSES, BUILTIN_SETJMP_FRAME_VALUE): Define.
        * i960.md (ret, flush_register_windows): Define.
        (nonlocal_goto): Likewise.  Nested function nonlocal gotos don't
        work yet.
        * tm.texi (BUILTIN_SETJMP_FRAME_VALUE): Document new macro.

From-SVN: r20192
1998-06-02 14:11:21 -06:00
Richard Henderson
bd070e1aa9 expr.c (expand_expr): For {BITFIELD,COMPONENT,ARRAY}_REF...
* expr.c (expand_expr): For {BITFIELD,COMPONENT,ARRAY}_REF, if the
offset's mode is not ptr_mode, convert it.

From-SVN: r19965
1998-05-22 16:03:25 -07:00
Kaveh R. Ghazi
487a6e06ce Warning Fixes:
* Makefile.in (print-rtl.o): Depend on bitmap.h.
        (dbxout.o): Depend on toplev.h.
        ($(SCHED_PREFIX)sched.o): Likewise.
        ($(out_object_file)): Likewise for system.h and toplev.h.
        (cppmain.o): Depend on gansidecl.h.
        (cpplib.o): Likewise.
        (cpperror.o): Likewise.
        (cppexp.o): Likewise.
        (cpphash.o): Likewise.
        (cppalloc.o): Likewise.
        (fix-header.o): Depend on cpplib.h and cpphash.h.
        (scan-decls.o): Depend on gansidecl.h.
        * basic-block.h (free_regset_vector): Add prototype.
        * cccp.c (check_precompiled): Mark parameter `fname' with
        ATTRIBUTE_UNUSED.
        (do_assert): Likewise for `op' and `keyword'.
        (do_unassert): Likewise.
        (do_line): Likewise for `keyword'.
        (do_error): Likewise for `op' and `keyword'.
        (do_warning): Likewise.
        (do_ident): Likewise for `keyword'.
        (do_pragma): Likewise for `limit', `op' and `keyword'.
        (do_sccs): Likewise.
        (do_if): Likewise for `keyword'.
        (do_elif): Likewise.
        (do_else): Likewise.
        (do_endif): Likewise.
        * collect2.c (getenv): Remove redundant prototype.
        (collect_exit, collect_execute, dump_file): Likewise.
        (dump_list): Wrap prototype and definition in COLLECT_EXPORT_LIST.
        (dump_prefix_list): Hide prototype and definition.
        * sparc.c: Include toplev.h.
        (intreg_operand): Mark parameter `mode' with ATTRIBUTE_UNUSED.
        (symbolic_memory_operand): Likewise.
        (sp64_medium_pic_operand): Likewise.
        (data_segment_operand): Likewise.
        (text_segment_operand): Likewise.
        (splittable_symbolic_memory_operand): Likewise.
        (splittable_immediate_memory_operand): Likewise.
        (eq_or_neq): Likewise.
        (normal_comp_operator): Likewise.
        (noov_compare_op): Likewise.
        (v9_regcmp_op): Likewise.
        (v8plus_regcmp_op): Likewise.
        (extend_op): Likewise.
        (cc_arithop): Likewise.
        (cc_arithopn): Likewise.
        (small_int): Likewise.
        (uns_small_int): Likewise.
        (clobbered_register): Likewise.
        (legitimize_pic_address): Likewise.
        (delay_operand): Likewise.
        (sparc_builtin_saveregs): Remove unused variable `stdarg'.
        * sparc.h (order_regs_for_local_alloc, eligible_for_return_delay,
        sparc_issue_rate, v8plus_regcmp_p): Add prototypes.
        * sparc.md (cmpdi_v8plus): Add abort for default case in switch.
        * cppalloc.c: Include gansidecl.h.
        * cpperror.c: Include stdarg.h/varargs.h and gansidecl.h.
        (cpp_file_line_for_message): Mark parameter `pfile' with
        ATTRIBUTE_UNUSED.
        (v_cpp_message): New function.
        (cpp_message): Use it.  Also convert to variable arguments.
        (cpp_fatal): Likewise.
        (cpp_pfatal_with_name): Constify parameter `name'.
        * cppexp.c: Move gansidecl.h before cpplib.h.
        * cpphash.c: Likewise.
        * cpphash.h (hashf, delete_macro): Add prototypes.
        * cpplib.c: Include stdarg.h/varargs.h and move gansidecl.h before
        cpplib.h.  Don't include errno.h.
        (update_path): Add arguments to prototype.
        (cpp_fatal, cpp_file_line_for_message, cpp_message, delete_macro,
        cpp_print_containing_files): Remove redundant prototypes.
        (cpp_hash_cleanup, add_import, append_include_chain,
        make_assertion, path_include, initialize_builtins,
        initialize_char_syntax, finclude, validate_else, comp_def_part,
        lookup_import, redundant_include_p, is_system_include,
        read_name_map, read_filename_string, open_include_file,
        check_macro_name, compare_defs, compare_token_lists,
        eval_if_expression, change_newlines): Add prototype arguments.
        (hashf): Remove redundant prototype.
        (read_token_list, free_token_list, safe_read, xcalloc, savestring,
        conditional_skip, skip_if_group): Add prototype arguments.
        (fdopen): Remove redundant prototype.
        (do_define, do_line, do_include, do_undef, do_error, do_pragma,
        do_ident, do_if, do_xifdef, do_else, do_elif, do_endif, do_sccs,
        do_once, do_assert, do_unassert, do_warning): Add prototype arguments.
        (struct directive): Add prototype arguments to function pointer
        member `func'.
        (handle_directive): Add missing arguments to call to `do_line'.
        (do_include): Mark parameters `unused1' and `unused2' with
        ATTRIBUTE_UNUSED.
        (do_line): Likewise for `keyword' and new parameters `unused1' and
        `unused2'.
        (do_error): Likewise for `keyword'.
        (do_warning): Likewise.  Also add missing argument `pfile' in call
        to cpp_pedwarn.
        (do_once): Mark parameter `keyword', `unused1' and `unused2' with
        ATTRIBUTE_UNUSED.
        (do_ident): Likewise for `keyword', `buf' and `limit'.
        (do_pragma): Likewise.  Also add missing arguments in call to do_once.
        (do_sccs): Mark parameter `keyword', `buf' and `limit' with
        ATTRIBUTE_UNUSED.
        (do_if): Likewise for `keyword'.
        (do_elif): Likewise.
        (eval_if_expression): Likewise for `buf' and `length'.
        (do_xifdef): Likewise for `unused1' and `unused2'.
        (do_else): Likewise for `keyword', `buf' and `limit'.
        (do_endif): Likewise.
        (parse_name): Add missing argument `pfile' in call to cpp_pedwarn.
        (cpp_handle_options): Remove superfluous NULL argument in call to
        cpp_fatal.
        (cpp_handle_options): Likewise.
        (do_assert): Mark parameter `keyword', `buf' and `limit' with
        ATTRIBUTE_UNUSED.
        (do_unassert): Likewise.
        (cpp_print_file_and_line): Add missing argument `pfile' in call to
        cpp_file_line_for_message.
        (v_cpp_error): New function.
        (cpp_error): Use it. Also accept variable arguments.
        (v_cpp_warning): New function.
        (cpp_warning): Use it. Also accept variable arguments.
        (cpp_pedwarn): Accept variable arguments.
        (v_cpp_error_with_line): New function
        (cpp_error_with_line): Use it.  Accept variable arguments.
        (v_cpp_warning_with_line): New function.
        (cpp_warning_with_line): Use it.  Accept variable arguments.  Hide
        definition.
        (cpp_pedwarn_with_line): Accept variable arguments.
        (cpp_pedwarn_with_file_and_line): Likewise.
        (cpp_error_from_errno): Constify parameter `name'.  Add missing
        argument `pfile' in call to cpp_file_line_for_message.
        (cpp_perror_with_name): Constify parameter `name'.
        * cpplib.h: Define PARAMS() in terms of PROTO().
        (fatal): Remove redundant prototype.
        (cpp_error, cpp_warning, cpp_pedwarn, cpp_error_with_line,
        cpp_pedwarn_with_line, cpp_pedwarn_with_file_and_line,
        cpp_error_from_errno, cpp_perror_with_name, cpp_pfatal_with_name,
        cpp_fatal, cpp_message, cpp_pfatal_with_name,
        cpp_file_line_for_message, cpp_print_containing_files): Add
        arguments to prototypes.
        (scan_decls, cpp_finish): Add prototypes.
        * cppmain.c: Include gansidecl.h.
        (main): Remove unused variable `i'.
        * dbxout.c: Include toplev.h.
        * demangle.h (do_tlink, collect_execute, collect_exit,
        collect_wait, dump_file, file_exists): Add prototype.
        * dwarf2out.c (dwarf_type_encoding_name, decl_start_label): Hide
        prototype and definition.
        (gen_unspecified_parameters_die): Don't assign results of call to
        function new_die() to unused variable `parm_die'.
        (dwarf2out_line): Mark parameter `filename' with ATTRIBUTE_UNUSED.
        (dwarf2out_define): Likewise for `lineno' and `buffer'.
        * dwarfout.c (output_unsigned_leb128, output_signed_leb128): Hide
        prototype and definition.
        (output_die): Add prototype arguments to function pointer arg.
        (output_unspecified_parameters_die): Mark parameter `arg' with
        ATTRIBUTE_UNUSED.
        * except.c (output_exception_table_entry): Remove unused variable
        `eh_entry'.
        * except.h (expand_fixup_region_start, expand_fixup_region_end):
        Add prototypes.
        * expr.c (do_jump_by_parts_equality_rtx): Remove prototype.
        * expr.h (do_jump_by_parts_equality_rtx): Add prototype.
        * fix-header.c: Include stdarg.h/varargs.h, move gansidecl.h
        before cpplib.h, include cpphash.h, remove redundant prototype of
        cpp_fatal, don't define `const', add a prototype for `fatal'.
        (cpp_file_line_for_message): Add missing arguments `pfile'.
        (v_cpp_message): New function.
        (cpp_message): Use it.
        (v_fatal): New function.
        (fatal, cpp_fatal): Use it.
        (cpp_pfatal_with_name): Constify parameter `name'.
        * flow.c (free_regset_vector): Remove redundant prototype.
        * function.c (round_down): Wrap prototype and definition with
        macro ARGS_GROW_DOWNWARD.
        (record_insns): Wrap prototype and definition with
        defined (HAVE_prologue) || defined (HAVE_epilogue).
        * gansidecl.h (ATTRIBUTE_PRINTF_4, ATTRIBUTE_PRINTF_5): New macros.
        * gen-protos.c: Include gansidecl.h.
        (hashf): Don't make it static, constify parameter `name'.
        * genattrtab.c (check_attr_test): Change XEXP() to XSTR() to match
        specifier %s in calls to function `fatal'.
        * haifa-sched.c: Include toplev.h.
        (find_rgns): Remove unused variable `j'.
        * integrate.c (note_modified_parmregs): Mark parameter `x' with
        ATTRIBUTE_UNUSED.
        (mark_stores): Likewise.
        * jump.c (mark_modified_reg): Likewise.
        * output.h (insn_current_reference_address): Add prototype.
        (eh_frame_section): Likewise.
        * print-rtl.c: Include bitmap.h.
        * reload1.c (reload): Wrap variables `note' and `next' in macro
        PRESERVE_DEATH_INFO_REGNO_P.
        (forget_old_reloads_1): Mark parameter `ignored' with
        ATTRIBUTE_UNUSED.
        (choose_reload_regs): Remove unused variable `in'.
        (reload_cse_invalidate_mem): Mark parameter `ignore' with
        ATTRIBUTE_UNUSED.
        (reload_cse_check_clobber): Likewise.
        * rtl.h (expand_null_return, reg_classes_intersect_p): Add prototype.
        (mark_elimination): Fix typo in prototype.
        * scan-decls.c: Include gansidecl.h.
        * tree.h (using_eh_for_cleanups, supports_one_only): Add prototype.

From-SVN: r19867
1998-05-19 08:42:48 +00:00
Richard Henderson
ead1705900 tree.h (TYPE_SIZE_UNIT): New.
* tree.h (TYPE_SIZE_UNIT): New.
(struct tree_type): Add size_unit member.
* stor-layout.c (layout_type): Initialize it.
* expr.c (get_inner_reference) [ARRAY_REF]: Use it.
* tree.c (size_in_bytes, int_size_in_bytes): Likewise.

From-SVN: r19853
1998-05-18 06:21:14 -07:00
Alexandre Petit-Bianco
b24f65cddd Patch from Alex Petit-Bianco.
* expr.c (expand_expr, case EXPR_WITH_FILE_LOCATION): Save/restore
	input_filename and lineno around expand_expr call.  Set them to values
	in WFL before expand_expr call.

From-SVN: r19778
1998-05-15 10:32:40 -07:00
Kaveh R. Ghazi
d6f4ec5199 Warning fixes:
* Makefile.in (c-lang.o): Depend on c-tree.h, c-lex.h and toplev.h.
	(c-lex.o): Depend on output.h.
	(c-common.o): Likewise.
	(stmt.o): Likewise.
	(calls.o): Likewise.
	(integrate.o): Depend on toplev.h.
	(regclass.o): Depend on output.h.
	(final.o): Depend on reload.h.
	* c-common.c: Include output.h.
	(check_format_info): Remove unused variable `integral_format'.
	* c-decl.c (print_lang_decl): Mark parameters `file', `node' and
	`indent' with ATTRIBUTE_UNUSED.
	(print_lang_type): Likewise.
	(maybe_build_cleanup): Likewise for parameter `decl'.
	(copy_lang_decl): Likewise for parameter `node'.
	* c-lang.c: Include c-tree.h, c-lex.h and toplev.h.
	(lang_print_xnode): Mark parameters `file', `node' and `indent'
 	with ATTRIBUTE_UNUSED.
	(lookup_interface): Likewise for parameter `arg'.
	(is_class_name): Likewise.
	(maybe_objc_check_decl): Likewise for parameter `decl'.
	(maybe_objc_comptypes): Likewise for parameters `lhs', `rhs' and
	`reflexive'.
	(maybe_objc_method_name): Likewise for parameter `decl'.
	(build_objc_string): Likewise for parameters `len' and `str'.
	* c-lex.c: Include output.h.
	* c-lex.h (position_after_white_space): Correct typo in prototype.
	* c-tree.h (finish_file, c_expand_start_cond, c_expand_start_else,
 	c_expand_end_cond, init_iterators): Add prototypes.
	* caller-save.c (set_reg_live): Mark parameters `reg' and `setter'
	with ATTRIBUTE_UNUSED.
	* calls.c: Include output.h.
	* cccp.c (pipe_closed): Mark parameter `signo' with
 	ATTRIBUTE_UNUSED.
	* combine.c: Move inclusion of expr.h to after insn-config.h.
	* iris6.h (ASM_IDENTIFY_GCC, ASM_IDENTIFY_LANGUAGE): Don't define
	as empty, rather define as ((void)0).
	* sparc.c (sparc_check_64): Add braces around ambiguous `else'.
	Add parentheses around assignment used as truth value.
	* cplus-dem.c (squangle_mop_up): Change return type to void.
	(internal_cplus_demangle): Remove unused parameter `options'.
	All callers changed.
	(cplus_demangle_opname): Remove function wide variable `int i' and
 	replace with `size_t i' at each location where it is used.
	(cplus_demangle_opname): change type of `i' from int to size_t.
	* cppexp.c (right_shift): Mark parameter `pfile' with
	ATTRIBUTE_UNUSED.
	* cpphash.c (cpp_lookup): Likewise.
	(cpp_hash_cleanup): Likewise.
	* cpplib.c (parse_name): Add a prototype and make it static.
	(null_underflow): Mark parameter `pfile' with ATTRIBUTE_UNUSED.
	(null_cleanup): Likewise for parameters `pbuf' and `pfile'.
	(macro_cleanup): Likewise for parameter `pfile'.
	(file_cleanup): Likewise.
	* cpplib.h (cpp_reader_init, cpp_options_init, cpp_start_read,
 	cpp_read_check_assertion, skip_rest_of_line): Add prototypes.
	* crtstuff.c (force_to_data, __CTOR_LIST__, force_to_data,
	__DTOR_END__, __FRAME_END__): Mark with ATTRIBUTE_UNUSED.
	* cse.c (cse_check_loop_start): Mark parameter `set' with
 	ATTRIBUTE_UNUSED.
	* dbxout.c (flag_minimal_debug, have_used_extensions,
	source_label_number): Move inside macro wrapper check against
	defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO).
	* dwarf2out.c (gen_entry_point_die): Hide prototype and definition.
	* except.h (doing_eh): Provide prototype.
	* expr.c: Move inclusion of expr.h to after insn-config.h.
	* final.c: Include reload.h.
	(shorten_branches): Cast the first argument of bzero to char *.
	* fix-header.c (cpp_print_containing_files): Mark parameter
 	`pfile' with ATTRIBUTE_UNUSED.
	(cpp_fatal): Likewise.
	* flow.c (find_basic_blocks_1): Cast the first argument of bzero
	to char *.
	* genattrtab.c (make_length_attrs): Change the type of variable
	`i' from int to size_t.
	(zero_fn): Mark parameter `exp' with ATTRIBUTE_UNUSED.
	(one_fn): Likewise.
	* genextract.c (main): When generating insn-extract.c, mark
	variable `junk' with ATTRIBUTE_UNUSED.
	* gengenrtl.c (gencode): When generating genrtl.c, cast the first
	argument of bzero to char*.
	* integrate.c: Include toplev.h.
	* libgcc2.c: Wrap `struct exception_table' and
	`find_exception_handler' in macro DWARF2_UNWIND_INFO.
	* objc/Make-lang.in (objc-act.o): Depend on toplev.h.
	* objc/objc-act.c: Include toplev.h.
	(lang_print_xnode): Mark parameters `file', `node' and `indent'
	with ATTRIBUTE_UNUSED.
	(finish_protocol): Likewise for parameter `protocol'.
	* output.h (declare_weak): Add prototype.
	(decode_reg_name): Don't wrap with TREE_CODE macro.
	(assemble_alias): Add prototype.
	* regclass.c: Include output.h.
	* reload.h (reloads_conflict): Add prototype.
	* rtl.h (print_rtl_single, mark_elimiation, reg_class_subset_p,
	output_func_start_profiler): Add prototypes.
	* rtlanal.c (reg_set_p_1): Mark parameters `x' and `pat' with
 	ATTRIBUTE_UNUSED.
	* scan-decls.c: Include scan.h.
	* scan.h (recognized_function, recognized_extern): Add prototypes.
	* stmt.c: Include output.h.
	* toplev.c (error_for_asm, warning_for_asm): Remove prototypes.
	(output_lang_identify): Hide prototype and definition.
	(float_signal): Mark parameter `signo' with ATTRIBUTE_UNUSED.
	(pipe_closed): Likewise.
	* toplev.h (count_error, strip_off_ending, error_for_asm,
 	warning_for_asm): Add prototypes.

From-SVN: r19712
1998-05-13 12:40:39 +00:00
Jeff Law
38e012594e typo typo fixes fixes
From-SVN: r19601
1998-05-06 15:09:07 -06:00
Jim Wilson
7e07331424 Fix irix6 linker warning, multiply defined target_temp_slot_level.
* expr.c (target_temp_slot_level): Delete duplicate definition.

From-SVN: r19584
1998-05-06 08:55:26 -07:00
Robert Lipe
10f0ad3d49 toplev.h: New file.
Wed May  6 06:35:38 1998  Robert Lipe  <robertl@dgii.com>
        * toplev.h: New file.   Protypes for functions in toplev.c.
        * tree.h, rtl.h: Deleted protos for functions in toplev.c.
        * c-common.c, c-convert.c, c-decl.c, c-iterate.c, c-lex.c,
        c-parse.in, c-parse.y, c-pragma.c, c-typeck.c, calls.c,
        convert.c, dwarf2out.c, except.c, expr.c, final.c, fold-const.c,
        function.c, hash.c, profile.c, real.c, reg-stack.c, regclass.c,
        reload.c, reload1.c, stmt.c, stor-layout.c, tlink.c, tree.c,
        varasm.c: include it.

From-SVN: r19564
1998-05-06 04:54:01 +00:00
Jeff Law
f5963e6170 * Check in merge from gcc2. See ChangeLog.12 for details.
From-SVN: r19553
1998-05-05 17:18:02 -06:00
Jim Wilson
06eaa86f99 Fix bug where storing into const string gives core dump, from Kamil Iskra.
* expr.c (expand_expr, case INDIRECT_REF): Don't optimize string
	reference if this is a store.

From-SVN: r19531
1998-05-04 12:16:35 -07:00
Jim Wilson
bf931ec829 Fix x86 memset bug, reported by Karl Guenter Wuensch.
* expr.c (expand_builtin, case BUILT_IN_MEMSET): Break if either
	val or len has TREE_SIDE_EFFECTS set.

From-SVN: r19471
1998-04-28 12:12:47 -07:00
John Carr
87d1ea7937 expr.c (expand_builtin, [...]): Set MEM_IN_STRUCT_P if the argument is the address of a structure or array.
* expr.c (expand_builtin, case MEMSET): Set MEM_IN_STRUCT_P
	if the argument is the address of a structure or array.
	* configure.in: Enable Haifa scheduler by default for SPARC.

From-SVN: r19405
1998-04-24 13:16:26 +00:00
Jeff Law
e009aaf31f loop.c (regs_patch_p): Add prototype.
* loop.c (regs_patch_p): Add prototype.
        (add_label_notes, count_nonfixed_reads): Likewise.
        (find_single_use_in_loop): Likewise.
        (express_from): Surround prototype with #ifdef.
        (giv_sort): Similarly.
        * jump.c (mark_modified_reg): Add prototype.
        * haifa-sched.c (is_prisky): Add prototype.
        (queue_to_ready): Likewise.
        * genextract.c (gen_insn): Add prototype.
        * genemit.c (max_operand_1): Add prototype.
        (max_operand_vec, print_code, gen_exp, gen_insn): Likewise.
        (gen_expand, gen_explit, output_add_clobbers): Likewise.
        (output_init_mov_optab): Likewise.
        * genattrtab.c (attr_hash_add_rtx): Add prototype.
        (attr_hash_add_string, write_length_unit_log): Likewise.
        * genattr.c (init_range): Add prototype.
        * combine.c (sets_function_arg_p): Add prototype.

From-SVN: r19251
1998-04-16 17:56:12 -06:00
Jeff Law
d77fac3be2 expr.c (store_constructor_field): Add prototype.
* expr.c (store_constructor_field): Add prototype.
        (memory_use_mode): Likewise.
        * expmed.c (synth_mult): Add prototype.
        (choose_multiplier, invert_mod2n): Likewise.

From-SVN: r19250
1998-04-16 17:07:05 -06:00
Michael Meissner
996d9dacc4 If -Os, set MOVE_RATIO to 3, not 15
From-SVN: r19209
1998-04-14 13:20:50 +00:00
Alexandre Petit-Bianco
bf1e5319c3 tree.def (EXPR_WITH_FILE_LOCATION): New tree node definition.
d
Fri Apr  3 17:02:13 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
 	* tree.def (EXPR_WITH_FILE_LOCATION): New tree node definition.
 	* tree.h (EXPR_WFL_{NODE,FILENAME,FILENAME_NODE,LINENO,
 	COLNO,LINECOL,SET_LINECOL,EMIT_LINE_NOTE}): New macros.
 	(build_expr_wfl): New prototype declaration.
 	* tree.c (build_expr_wfl): New function, to build
  	EXPR_WITH_FILE_LOCATION nodes.
 	(copy_node): Don't zero TREE_CHAIN if copying a
  	EXPR_WITH_FILE_LOCATION node.
 	* print-tree.c (print_node): Handle EXPR_WITH_FILE_LOCATION.
 	* expr.c (expand_expr): Handle EXPR_WITH_FILE_LOCATION.

From-SVN: r19049
1998-04-08 07:03:48 -07:00
Jeff Law
e5e809f419 * Check in merge from gcc2. See ChangeLog.11 and ChangeLog.12
for details.

        * haifa-sched.c: Mirror recent changes from gcc2.

From-SVN: r18984
1998-04-04 06:32:39 -07:00
Kaveh R. Ghazi
670ee92097 Major cutover to using system.h:
* Makefile.in (alias.o, bitmap.o, c-aux-info.o, c-common.o,
        c-decl.o, c-iterate.o, c-lang.o, c-lex.o, c-pragma.o, c-typeck.o,
        caller-save.o, calls.o, collect2.o, combine.o, cse.o, dbxout.o,
        dwarf2out.o, dwarfout.o, emit-rtl.o, except.o, explow.o, expmed.o,
        expr.o, final.o, flow.o, function.o, getpwd.o, global.o,
        integrate.o, jump.o, local-alloc.o, loop.o, optabs.o, pexecute.o,
        prefix.o, print-rtl.o, print-tree.o, profile.o, real.o, recog.o,
        reg-stack.o, regclass.o, regmove.o, reload.o, reload1.o, reorg.o,
        rtl.o, rtlanal.o, sdbout.o, stmt.o, stor-layout.o, stupid.o,
        tlink.o, toplev.o, tree.o, unroll.o, varasm.o, xcoffout.o): Depend
        on system.h.
        * alias.c, bitmap.c, c-aux-info.c, c-common.c, c-decl.c,
        c-iterate.c, c-lang.c, c-lex.c, c-pragma.c, c-typeck.c,
        caller-save.c, calls.c, collect2.c, combine.c, cse.c, dbxout.c,
        dwarf2out.c, dwarfout.c, emit-rtl.c, except.c, explow.c, expmed.c,
        expr.c, final.c, flow.c, function.c, gcc.c, getpwd.c, global.c,
        integrate.c, jump.c, local-alloc.c, loop.c, optabs.c, pexecute.c,
        prefix.c, print-rtl.c, print-tree.c, profile.c, real.c, recog.c,
        reg-stack.c, regclass.c, regmove.c, reload.c, reload1.c, reorg.c,
        rtl.c, rtlanal.c, sched.c, sdbout.c, stmt.c, stor-layout.c,
        stupid.c, tlink.c, toplev.c, tree.c, unroll.c, varasm.c,
        xcoffout.c: Include system.h.  Organize include ordering so
        that stdarg/varargs comes before other system headers.  Remove
        spurious casts of functions assured of a prototype in system.h.

From-SVN: r18726
1998-03-20 14:58:42 +00:00
Richard Kenner
7c00d1fe83 expr.c (expand_expr, [...]): If have conditional move, don't use ORIGINAL_TARGET unless REG.
Wed Mar 18 13:42:01 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
        * expr.c (expand_expr, case COND_EXPR): If have conditional move,
        don't use ORIGINAL_TARGET unless REG.

From-SVN: r18671
1998-03-18 05:41:50 -08:00
Kaveh R. Ghazi
081f5e7e66 Fix more warnings...
* c-lang.c (finish_file): Wrap variable `void_list_node' with macro
        test !ASM_OUTPUT_CONSTRUCTOR || !ASM_OUTPUT_DESTRUCTOR.
        * calls.c (emit_call_1): Wrap variable `already_popped' with macro
        test !ACCUMULATE_OUTGOING_ARGS.
        * collect2.c (write_c_file_glob): Wrap function definition in
        macro test !LD_INIT_SWITCH.
        * combine.c (try_combine): Wrap variables `cc_use' and
        `compare_mode' in macro test EXTRA_CC_MODES.
        * cpplib.c (do_ident): Remove unused variable `len'.
        (skip_if_group): Remove unused variables `at_beg_of_line' and
        `after_ident'.
        (cpp_get_token): Remove unused variable `dummy'.
        * dbxout.c (scope_labelno): Move static variable definition inside
        the one function scope where it is used.
        (dbxout_function_end): Wrap prototype and definition in
        macro test !NO_DBX_FUNCTION_END.
        * dwarf2out.c (add_subscript_info): Wrap variable `dimension_number'
        in macro test !MIPS_DEBUGGING_INFO.
        * expr.c (expand_builtin_setjmp): Move declaration of variable `i'
        into the scope where it is used.  Wrap empty else-statement body
        in braces.
        * fix-header.c: Fix typo in comment.
        (inf_skip_spaces): Cast results of INF_UNGET to (void).
        (check_protection, main): Likewise.
        * flow.c (find_basic_blocks_1): Remove dangling comment text.
        * function.c (contains): Wrap prototype and definition in macro
        test HAVE_prologue || HAVE_epilogue.
        (fixup_var_refs_1): Remove unused variable `width'.
        * gen-protos.c (main): Remove unused variable `optr'.
        * haifa-sched.c (debug_control_flow): Remove unused variable `j'.
        * libgcc2.c (__udiv_w_sdiv): Provide dummy return value of 0.
        (__sjpopnthrow): Remove unused variable `jmpbuf'.
        (__throw): Remove unused variable `val'.
        * protoize.c: Check for a previously existing definition before
        defining *_OK macros.
        * scan-decls.c (scan_decls): Remove unused variable `old_written'.

From-SVN: r18654
1998-03-18 07:18:06 +00:00
Kaveh R. Ghazi
5172371191 Fix warious warnings:
* c-aux-info.c: Include string.h/strings.h.
	* pa.c: Include stdlib.h.
	(pa_combine_instructions): Prototype the function.
	(pa_can_combine_p, forward_branch_p, shadd_constant_p): Likewise.
	(reloc_needed): Add default case for enumeration switch.
	(remove_useless_addtr_insns): Remove unused variable `all'.
	(hppa_expand_prologue): Add explicit braces to avoid
	ambiguous `else'.
	(output_function_epilogue): Remove unused variable `i'.
	(output_millicode_call): Remove unused variable `link'.
	(shadd_constant_p, forward_branch_p): Make the function static.
	(following_call): Explicitly declare to return int.
	(pa_reorg): Declare as void.
	(pa_combine_instructions): Declare as static void.  Add
	parentheses around && within ||.
	* pa.h: Add prototypes for pa_reorg, symbolic_operand,
	following_call, function_label_operand, lhs_lshift_cint_operand
	and zdepi_cint_p.
	* pa.md: Add parentheses around && within ||.
	* cppalloc.c: Include stdlib.h.
	* cpperror.c (cpp_print_containing_files): Remove unused variable
	`i'.  Fix format specifier in fprintf.
	* cse.c (cse_around_loop): Add explicit braces to avoid
	ambiguous `else'.
	(delete_dead_from_cse): Wrap variable `tem' in macro HAVE_cc0.
	* expr.c (expand_expr): Add parentheses around && within ||.
	* final.c (app_enable): Replace fprintf with fputs where there are
	no format specifiers and no trailing argument after the string.
	Eg, when printing ASM_APP_ON/ASM_APP_OFF.
	(app_disable): Likewise.
	(final_end_function): Likewise.
	(final_scan_insn): Likewise.  Remove unused variable `set'.
	(profile_function): Wrap empty if-statement body in {} brackets.
	* function.c: Include stdlib.h.
	(pad_below): Wrap prototype and definition in ARGS_GROW_DOWNWARD.
	(reposition_prologue_and_epilogue_notes): Add parentheses
	around assignment used as truth value.
	* integrate.c (expand_inline_function): Wrap variable
	`cc0_insn' in macro HAVE_cc0.
	* jump.c (jump_optimize): Wrap variable `q' in macro
	HAVE_cc0.  Remove unused variable `prev1'.
	* libgcc2.c (__bb_exit_trace_func): Add parentheses around &&
	within ||.  Fix format specifier in fprintf.
	(__bb_init_prg): Add parentheses around assignment used as
	truth value.
	* local-alloc.c: Include stdlib.h.
	(requires_inout): Add parentheses around assignment used
	as truth value.
	* loop.c (analyze_loop_iterations): Wrap prototype and definition
	in macro HAVE_decrement_and_branch_on_count.
	(insert_bct, instrument_loop_bct): Likewise.
	(move_movables): Add parentheses around assignment used as
	truth value.
	(consec_sets_invariant_p): Likewise.
	(maybe_eliminate_biv_1): Wrap variable `new' in macro HAVE_cc0.
	* objc/objc-act.c: Include stdlib.h.
	(lookup_method_in_protocol_list): Wrap empty else-statement body
	in braces.
	(lookup_protocol_in_reflist): Likewise.
	(objc_add_static_instance): Remove unused variables `decl_expr'
	and `decl_spec'.
	(get_objc_string_decl): Remove unused variable `decl'.
	(generate_static_references): Remove unused variables `idecl' and
	`instance'.
	(check_protocols): Wrap empty else-statement body in braces.
	* protoize.c: Include stdlib.h.
	(substr): Add parentheses around assignment used as truth value.
	(abspath): Likewise.
	(shortpath): Likewise.
	* regmove.c (fixup_match_1): Add parentheses around assignment
	used as truth value.
	* reload.c (push_secondary_reload): Remove unused variable `i'.
	(find_reloads): Add parentheses around assignment used as truth
	value.
	* reload1.c: Include stdlib.h.
	* rtl.h: Correct typo in prototype of offsettable_memref_p.
	* stmt.c (add_case_node): Add parentheses around assignment used
	as truth value.
	(case_tree2list): Likewise.
	* tree.c (valid_machine_attribute): Wrap variable `decl_attr_list'
	in macro VALID_MACHINE_DECL_ATTRIBUTE.  Wrap variable
	`type_attr_list' in macro VALID_MACHINE_TYPE_ATTRIBUTE.
	(merge_attributes): Add explicit braces to avoid ambiguous
	`else'.
	* unroll.c (copy_loop_body): Wrap variable `cc0_insn' in
	macro HAVE_cc0.
	* varasm.c: Include stdlib.h.

From-SVN: r18290
1998-02-28 07:06:53 +00:00
Robert Lipe
8bd6ecc280 expr.c (expand_assignment): Correct typo exposed by -Wall.
* expr.c (expand_assignment):  Correct typo exposed by -Wall.
        offset should have been a truth value, not an assignment.

From-SVN: r17876
1998-02-12 14:59:57 +00:00
Robert Lipe
381127e845 except.c (start_dynamic_cleanup): Remove unused variable 'dhc'.
* except.c (start_dynamic_cleanup): Remove unused variable 'dhc'.
        (expand_eh_region_start_tree): Remove unused variable 'note'.
        (exception_optimize): Remove unused variable 'regions'.
        (expand_builtin_eh_stub):  Remove unused variable 'temp'.
        (copy_eh_entry): Deleted.   Dead function.
        * expr.c (move_block_to_reg) Bracket declaration of 'pat' and
        'last' with same #if HAVE_load_multiple as use of it.
        (move_block_from_reg): Likewise.
        (emit_move_insn_1): Remove unused variable 'insns'.
        (store_constructor): Bracket declaration of startb, endb with
        #if TARGET_MEMFUNCTIONS.  Remove unused variables 'set_word_size'
        'target', and 'xtarget'.
        (expand_builtin_setjmp): Remove unused variables 'op0',
        'next_arg_reg', 'old_inhibit_defer_pop'.
        (expand_builtin): Remove unused variable 'offset'.
        (do_store_flag): Remove unused variables 'pattern', 'jump_pat'.
        (emit_queue): Add parens for assignment used as conditional.
        (expand_expr): case TARGET_EXPR: Remove unused variable 'temp'.

From-SVN: r17843
1998-02-10 17:35:13 -07:00
Jeffrey A Law
060fbabfb9 expr.c (clear_pending_stack_adjust): Handle case where a function calls alloca...
* expr.c (clear_pending_stack_adjust): Handle case where a function
        calls alloca, but the user has specified -fomit-fframe-pointer.

From-SVN: r17770
1998-02-07 16:26:08 -07:00
Richard Henderson
6fd1c67b8b expr.c (expand_builtin_setjmp): Accept two new arguments for the labels to branch to on first and subsequent...
* expr.c (expand_builtin_setjmp): Accept two new arguments for
 the labels to branch to on first and subsequent executions.  Don't
 play with __dummy.  Rename `setjmp' insn to `builtin_setjmp_setup',
 and provide it with the jmp_buf.  Use only one of
 `builtin_setjmp_receiver' or `nonlocal_goto_receiver',
 and provide the former with the target label.
 (expand_builtin) [BUILTIN_SETJMP]: Generate a label for use by setjmp.
 (expand_builtin) [BUILTIN_LONGJMP]: Split out to ...
 (expand_builtin_longjmp): ... here.  Recognize a `builtin_longjmp'
 insn to replace all of the normal nonlocal_goto code.  Don't play
 with __dummy.  Correct arguments to nonlocal_goto.
 * expr.h (expand_builtin_setjmp): Update prototype.
 * except.c (start_dynamic_handler): When using builtin_setjmp,
 generate more accurate flow information.
 * alpha.md (nonlocal_goto_receiver_osf): Delete.
 (nonlocal_goto_receiver_vms): Rename to nonlocal_goto_receiver.
 (builtin_longjmp, builtin_setjmp_receiver): New.
 * sparc.md (update_return): Disambiguate unspec number.
 (nonlocal_goto): Rearrange arguments to match caller in except.c.
 (builtin_setjmp_setup): Rename from setjmp.  Match and ignore the
 jmp_buf operand.
 * mips.md (nonlocal_goto_receiver, builtin_setjmp_receiver): Remove.
 (builtin_setjmp_setup*, builtin_longjmp): New.

From-SVN: r17602
1998-02-02 11:28:57 -08:00
Hans-Peter Nilsson
db771a3c53 * expr.c (emit_push_insn): Add code to use movstrti if present.
From-SVN: r17589
1998-02-01 17:23:13 -07:00
Hans-Peter Nilsson
7a6df7f924 expr.c (emit_push_insn): Use same max-move-amount for movstrhi and movstrqi as in emit_block_move ().
* expr.c (emit_push_insn): Use same max-move-amount for movstrhi
	and movstrqi as in emit_block_move ().

From-SVN: r17588
1998-02-01 17:21:46 -07:00
J"orn Rennecke
f8dac6eb3f expr.c (get_inner_reference): Use sbitsizetype for type sizes.
* expr.c (get_inner_reference): Use sbitsizetype for type sizes.
        * fold-const.c (size_int): Replace with
        (size_int_wide).
        (make_bit_field_ref): Use bitsize_int for bit position.
        * stor-layout.c (sizetype): Delete.
        (sizetype_tab, sbitsizetype, ubitsizetype): Declare.
        (layout_record, layout_union, layout_type):
        Use bitsize_int for bit size.
        (set_sizetype): New function.
        (make_signed_type, make_unsigned_type): Use it.
        * c-decl.c (init_decl_processing): Likewise.
        * tree.h (size_int): Don't delcare, #define.
        (size_int_wide, sizetype_tab, sbitsize, ubitsize): Declare.
        (set_sizetype): Declare.
        (bitsize_int, size_int_2, BITS_PER_UNIT_LOG, sizetype, bitsizetype):
        Define.
        * c-typeck.c (c_sizeof, c_sizeof_nowarn, c_size_in_bytes):
        Convert result to sizetype.
        (really_start_incremental_init, push_init_level):
        Set type of constructor_bit_index to sbitsizetype.
        (push_init_level): Use unsigned arithmetic to determine padding.
        (output_init_element): Likewise.

From-SVN: r17577
1998-02-01 04:47:59 -07:00
Jim Wilson
03566575a9 Remove rest of bytecode stuff, except for the VMS *.com files.
* Makefile.in: Remove remaining bytecode stuff.
	* emit-rtl.c, expr.c: Likewise.

From-SVN: r17459
1998-01-23 07:43:01 -08:00
Jeffrey A Law
27766f0efa Remove more bytecode stuff.
From-SVN: r17436
1998-01-20 10:02:10 -07:00
Jeffrey A Law
b93a436e6b Makefile.in: Remove all bytecode support.
* Makefile.in: Remove all bytecode support.
        (OBJS): Make sure last entry is a real object file, not EXTRA_OBJS.
        * emit-rtl.c: Remove all bytecode support.
        * expr.c, expr.h function.c, integrate.c: Likewise.
        * output.h, regclass.c, rtl.h, stmt.c, toplev.c: Likewise.
        * tree.h, varasm.c: Likewise.
        * bi-*, bc-*: Delete bytecode related files.
Bytecode suppors disappears :-)

From-SVN: r17432
1998-01-20 01:55:07 -07:00
Richard Henderson
38a448ca5d alias.c: Change all uses of gen_rtx(FOO...) to gen_rtx_FOO...
* alias.c: Change all uses of gen_rtx(FOO...) to gen_rtx_FOO;
change gen_rtx(expr...) to gen_rtx_fmt_foo(expr...).
* caller-save.c, calls.c, combine.c, cse.c: Likewise.
* dwarf2out.c, except.c, explow.c, expmed.c, expr.c: Likewise.
* final.c, flow.c, function.c, genpeep.c, haifa-sched.c: Likewise.
* halfpic.c, integrate.c, jump.c, local-alloc.c, loop.c: Likewise.
* profile.c, recog.c, reg-stack.c, regclass.c, regmove.c: Likewise.
* reload.c, reload1.c, reorg.c, sched.c, stmt.c, stupid.c: Likewise.
* unroll.c, varasm.c: Likewise.
* config/alpha/alpha.c, config/alpha/alpha.md: Likewise.

From-SVN: r17357
1998-01-14 15:10:50 -08:00
Jeff Law
c85f7c16ad Bring in final gcc-2.8.0 changes.
From-SVN: r17355
1998-01-14 13:57:58 -07:00
Richard Henderson
6c174fc0e6 c-decl.c (init_decl_processing): Provide proper fallback symbol for __builtin_memset.
* c-decl.c (init_decl_processing): Provide proper fallback symbol
for __builtin_memset.
* expr.c (expand_builtin) [MEMSET]: Arg 3 type code is INTEGER_TYPE
not INTEGER_CST.  Assert arg 3 is a constant.
* alpha.c (mode_width_operand): Accept 64-bit modes.
(mode_mask_operand): Likewise.
(print_operand): Likewise for 'M' and 'U' codes.
(alpha_expand_unaligned_load): New function.
(alpha_expand_unaligned_store): Likewise.
(alpha_expand_unaligned_load_words): Likewise.
(alpha_expand_unaligned_store_words): Likewise.
(alpha_expand_block_move): Likewise.
(alpha_expand_block_clear): Likewise.
* alpha.h (MOVE_RATIO): New define.
* alpha.md (extxl, ext*h, ins*l, mskxl): Name them.
(insql, insxh, mskxh, extv, extzv, insv, movstrqi, clrstrqi): New.
* alpha.h (ASM_OUTPUT_LOOP_ALIGN, ASM_OUTPUT_ALIGN_CODE): Set to 3.
(CONSTANT_ALIGNMENT, DATA_ALIGNMENT): Disable.

From-SVN: r17278
1998-01-01 20:48:04 -08:00
Jeff Law
2d48c13dc2 expr.c (expand_expr): For {BITFIELD,COMPONENT,ARRAY}_REF...
d
        * expr.c (expand_expr): For {BITFIELD,COMPONENT,ARRAY}_REF, if the
        offset's mode is not ptr_mode, convert it.

From-SVN: r17260
1997-12-29 06:15:21 -07:00
Ian Lance Taylor
18543a2208 expr.c (do_tablejump): Let CASE_VECTOR_PC_RELATIVE be an expression.
* expr.c (do_tablejump): Let CASE_VECTOR_PC_RELATIVE be an
        expression.
        * stmt.c (expand_end_case): Likewise.
        * alpha.h (CASE_VECTOR_PC_RELATIVE): Update.
        * fx80.h, gmicro.h, m68k.h, m88k.h, ns32k.h: Likewise.
        * rs6000.h, sh.h, tahoe.h, v850.h vax.h z8k.h: Likewise.

From-SVN: r17155
1997-12-19 09:43:29 -07:00
Jeff Law
6d8ccdbbb2 Bring over changes from latest gcc-2.8 pre-release.
Mirror sched.c change into haifa-sched.c

From-SVN: r17097
1997-12-15 00:05:04 -07:00
Per Bothner
14e83f2ef5 * expr.c (expand_builtin): Support BUILT_IN_FMOD - just call fmod.
From-SVN: r17090
1997-12-13 11:40:06 -08:00
Jeff Law
956d69504d Merge from gcc-2.8
From-SVN: r16987
1997-12-06 17:31:01 -07:00
Jeff Law
f45ebe4754 O Bring in changes from release branch (egcs_ss_971127).
From-SVN: r16866
1997-12-01 10:53:12 -07:00
Richard Henderson
f35bcbc5d0 expr.c (expand_builtin_setjmp): Set current_function_has_nonlocal_label.
* expr.c (expand_builtin_setjmp): Set
        current_function_has_nonlocal_label.
        * stupid.c (stupid_life_analysis): If has_nonlocal_label, kill
        call-saved registers across calls.

        * alpha.md (exception_receiver): Remove.
        (nonlocal_goto_receiver_osf): New
        (nonlocal_goto_receiver_vms): Renamed from nonlocal_goto_receiver.
        (nonlocal_goto_receiver): New, select _osf or _vms.

From-SVN: r16492
1997-11-14 07:51:00 -07:00
Paul Eggert
41c9120baf patch from paul eggert to fix -0.0/0.0 confusion that breaks glibc
* real.h (REAL_VALUES_IDENTICAL): New macro.
	* expr.c (is_zeros_p): Don't consider -0.0 to be all zeros.
	* fold-const.c (operand_equal_p): Don't consider -0.0 to be
	identical to 0.0.
	* tree.c (simple_cst_equal): Don't consider -0.0 to have the
	same tree structure as 0.0.
	* varasm.c (immed_real_const_1): Use new REAL_VALUES_IDENTICAL
	macro instead of doing it by hand.

From-SVN: r16472
1997-11-13 16:07:27 -08:00
Jeff Law
e9a25f70a0 Update mainline egcs to gcc2 snapshot 971021.
From-SVN: r16278
1997-11-02 14:19:36 -07:00
Jeffrey A Law
6cad9e3280 expr.c (expand_builtin_setjmp): Don't emit a SETJMP note or set current_function_calls_setjmp anymore.
* expr.c (expand_builtin_setjmp): Don't emit a SETJMP note
        or set current_function_calls_setjmp anymore.

From-SVN: r16267
1997-11-01 22:15:13 -07:00
J"orn Rennecke
59fe8c2c20 expr.c (expand_increment): When enqueing a postincrement for a MEM...
* expr.c (expand_increment): When enqueing a postincrement for a MEM,
	use copy_to_reg if address is not a general_operand.

From-SVN: r16247
1997-10-31 00:40:46 +00:00
Jim Wilson
7581a30fe2 expr.c (expand_expr, [...]): Optimize a reference to an element in a constant string.
* expr.c (expand_expr, case INDIRECT_REF): Optimize a reference
        to an element in a constant string.

From-SVN: r16195
1997-10-26 13:33:27 -07:00
Richard Henderson
ca0f22208f expr.c (get_inner_reference): Remove the array bias after converting the index to Pmode.
* expr.c (get_inner_reference): Remove the array bias after
        converting the index to Pmode.

From-SVN: r16178
1997-10-26 09:13:10 -07:00
Doug Evans
6bd35f8671 * expr.c (use_group_regs): Don't call use_reg for MEMs.
From-SVN: r16046
1997-10-18 19:48:25 +00:00
Jason Merrill
2f3ca9e7f4 c-decl.c (init_decl_processing): Add __builtin_dwarf_reg_size.
* c-decl.c (init_decl_processing): Add __builtin_dwarf_reg_size.
	* tree.h (built_in_function): Likewise.
	* expr.c (expand_builtin): Likewise.
	* except.h: Likewise.
	* dwarf2out.c (expand_builtin_dwarf_reg_size): New fn.
	* libgcc2.c (copy_reg): New fn.
	(__throw): Use it.

From-SVN: r15750
1997-09-27 14:16:15 -04:00
David S. Miller
9524f769a7 combine.c (try_combine): Use NULL_RTX instead of '0' where appropriate in calls to gen_rtx().
* combine.c (try_combine): Use NULL_RTX instead of '0' where
        appropriate in calls to gen_rtx().
        * cse.c (cse_main): Likewise.
        * emit-rtl.c (gen_label_rtx): Likewise.
        * expr.c (init_expr_once): Likewise.
        * haifa-sched.c (flush_pending_lists, sched_analyze_insn,
        sched_analyze, init_rgn_data_dependences,
        compute_block_backward_dependences): Likewise.
        * sched.c (schedule_insns): Likewise.
        * varasm.c (immed_double_const): Likewise.

From-SVN: r15630
1997-09-22 11:41:48 -06:00
Jim Wilson
21002281e5 Fix H.J. Lu's alpha-linux bug with TImode constructors.
* expr.c (expand_expr): Remove previous incorrect change.
	If target and slot has no DECL_RTL, then call mark_addressable
	again for the slot after we give it RTL.

From-SVN: r15496
1997-09-16 13:59:22 -07:00
Jason Merrill
610ce97e65 expr.c (expand_expr, [...]): Call mark_addressable again for the slot after we give it RTL.
* expr.c (expand_expr, case TARGET_EXPR): Call mark_addressable
 	again for the slot after we give it RTL.

From-SVN: r15482
1997-09-16 03:53:56 -04:00
Jason Merrill
ca55abaee7 dwarf2 EH support
From-SVN: r15464
1997-09-15 22:07:50 -04:00
Jeff Law
22cbb540d0 Remove last change. Not needed for egcs yet.
From-SVN: r15397
1997-09-10 21:01:15 -06:00
Jeffrey A Law
0680d17043 * expr.c (emit_block_move): Always return a value.
From-SVN: r15252
1997-09-10 10:52:45 -06:00
Jeff Law
66ed068304 Add port done awhile ago for the ARC cpu.
* arc/arc.h: New file.
        * arc/arc.c: New file.
        * arc/arc.md: New file.
        * arc/initfini.c: New file.
        * arc/lib1funcs.asm: New file.
        * arc/t-arc: New file.
        * arc/xm-arc.h: New file.
        * ginclude/va-arc.h: New file.
        * ginclude/stdarg.h: Include va-arc.h ifdef __arc__.
        * ginclude/varargs.h: Likewise.
        * Makefile.in (USER_H): Add va-arc.h.
        * configure.in (arc-*-elf*): Recognize.
        * longlong.h: Add ARC support.
Mostly so I can test changes in snapshot scripts.

        * expr.c (clear_storage): Use CONST0_RTX instead of const0_rtx.
        when clearing non-BLKmode data.
Fixes sparc problem.

From-SVN: r15198
1997-09-09 16:21:04 -06:00
Jeffrey A Law
704af6a15f expr.c (convert_move): Handle truncation from TQFmode to QFmode.
* expr.c (convert_move): Handle truncation from TQFmode to QFmode.
From Christian Iseli.

From-SVN: r15054
1997-09-02 23:33:06 -06:00
Andreas Schwab
eae4b97034 expr.h (insn_gen_function): Reenable prototype.
* expr.h (insn_gen_function): Reenable prototype.

	* expr.c (move_by_pieces_1, clear_by_pieces_1): Fix prototype of
	first parameter.

From-SVN: r14994
1997-08-29 09:02:03 -06:00
Richard Kenner
921b3427bc (expand_builtin, case BUILT_IN_AGGREGATE_INCOMING_ADDRESS): New case.
(expand_assignment, expand_expr, emit_push_insn, store_expr):
Insert calls to chkr_check_addr, chkr_set_right, and chkr_copy_bitmap
when -fcheck-memory-usage.
(get_push_address, get_memory_usage_from_modifier): New functions.

From-SVN: r14611
1997-08-02 13:17:17 -04:00
Richard Kenner
2cde2255e0 (expand_expr, case PLACEHOLDER_EXPR): Find innermost matching and
don't check contains_placeholder_p.

From-SVN: r14605
1997-08-02 08:01:10 -04:00
Richard Kenner
d0977240cb (expand_expr, case LABEL_DECL): Treat inline_function_decl like current_function_decl.
(expand_expr, case LABEL_DECL): Treat inline_function_decl like
current_function_decl.
(expand_expr, case SAVE_EXPR): Handle top-level SVAE_EXPR by
moving into current function; abort if in incorrect context.

From-SVN: r14540
1997-07-27 19:35:23 -04:00
Richard Kenner
08293addce (get_inner_unaligned_p): Deleted.
(expand_assignment): Remove special-case of constant array.
(expand_expr, case ARRAY_REF): Likewise, and clean up remaining code.

From-SVN: r14536
1997-07-27 12:18:46 -04:00
Richard Kenner
b60334e840 (expand_expr, case MODIFY_EXPR): Don't preexpand calls if LHS is an
indirect via a constant pointer.

From-SVN: r14527
1997-07-25 08:36:42 -04:00
Richard Kenner
dcb7c3cea6 (expand_expr...
(expand_expr, case PLACEHOLDER_EXPR): Pick outermost object in
placeholder_list of right type without a PLACEHOLDER_EXPR.

From-SVN: r14498
1997-07-20 06:11:25 -04:00
Jim Wilson
d7d775a019 (emit_group_load): Add case using gen_lowpart.
From-SVN: r14224
1997-06-10 14:39:22 -07:00
Richard Kenner
47e538e888 (expand_builtin, case BUILT_IN_FRAME_ADDRESS): Use correct function
name in error message.

From-SVN: r14191
1997-06-09 17:24:32 -04:00
Mike Stump
6b023d0700 expr.c (expand_builtin_setjmp): Remove setting of current_function_has_nonlocal_goto, as this isn't a goto.
* expr.c (expand_builtin_setjmp): Remove setting of
	current_function_has_nonlocal_goto, as this isn't a goto.

From-SVN: r14066
1997-05-13 21:08:28 +00:00
Mike Stump
6e6a07d299 except.c (start_dynamic_handler): Fix so that we can use __builtin_setjmp...
* except.c (start_dynamic_handler): Fix so that we can use
 	__builtin_setjmp, and default to using __builtin_setjmp instead of
 	setjmp.
	* expr.c (expand_builtin_setjmp): New routine, split out from
	existing inline code from expand_builtin.
	(expand_builtin): Split out code into expand_builtin_setjmp.
	* expr.h (expand_builtin_setjmp): Add declaration.
	* libgcc2.c (__sjthrow): Default to using __builtin_setjmp instead
 	of setjmp.
	(__sjpopnthrow): Likewise.
	* optabs.c (init_optabs): Likewise.

From-SVN: r14045
1997-05-07 22:50:11 +00:00
Mike Stump
db3cf6fb33 reformat a little to match GNU coding standards.
From-SVN: r14024
1997-05-06 23:05:54 +00:00
Mike Stump
e976b8b277 Add setjmp/longjmp exception handling.
From-SVN: r13968
1997-04-23 20:04:25 +00:00
Richard Kenner
effbcc6a9e ({move,clear}_by_pieces_1, expand_assignment): Ensure we have unshared rtx before changing flags.
({move,clear}_by_pieces_1, expand_assignment): Ensure we have unshared rtx
before changing flags.
(store_{constructor,field}): Likewise.
(expand_expr, case COMPONENT_REF): Likewise.
(store_expr): Check if TEMP and TARGET are same with rtx_equal_p.

From-SVN: r13936
1997-04-20 12:19:20 -04:00
Jason Merrill
83b853c9fc x
From-SVN: r13909
1997-04-17 11:33:02 +00:00
Doug Evans
58a32c5c03 * expr.c (move_block_from_reg): Try using an integral mov operation first.
From-SVN: r13897
1997-04-13 23:29:50 +00:00
Doug Evans
e46a986ab9 expr.c (emit_push_insn): Delete emission of CLOBBER when doing partial push, no longer necessary.
* expr.c (emit_push_insn): Delete emission of CLOBBER
	when doing partial push, no longer necessary.

From-SVN: r13797
1997-03-25 19:43:45 +00:00
Jim Wilson
aff4d29bf4 (emit_group_load): Call operand_subword instead of creating
an explicit SUBREG.

From-SVN: r13743
1997-03-18 14:25:56 -08:00
Richard Kenner
dc500fa115 (expand_expr, case PLACEHOLDER_EXPR): Refine which object is picked.
From-SVN: r13718
1997-03-16 19:54:36 -05:00
Richard Kenner
08bbd316d8 (expand_expr, case COMPONENT_REF): Fix error in last change: don't
suppress conversion if just EXPAND_SUM.

From-SVN: r13383
1997-01-05 07:26:37 -05:00
Richard Kenner
0d15e60cd5 (get_inner_reference): Fix type error.
(expand_expr, case COMPONENT_REF): Don't convert if modifier
is EXPAND_CONST_ADDRESS, EXPAND_SUM, or EXPAND_INITIALIZER.

From-SVN: r13375
1997-01-04 22:21:00 -05:00
Richard Kenner
86b5812c18 (expand_expr, case COMPONENT_REF): If taking value from a CONSTRUCTOR,
must mask/sign-extend if bitfield.
(expand_builtin, case BUILT_IN_LONGJMP): Pass type, not IDENTIFIER,
to send arg of RETURN_POPS_ARGS.

From-SVN: r13373
1997-01-04 22:12:25 -05:00
Richard Kenner
ac01eace31 (expand_expr, case COND_EXPR): Add additional cases to "singleton"
cases.

From-SVN: r13372
1997-01-04 22:03:27 -05:00
Richard Kenner
2a8e278c94 (move_by_pieces): Abort only if length positive at end.
From-SVN: r13242
1996-12-07 18:48:44 -05:00
Richard Kenner
9293498fb3 (get_inner_reference): Fix error in previous change.
From-SVN: r13200
1996-11-17 20:23:00 -05:00
Richard Kenner
839c47964e (get_inner_reference): Add new arg PALIGNMENT and compute it.
(expand_assignment, do_jump): Pass new arg to get_inner_reference.
(expand_expr, case COMPONENT_REF): Likewise.

From-SVN: r13187
1996-11-16 06:18:33 -05:00
Jim Wilson
71bc03306f (emit_group_store): For REG case, call gen_lowpart if
modes are different.

From-SVN: r13152
1996-11-12 15:46:05 -08:00
Richard Kenner
b61b64100a (expand_assignment): Remove bogus resetting of alignment to inner alignment.
(expand_expr, case COMPONENT_REF): Likewise.

From-SVN: r13114
1996-11-08 17:40:11 -05:00
Jim Wilson
e9ac02a6f1 (expand_expr, case CONSTRUCTOR): Don't use a PARALLEL
target.

From-SVN: r13085
1996-10-31 10:30:25 -08:00
Ian Lance Taylor
96ff8a163e Zero extend when generating a CONST_DOUBLE in convert_modes
From-SVN: r13041
1996-10-27 02:08:23 +00:00
Torbjorn Granlund
bb60ac6305 (do_store_flag): Don't check if target is 0 in code
emitting store flag as compare-branch.

From-SVN: r12993
1996-10-22 00:26:25 +00:00
Richard Kenner
ab6c58f120 (store_expr): Disable optimization of using convert if exp's type is a
subtype.

From-SVN: r12992
1996-10-21 19:11:08 -04:00
Doug Evans
0cb1d109f4 expr.c (do_jump): Conditionalize cleanups for the COND_EXPR case...
* expr.c (do_jump): Conditionalize cleanups for the COND_EXPR case,
 	similarly to the way TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR are
 	handled.

From-SVN: r12974
1996-10-17 15:33:52 +00:00
Jim Wilson
df0faff11b (store_constructor): Delete unnecessary increment.
From-SVN: r12940
1996-10-09 13:42:42 -07:00
Richard Kenner
c2722ef63b (expand_expr, case COMPONENT_REF): Don't try to directly load a complex.
From-SVN: r12867
1996-09-29 19:04:49 -04:00
Richard Kenner
862424838e (store_expr): memset/bzero gets ptr_mode, not Pmode.
From-SVN: r12861
1996-09-29 18:42:12 -04:00
Michael Meissner
eaa9b4d930 Fix SI followed by 4 DFs under AIX
From-SVN: r12838
1996-09-24 22:14:57 +00:00
Richard Kenner
0842a17931 (expand_increment): If postincrement for MEM can't use add directly,
load address in reg and enqueue increment and store of reg.

From-SVN: r12785
1996-09-23 16:42:58 -04:00
Richard Kenner
01c8a7c858 (var_rtx): New function.
(expand_expr, case COND_EXPR): Also use target if same as singleton.

From-SVN: r12777
1996-09-23 14:40:48 -04:00
Richard Kenner
2b01c3263e (convert_move): Replace explicit checks for FP extend ops with use of can_extend_p.
(convert_move): Replace explicit checks for FP extend ops with use of
can_extend_p.
Add missing tests for FP trunc operations.

From-SVN: r12771
1996-09-22 11:30:04 -04:00
Richard Kenner
ef19912d09 (store_field): If storing a record on big endian targets,
set up so we store the high-order bits.
(expand_expr, case COMPONENT_REF): Likewise for loads.

From-SVN: r12714
1996-09-14 20:42:46 -04:00
Mike Stump
75bb87ea21 * expr.c (expand_builtin_return_addr): Fix order of parameters.
From-SVN: r12644
1996-08-15 19:59:00 +00:00
Richard Kenner
32ccb0aca0 (expand_builtin, case BUILT_IN_SETJMP): Add test and call for
nonlocal_goto_receiver pattern.

From-SVN: r12621
1996-08-12 07:44:42 -04:00
Jason Merrill
a3a58acc27 (store_expr): Handle COND_EXPR cleanups like expand_expr.
From-SVN: r12620
1996-08-12 05:52:13 +00:00
Mike Stump
26657dcad0 expr.c (do_jump, [...]): Ensure the end of an exception region comes after its start.
* expr.c (do_jump, case TRUTH_ORIF_EXPR): Ensure the end of an
	exception region comes after its start.
	(do_jump, case TRUTH_ANDIF_EXPR): Likewise.

From-SVN: r12565
1996-07-25 23:14:00 +00:00
Mike Stump
3d1953912d install EH code
From-SVN: r12548
1996-07-23 19:58:32 +00:00
Richard Kenner
8d8c9ba91b (get_inner_reference): Delete using alternate mode for bitfield; we
don't make bitfields anymore if not needed.

From-SVN: r12398
1996-07-04 11:44:14 -04:00
Mike Stump
0f41302f47 formatting tweaks
From-SVN: r12390
1996-07-03 22:07:53 +00:00
Jeff Law
5718612fc1 expr.c (compare): If function pointers need canonicalization before comparisons, canonicalize them.
* expr.c (compare): If function pointers need canonicalization
        before comparisons, canonicalize them.
        (do_store_flag): Do not use an sCC insn for a function pointer
        comparison if function pointers need canonicalization before
        comparing.

From-SVN: r12381
1996-07-02 16:59:02 -06:00
Richard Kenner
d7f21d631f (expand_builtin, case BUILTIN_MEMSET): Open code memset where val == 0.
From-SVN: r12363
1996-06-28 14:35:10 -04:00
Richard Kenner
85ab4aaaec (expand_builtin, case BUILT_IN_{SET,LONG}JMP): Properly handle case
when ptr_mode != Pmode.

From-SVN: r12294
1996-06-18 06:53:52 -04:00
Per Bothner
8f6562d026 * expr.c (safe_from_p): Allow Chill-style variable-sized arrays.
From-SVN: r12213
1996-06-07 12:11:44 -07:00
Jim Wilson
fffa9c1d2e (emit_group_load, emit_group_store): New functions.
(use_group_regs): New function.
(emit_push_insn): Handle PARALLEL parameter in REG.
(expand_assignment): Handle PARALLEL to_rtx.
(store_expr): Handle PARALLEL target.

From-SVN: r12189
1996-06-06 16:04:56 -07:00
Richard Kenner
0086427caf (store_field): Fix typo in last change; update TARGET addr.
From-SVN: r12142
1996-06-03 08:06:54 -04:00
Mike Stump
a4a3f053b7 tree.def (OFFSET_REF): Remove.
* tree.def (OFFSET_REF): Remove.
        * expr.c (expand_expr, case OFFSET_REF): Ditto.
        * tree.c (substitute_in_expr): Remove OFFSET_REF code.
Remove some old cruft

From-SVN: r12127
1996-05-31 05:08:47 +00:00
Richard Kenner
0fedef289f (expand_builtin, case BUILT_IN_{LONG,SET}JMP): Convert block address
from ptr_mode to Pmode.

From-SVN: r12120
1996-05-27 06:38:37 -04:00
Richard Kenner
06398f9dc9 (bc_runtime_type_code): Delete redundant declaration.
From-SVN: r12044
1996-05-19 12:23:40 -04:00
Mike Stump
4847c9386b expr.c (expand_expr, [...]): Make TARGET_EXPRs redoable for UNSAVE_EXPR.
* expr.c (expand_expr, cond TARGET_EXPR): Make TARGET_EXPRs
	redoable for UNSAVE_EXPR.
	* stmt.c (expand_decl_cleanup): Wrap the cleanup in an UNSAVE_EXPR
	to that we can redo it.
	* tree.c (unsave_expr_now): Handle TARGET_EXPRs fully now.
	* tree.def (TARGET_EXPR): Add a third field so that TARGET_EXPRs
	are redoable.

From-SVN: r12018
1996-05-17 21:48:14 +00:00
Mike Stump
679163cf4d expr.c (expand_expr, [...]): Move from the C++ frontend to the backend where it belongs.
* expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++
	frontend to the backend where it belongs.
	* tree.c (unsave_expr): Ditto.
	(unsave_expr_now): Ditto.
	* tree.def (UNSAVE_EXPR): Ditto.
	* tree.h (unsave_expr): Ditto.
	(unsave_expr_now): Ditto.

From-SVN: r12015
1996-05-17 20:13:01 +00:00
Richard Kenner
a281e72d06 (store_field): Support BLKmode bitfield if aligned on byte boundary using emit_block_move.
(store_field): Support BLKmode bitfield if aligned on byte boundary using
emit_block_move.
(expand_expr, case COMPONENT_REF): Likewise.

From-SVN: r11971
1996-05-11 07:42:11 -04:00
Mike Stump
7b8b9722a4 expr.c (expand_increment): Add third parameter to know when to ignore the result value.
* expr.c (expand_increment): Add third parameter to know when to
        ignore the result value.
        (store_constructor): Ditto.
        (expand_expr, case PREINCREMENT_EXPR): Ditto.
        (expand_expr, case PREDECREMENT_EXPR): Ditto.
        (expand_expr, case POSTINCREMENT_EXPR): Ditto.
        (expand_expr, case POSTDECREMENT_EXPR): Ditto.
        * tree.c (stabilize_reference): Always ignore the first operand of
        COMPOUND_EXPRs.

From-SVN: r11939
1996-05-06 18:07:22 +00:00
Jim Wilson
405f0da64e (expand_expr, case INDIRECT_REF): Delete obsolete code
to special case a SAVE_EXPR operand.

From-SVN: r11938
1996-05-06 10:13:55 -07:00
Richard Kenner
477efd500b (expand_builtin, case BUILT_IN_SETJMP): CLOBBER the static chain after
label at setjmp point.

From-SVN: r11886
1996-04-25 14:05:09 -04:00
Per Bothner
8e958f701f * expr.c (store_constructor): Fix test for missing array elements.
From-SVN: r11869
1996-04-23 13:01:58 -07:00
Jim Wilson
8b29500078 (do_store_flag): Rewrite last change to avoid compiler
warnings.

From-SVN: r11832
1996-04-16 17:31:44 -07:00
Richard Kenner
b089937ac0 (expand_builtin, case BUILT_IN_LONGJMP): Make a decl for __dummy, so
we can call make_function_rtl on it.

From-SVN: r11805
1996-04-16 08:37:28 -04:00
Richard Kenner
b35cd3c16c (expand_assignment): Don't pre-evaluate RHS if a CALL_EXPR with a
variable-size return.

From-SVN: r11804
1996-04-16 06:21:39 -04:00
Jim Wilson
21b2a157ce (do_store_flag): Before calling exact_log2, remove any
sign extension bits.

From-SVN: r11803
1996-04-15 16:06:00 -07:00
Richard Kenner
0dc09c0fe2 (bc_expand_increment): Change declaration to return void.
From-SVN: r11779
1996-04-15 07:52:17 -04:00
Richard Kenner
43198be7c4 (preexpand_calls, case CALL_EXPR): Rework to properly avoid expanding
functions returning variable size objects.

From-SVN: r11698
1996-04-11 08:24:56 -04:00
Jim Wilson
22745c7e7a (emit_push_insn): Clobber register only if it is non-zero.
From-SVN: r11658
1996-04-03 14:30:07 -08:00
Richard Kenner
e8621b3c1c (get_inner_reference): When finding mode to access bitfield that ends up properly aligned...
(get_inner_reference): When finding mode to access bitfield that ends
up properly aligned, use mode class of its type unless type's mode was
BLKmode.

From-SVN: r11651
1996-04-01 16:16:06 -05:00
Jeff Law
2c7ee1a641 calls.c (expand_call): Remove current_call_is_indirect nonsense.
* calls.c (expand_call): Remove current_call_is_indirect nonsense.
	Add additional argument to INIT_CUMULATIVE_ARGS.
	(emit_library_call): Likewise.
	(emit_library_call_value): Likewise.
	* expr.c (expand_builtin): Likewise.
	* function.c (assign_parms): Likewise.
	* cp/method.c (emit_thunk): Likewise.
	* config/pa/pa.h (hppa_args): New field "indirect".
	(INIT_CUMULATIVE_ARGS): Initialize "indirect" field.
	(FUNCTION_ARG): Check "indirect" field, rather than
	"current_call_is_indirect".
	* All other backends updated with new argument to
	INIT_CUMULATIVE_ARGS

From-SVN: r11641
1996-03-29 07:37:11 -07:00
Jeff Law
9c7be814e6 expr.c (emit_push_insn): When doing a partial push...
* expr.c (emit_push_insn): When doing a partial push, emit
        a CLOBBER so that flow doesn't think the entire register
        is live.

From-SVN: r11622
1996-03-26 08:45:03 -07:00
Richard Kenner
7565a035be (expand_builtin, case BUILT_IN_SETJMP): Call "setjmp" pattern, if any.
Call dummy function pointed to by static chain pointer.
(expand_builtin, case BUILT_IN_LONJMP): Ignore second expression.
Set address of __dummy into static chain pointer.
Copy the label to return to into a pseudo earlier.

From-SVN: r11576
1996-03-20 08:13:06 -05:00
Jim Wilson
f2420d0b92 (expand_expr, case COMPONENT_REF): For unaligned object in
an aligned union, delete check for EXPAND_SUM.

From-SVN: r11519
1996-03-12 09:51:15 -08:00
Mike Stump
2a888d4cd0 expr.c (expand_expr, [...]): Delay putting the cleanup on the cleanup chain until after the subexpression...
* expr.c (expand_expr, case TARGET_EXPR): Delay putting the cleanup
	on the cleanup chain until after the subexpression has been expanded.
Fixes eh44.C and eh45.C

From-SVN: r11504
1996-03-08 23:44:26 +00:00
Jim Wilson
23ccec44cc (store_constructor_field): Add explanatory comment.
Call store_field if bitpos is nonzero and target is not a MEM.

From-SVN: r11503
1996-03-08 13:52:23 -08:00
Jason Merrill
38ee6ed956 (expand_expr, case *_DECL): If we make a non-local reference from a function with DECL_NO_STATIC_CHAIN set, abort.
(expand_expr, case *_DECL): If we make a non-local
        reference from a function with DECL_NO_STATIC_CHAIN set, abort.
        (expand_expr, case ADDR_EXPR): We don't need a trampoline for a
        function with DECL_NO_STATIC_CHAIN set.

From-SVN: r11461
1996-03-05 22:16:33 +00:00
Richard Kenner
3d8e9bc243 (bc_strdup): Delete.
(bc_load_externaddr_id): Use xstrdup instead of bc_xstrdup.

From-SVN: r11411
1996-03-04 08:39:11 -05:00
Richard Kenner
d80f96e9a8 (do_jump, case COMPOUND_EXPR): Call preserve_temp_slots.
From-SVN: r11401
1996-03-02 10:18:24 -05:00
Richard Kenner
0dddb42d90 (expand_builtin...
(expand_builtin, case BUILT_IN_SETJMP): Set CONST_CALL_P on
NOTE_INSN_SETJMP instead of emitting USE insns for call-saved regs.

From-SVN: r11340
1996-02-23 08:46:04 -05:00
Richard Kenner
a8a8cbb759 (expand_builtin, case BUILT_IN_SETJMP): Shows clobbers FP and all caller-save registers.
(expand_builtin, case BUILT_IN_SETJMP): Shows clobbers FP and all
caller-save registers.
Set current_function_has_nonlocal_goto.

From-SVN: r11276
1996-02-15 07:48:12 -05:00
Per Bothner
05c0b40505 expr.c (store_constructor): Fix flow control thinko (merge error).
* expr.c (store_constructor):  Fix flow control thinko (merge error).
* expr.c (store_constructor):  Pass correct value to recursive call.

From-SVN: r11272
1996-02-13 16:58:09 -08:00
Mike Stump
41531e5b36 expr.c (expand_expr, [...]): We must always store into the allocated slot for TAREGT_EXPRs.
* expr.c (expand_expr, case TARGET_EXPR): We must always store
       into the allocated slot for TAREGT_EXPRs.

From-SVN: r11271
1996-02-13 23:46:51 +00:00
Richard Kenner
8ab0613ce7 (convert_move): Fix typo in extendqfh2 case.
From-SVN: r11267
1996-02-13 18:11:23 -05:00
Jim Wilson
126e5b0d25 (store_constructor_field): Only call change_address if
bitpos is nonzero.

From-SVN: r11258
1996-02-13 10:28:57 -08:00
Richard Kenner
6692a31fda (expand_builtin, case BUILT_IN_NEXT_ARG): Strip off INDIRECT_REF when
checking second arg.

From-SVN: r11139
1996-01-31 08:42:23 -05:00
Richard Kenner
4ed6720543 Include hard-reg-set.h.
(arg_pointer_save_area): New declaration.
(expand_builtin, case BUILT_IN_{SET,LONG}JMP): New cases.

(expand_expr, case COMPONENT_REF): Pass EXPAND_INITIALIZER to
recursive call.

From-SVN: r11112
1996-01-27 07:57:21 -05:00
Per Bothner
e1a43f7338 Merged in a bunch of stuff related to store_constructor. See ChangeLog.
From-SVN: r11076
1996-01-19 17:41:05 -08:00
Mike Stump
9ba73d3880 expr.c (expand_expr, [...]): Make sure cleanups live on the function_obstack as they are used by the...
* expr.c (expand_expr, case COND_EXPR): Make sure cleanups live on
	the function_obstack as they are used by the exception handling code.
	(defer_cleanups_to): Ditto.
	(TRUTH_ANDIF_EXPR): Ditto.
	(TRUTH_ORIF_EXPR): Ditto.
Fixes eh43.C

From-SVN: r11033
1996-01-16 22:40:15 +00:00
Richard Kenner
43e046cbc1 (emit_move_insn_1): Don't emit clobber when moving by parts and source
equals destination.

From-SVN: r11018
1996-01-16 08:21:16 -05:00
Richard Kenner
3d27140a15 (expand_expr, case COMPONENT_REF): Don't make recursive call on object
with EXPAND_SUM.

From-SVN: r10989
1996-01-15 10:02:59 -05:00
Jeff Law
ff9b5bd87c * expr.c (expand_assignment): Fix alignment parm in emit_block_move.
From-SVN: r10977
1996-01-14 18:34:36 -07:00
Richard Kenner
06089a8b23 (save_nocopied_parts, expand_expr): Call assign_temp with extra arg.
(expand_expr, case SAVE_EXPR): Set TEMP to (const_int 0) if MODE is VOIDmode.
(expand_expr): Don't use assign_temp for pseudos when might want to be TMODE.

From-SVN: r10924
1995-12-31 21:26:50 -05:00
Richard Kenner
b7c2e1e2e4 (clear_pending_stack_adjust): Don't do optimization if -O0.
From-SVN: r10914
1995-12-31 15:02:34 -05:00
Per Bothner
32de057178 * expr.c (save_noncopied_parts, expand_expr): Use new assign_temp function.
From-SVN: r10902
1995-12-29 11:16:33 -08:00
Richard Kenner
dc6d66b319 (expand_expr, case VAR_DECL): Set REGNO_POINTER_ALIGN when copying address into memory.
(expand_expr, case VAR_DECL): Set REGNO_POINTER_ALIGN
when copying address into memory.
(expand_expr, case COMPONENT_REF, case ADDR_EXPR): Set alignment
of register when result or result's address.
(expand_expr, case CONVERT_EXPR): Don't handle -fforce-mem here.

From-SVN: r10869
1995-12-27 15:23:01 -05:00
Richard Kenner
9de0820010 (struct clear_by_pieces): New structure.
(clear_by_pieces{,_1}, {is,mostly}_zeros_p): New functions.
(clrstr_optab): New optab.
(clear_storage): Rework to try to use clear_by_pieces, then
new clrstr insn, then library call.
(store_constructor): Track if target is already cleared.
Clear target first if CONSTRUCTOR is mostly zeros.
Don't write zeros if target has been cleared.
Add new arg to clear_storage call.
(expand_expr, case CONSTRUCTOR): Don't put static constructor
in memory if mostly zero.

From-SVN: r10842
1995-12-24 06:37:15 -05:00
Richard Kenner
9151b3bf92 (store_constructor): Don't call change_address on REG.
(expand_expr, case CONSTRUCTOR): Likewise.

From-SVN: r10836
1995-12-22 17:55:49 -05:00
Jim Wilson
3b6f75e2d1 (emit_block_move): When call emit_libary_call for bcopy,
pass arguments using correct types and modes.
(emit_push_insn, expand_assignment): Likewise.
(clear_storage, store_expr): Likewise for memset and bzero.
(store_constructor): Likewise for memset.

From-SVN: r10808
1995-12-18 18:01:45 -08:00
Richard Kenner
fec535227f (store_constructor): Fix error in last change: just copy MEM, but be sure to share address.
(store_constructor): Fix error in last change: just
copy MEM, but be sure to share address.
(expand_expr, case CONSTRUCTOR): Likewise.

From-SVN: r10801
1995-12-18 16:39:20 -05:00
Torbjorn Granlund
b10af0c820 (expand_expr...
(expand_expr, case MULT_EXPR): Generalize code for widening
multiply to handle signed widening multiply when only unsigned optab
is defined, and vice versa.

From-SVN: r10788
1995-12-17 16:39:58 +00:00
Richard Kenner
db3ec607e7 (expand_assignment): Fix alignment parm in emit_block_move.
From-SVN: r10781
1995-12-16 18:24:02 -05:00
Mike Stump
3539e81693 * expr.c (expand_expr, case ADDR_EXPR): Ensure op0 isn't QUEUED.
From-SVN: r10715
1995-12-14 00:20:39 +00:00
Richard Kenner
05019f83a3 (expand_expr, case COMPONENT_REF): If result is BLKmode, use that to
access object too.

From-SVN: r10697
1995-12-10 09:51:54 -05:00
Richard Kenner
07604beb82 (expand_expr, case CONSTRUCTOR): If TREE_READONLY, set
RTX_UNCHANGING_P in TARGET.

From-SVN: r10696
1995-12-10 08:46:44 -05:00
Richard Kenner
5cb7a25a95 (expand_expr, case INDIRECT_REF): Correct typo in May 8 change.
From-SVN: r10695
1995-12-10 08:44:42 -05:00
Richard Kenner
cf04eb80b0 (store_constructor, record): If field is READONLY, set
RTX_UNCHANGING_P in TO_RTX.

From-SVN: r10671
1995-12-04 14:10:50 -05:00
Richard Kenner
16545b0a67 (truthvalue_conversion): Add declaration.
From-SVN: r10585
1995-11-26 11:19:51 -05:00