Commit Graph

841 Commits

Author SHA1 Message Date
Richard Henderson
12beba6fe6 expr.c (force_operand): Ignore flag_pic for detecting pic address loads.
* expr.c (force_operand): Ignore flag_pic for detecting pic
        address loads.
        * regclass.c (init_reg_sets_1): Test fixed_regs not flag_pic
        for determining if PIC_OFFSET_TABLE_REGNUM is call-clobbered.
        * resource.c (mark_target_live_regs): Use regs_invalidated_by_call
        instead of open-coded loop.
        * doc/tm.texi (PIC_OFFSET_TABLE_REGNUM): Clarify that it must
        be fixed when in use.

From-SVN: r49329
2002-01-29 14:34:48 -08:00
Richard Henderson
3d709fd3c5 * expr.c (move_by_pieces_1): Extend size before negation.
From-SVN: r49158
2002-01-23 17:16:23 -08:00
Richard Kenner
a426c92e8f Fix editing error
From-SVN: r48802
2002-01-12 09:33:18 -05:00
Richard Kenner
bb93b973c9 diagnostic.c (warn_deprecated_use): Rework to lower indentation.
* diagnostic.c (warn_deprecated_use): Rework to lower indentation.
	* expr.c (emit_move_insn_1): Remove warning, use HOST_WIDE_INT for
	offsets, and change line folding.
	* optabs.c (expand_binop): Remove warnings.
	* sdbout.c (sdbout_record_type_name): Constify NAME to avoid warning.

From-SVN: r48801
2002-01-12 09:05:32 -05:00
Janis Johnson
a84b4898c1 * expr.c (expand_assignment): Fix misuse of MEM_KEEP_ALIAS_SET.
From-SVN: r48785
2002-01-11 23:48:06 +00:00
Jakub Jelinek
b3ca30df78 expr.c (store_expr): Convert VOIDmode constants back to target's mode.
* expr.c (store_expr): Convert VOIDmode constants back to target's
	mode.

	* gcc.dg/20020108-1.c: New test.

From-SVN: r48658
2002-01-08 21:10:39 +01:00
Jakub Jelinek
b0832fe1f3 tree.h (expand_expr_stmt_value): Add maybe_last argument.
* tree.h (expand_expr_stmt_value): Add maybe_last argument.
	* c-common.h (genrtl_expr_stmt_value): Likewise.
	* stmt.c (expand_expr_stmt): Pass 1 as maybe_last.
	(expand_expr_stmt_value): Add maybe_last argument.
	Don't warn about statement with no effect if it is the last statement
	in expression statement.
	* c-semantics.c (genrtl_expr_stmt): Pass 1 as maybe_last.
	(genrtl_expr_stmt_value): Add maybe_last argument, pass it down to
	expand_expr_stmt_value.
	(expand_stmt) [EXPR_STMT]: Pass 1 as maybe_last to
	genrtl_expr_stmt_value if t is the last EXPR_STMT in its scope.
	* expr.c (expand_expr) [LABELED_BLOCK_EXPR, LOOP_EXPR]: Pass 1
	as maybe_last to expand_expr_stmt_value.

	* gcc.dg/20020104-1.c: New test.

From-SVN: r48541
2002-01-04 22:03:20 +01:00
Kazu Hirata
505ddab6ec builtins.c: Fix formatting.
* builtins.c: Fix formatting.
	* c-typeck.c: Likewise.
	* combine.c: Likewise.
	* expr.c: Likewise.
	* loop.c: Likewise.

From-SVN: r48512
2002-01-03 16:05:54 +00:00
Alexandre Oliva
1574ef130f c-common.h (genrtl_expr_stmt_value): Declare.
* c-common.h (genrtl_expr_stmt_value): Declare.
* c-semantics.c (genrtl_goto_stmt): Redirect to...
(genrtl_goto_stmt_value): ... this new function.  Pass new
argument down to expand_expr_stmt_value, taking
TREE_ADDRESSABLE into account.
* c-common.c (c_expand_expr): Mark the last EXPR_STMT of a
STMT_EXPR as addressable, i.e., one whose result we want.
* expr.c (expand_expr): Don't save expression statement value
of labeled_blocks or loop_exprs.
* stmt.c (expand_expr_stmt): Redirect to...
(expand_expr_stmt_value): ... this new function.  Use new
argument to tell whether to save expression value.
(expand_end_stmt_expr): Reset last_expr_type and
last_expr_value if we don't have either.
* tree-inline.c (declare_return_variable): Mark its use
statement as addressable.
* tree.h: Document new use of TREE_ADDRESSABLE.
(expand_expr_stmt_value): Declare.

From-SVN: r48456
2002-01-02 02:31:58 +00:00
Richard Kenner
c4e59f513b expr.c (store_field): Use adjust_address, not PUT_MODE.
* expr.c (store_field): Use adjust_address, not PUT_MODE.
	(expand_expr, case VIEW_CONVERT_EXPR): Likewise.
	* reload1.c (eliminate_regs, case SUBREG): Likewise, but use
	adjust_address_nv.
	* varasm.c (make_decl_rtl): Likewise.
	* integrate.c (copy_rtx_and_substitute, case MEM): Likewise, but use
	replace_equiv_address_nv.

From-SVN: r48387
2001-12-29 16:35:02 -05:00
Richard Kenner
9413de453d * expr.c (convert_move): If -fforce-mem, force FROM to not be memory.
From-SVN: r48385
2001-12-29 16:05:22 -05:00
Geoffrey Keating
19f90fadbc expr.c (expand_expr): Don't mark memory for non-constants as constant.
* expr.c (expand_expr): Don't mark memory for non-constants as
	constant.

From-SVN: r48338
2001-12-28 07:51:59 +00:00
Richard Kenner
6c7d86ec5e expr.c (expand_expr, [...]): Handling taking address of SAVE_EXPR.
* expr.c (expand_expr, case ADDR_EXPR): Handling taking address of
	SAVE_EXPR.
	* function.c (gen_mem_addressof): Add missing tests for SAVE_EXPR.
	(put_addressof_into_stack): Clarify code in setting of used_p.

From-SVN: r48268
2001-12-22 10:06:55 -05:00
Jeff Law
8f08e8c010 expmed.c (emit_store_flag): Extract updated comparison code from the return value of compare_from_rtx.
* expmed.c (emit_store_flag): Extract updated comparison code
        from the return value of compare_from_rtx.
        * expr.c (do_store_flag): Similarly.

From-SVN: r48128
2001-12-17 14:20:03 -07:00
Richard Kenner
3e037140fa expr.c (highest_pow2_factor, [...]): Fix error in last change.
* expr.c (highest_pow2_factor, case INTEGER_CST): Fix error in
	last change.

From-SVN: r48077
2001-12-16 13:19:34 -05:00
Richard Kenner
3a531a8b4e expr.c (highest_pow2_factor, [...]): Return BIGGEST_ALIGNMENT for 0.
* expr.c (highest_pow2_factor, case INTEGER_CST): Return
	BIGGEST_ALIGNMENT for 0.

From-SVN: r48042
2001-12-15 08:37:16 -05:00
Hans-Peter Nilsson
05c8e58b27 expr.c (expand_expr, [...]): Don't honor flag_force_addr for modifier != EXPAND_CONST_ADDRESS...
* expr.c (expand_expr, case ADDR_EXPR): Don't honor
	flag_force_addr for modifier != EXPAND_CONST_ADDRESS,
	modifier != EXPAND_INITIALIZER and modifier != EXPAND_SUM.

	* gcc.dg/20011113-1.c: New test.

From-SVN: r47984
2001-12-14 02:16:33 +00:00
Richard Kenner
1ed1b4fbd8 expr.c (copy_blkmode_from_reg): Add missing braces to eliminate warning and reformat comments.
* expr.c (copy_blkmode_from_reg): Add missing braces to eliminate
	warning and reformat comments.
	(expand_assignment): Don't pass EXPAND_WRITE if LHS is component.
	(highest_pow2_factor, case INTEGER_CST): Return BIGGEST_ALIGNMENT
	if overflow.

From-SVN: r47983
2001-12-13 20:37:46 -05:00
Richard Kenner
a9785c70dc Add missing blank.
From-SVN: r47930
2001-12-12 07:40:27 -05:00
Steve Ellcey
0d7839daee tm.texi (FUNCTION_ARG_REG_LITTLE_ENDIAN): New.
2001-12-11  Steve Ellcey  <sje@cup.hp.com>

	* doc/tm.texi (FUNCTION_ARG_REG_LITTLE_ENDIAN): New.
	* defaults.h (FUNCTION_ARG_REG_LITTLE_ENDIAN): New.
	* calls.c (store_unaligned_arguments_into_pseudos): Check
	FUNCTION_ARG_REG_LITTLE_ENDIAN to see how structures
	are passed/returned.
	* expr.c (move_block_from_reg): Ditto.
	(move_block_from_reg): Ditto.
	(copy_blkmode_from_reg): Ditto.
	* stmt.c (expand_return): Ditto.
	* stor-layout.c (compute_record_mode): If
	FUNCTION_ARG_REG_LITTLE_ENDIAN is set then check
	MEMBER_TYPE_FORCES_BLK even if mode == VOIDmode.
	* config/ia64/hpux.h (MEMBER_TYPE_FORCES_BLK): Set to true
	so that Structures of one field are still treated as structures.
	(FUNCTION_ARG_REG_LITTLE_ENDIAN): New, set it to true.
	(FUNCTION_ARG_PADDING): Set to ia64_hpux_function_arg_padding().
	(PAD_VARARGS_DOWN): Modify from default to not pad structures down.
	* config/ia64/ia64-protos.h (ia64_hpux_function_arg_padding): New.
	* config/ia64/ia64.c (ia64_hpux_function_arg_padding): New function
	to special case handling of structure padding.

From-SVN: r47904
2001-12-11 23:04:36 +00:00
Joseph Myers
d6a7951f20 ChangeLog.2, [...]: Fix spelling errors.
* ChangeLog.2, ChangeLog.3, ChangeLog.5, ChangeLog, alias.c,
	cfgbuild.c, expmed.c, expr.c, final.c, flow.c, fold-const.c,
	function.c, config/alpha/alpha.md, config/alpha/vms-ld.c,
	config/arm/arm.c, config/arm/arm.h, config/c4x/libgcc.S,
	config/i370/i370.c, config/i386/i386.c,
	config/i386/i386-interix.h, config/i386/i386.md,
	config/i386/i386.h, config/i386/netbsd-elf.h, config/ia64/ia64.c,
	config/m32r/m32r-protos.h, config/mcore/mcore.h,
	config/rs6000/rs6000.h, config/sparc/linux64.h,
	config/sparc/sparc.c, config/v850/v850-protos.h,
	config/cris/cris.h, config/s390/s390.md, config/elfos.h: Fix
	spelling errors.

From-SVN: r47815
2001-12-09 20:13:19 +00:00
Richard Kenner
65a07688cf expr.c (store_field): Remove warning.
* expr.c (store_field): Remove warning.
	(expand_expr, case COMPONENT_REF, case VIEW_CONVERT_EXPR): Likewise.
	(highest_pow2_factor, case MIN_EXPR, case MAX_EXPR): Add cases.
	(highest_pow2_factor, case *_DIV_EXPR): Only can do something if
	divisor constant power of 2.
	(highest_pow2_factor, case COMPOUND_EXPR): Look at operand 1.

From-SVN: r47753
2001-12-07 07:15:33 -05:00
Richard Kenner
37a08a298f attribs.c (handle_no_check_memory_usage_atribute): Deleted.
* attribs.c (handle_no_check_memory_usage_atribute): Deleted.
	(c_com): Delete its reference.
	* builtins.c: Delete memory checking code.
	* calls.c, expr.c, function.c, stmt.c: Likewise.
	* builtins.c (expand_builtin_arg_info): Remove reference to
	EXPAND_MEMORY_USE_* modifiers.
	* explow.c (expr_size): Likewise.
	* expr.c (expand_expr, expand_increment): Likewise.
	* expr.h (ARGS_SIZE_RTX): Likewise.
	* function.c (assign_parms, expand_pending_sizeso): Likewise.
	* c-decl.c (duplicate_decls): Don't handle DECL_NO_CHECK_MEMORY_USAGE.
	* expr.c (in_check_memory_usage): Delete.
	(get_push_address, get_memory_usage_from_modifier): Delete.
	(expand_assigment): Use EXPAND_WRITE on destination.
	(expand_expr): Delete ro_modifier.
	* expr.h (expand_modifier): Delete EXPAND_MEMORY_* entries and
	add EXPAND_WRITE.
	(memory_use_mode): Delete.
	* flags.h (flag_check_memory_usage): Deleted.
	(flag_prefix_function_name): Likewise.
	* function.c (expand_function_start): Don't set
	current_function_check_memory_usage.
	* function.h (check_memory_usage): Delete.
	* libfuncs.h, optabs.c: Delete chkr_* stuff.
	* stmt.c (expand_asm_opernd): Change EXPAND_MEMORY_USE_WO to
	EXPAND_WRITE.
	* toplev.c (flag_check_memory_usage): Deleted.
	(flag_prefix_function_name): Likewise.
	(f_options, process_options): Delete references to above.
	* tree.h (DECL_NO_CHECK_MEMORY_USAGE): Deleted.
	* varasm.c (CHKR_PREFIX): Deleted.
	(make_decl_rtl): Remove flag_prefix_function_name handling.
	(assemble_name): Likewise.
	* doc/extend.texi: Remove no_check_memory_usage attribute.
	* doc/invoke.texi: Remove -fcheck-memory-usage
	and -fprefix-function-name.
	* cp/decl.c (duplicate_decls): Don't copy DECL_NO_CHECK_MEMORY_USAGE.

From-SVN: r47697
2001-12-05 17:37:41 -05:00
Jakub Jelinek
7254c5fa73 expr.c (expand_expr): When checking promoted value, use DECL_MODE (exp) and not mode.
* expr.c (expand_expr): When checking promoted value, use
	DECL_MODE (exp) and not mode.

	* g++.dg/other/anon-union.C: New test.

From-SVN: r47674
2001-12-05 15:15:37 +01:00
Richard Kenner
c24ae149dd expr.c (store_expr): When copying string constant into array...
* expr.c (store_expr): When copying string constant into array,
	use functions that update memrefs instead of computations on
	addresses to better track MEMs.  Also properly handle 32/64 pointers.
	(expand_expr): Use TARGET even if not reg for multi-word CONSTRUCTOR.
	(expand_expr, case CONSTRUCTOR): Fix errors in parms to assign_temp.

From-SVN: r47663
2001-12-05 06:44:37 -05:00
Alexandre Oliva
b0ca54affc Revert previous patch
From-SVN: r47612
2001-12-04 15:10:16 +00:00
Alexandre Oliva
d1bd43d950 stmt.c (expand_expr_stmt): Keep last_expr_value non-NULL iff we're interested in the result.
* stmt.c (expand_expr_stmt): Keep last_expr_value non-NULL iff
we're interested in the result.  Use it to tell whether to
ignore results of enclosed expressions.
(expand_start_stmt_expr): Added new argument, and initialize
last_expr_value accordingly.
* tree.h (expand_start_stmt_expr): Adjusted declaration.
* c-common.c (c_expand_expr): Adjust call.
* expr.c (expand_expr) [EXPR_WFL]: Pass const0_rtx down if
ignoring the result.

From-SVN: r47607
2001-12-04 10:30:04 +00:00
Richard Henderson
998d7deb14 rtl.h (mem_attrs): Rename decl to expr; adjust all users.
* rtl.h (mem_attrs): Rename decl to expr; adjust all users.
        (MEM_EXPR): Rename from MEM_DECL; adjust all users.
        * emit-rtl.c (set_mem_expr): Rename from set_mem_decl.
        * expr.h, final.c, reload1.c: Adjust users.

        * alias.c (nonoverlapping_component_refs_p): New.
        (decl_for_component_ref, adjust_offset_for_component_ref): New.
        (nonoverlapping_memrefs_p): Use them.
        * emit-rtl.c (component_ref_for_mem_expr): New.
        (set_mem_attributes): Use it.
        (set_mem_offset): New.
        * expr.c (expand_assignment): Call set_mem_attributes for
        inner references; adjust the memory offset as needed.
        * print-rtl.c (print_mem_expr): New.
        (print_rtx): Use it.

From-SVN: r47534
2001-12-02 11:04:23 -08:00
Jeffrey A Law
35a53991ae expr.c (store_expr): When copying a string constant into an array...
* expr.c (store_expr): When copying a string constant into an
        array, reset the known alignment of the MEM for the section to
        be cleared to BITS_PER_UNIT.

From-SVN: r47432
2001-11-28 15:34:07 -07:00
Richard Kenner
ac79cd5ab9 Makefile.in (c-lang.o): Depends on langhooks-def.h.
* Makefile.in (c-lang.o): Depends on langhooks-def.h.
	(expr.o, varasm.o): Depends on langhooks.h.
	* c-common.c (c_safe_from_p): Always declare.
	(c_expand_expr): Refine when declared.
	* c-lang.c (c-common.h): Now include.
	(LANG_HOOKS_SAFE_FROM_P): Define new hook.
	(c_init): Don't set lang_safe_from_expr.
	* expr.c (langhooks.h): Now include.
	(lang_safe_from_p): No longer define.
	(safe_from_p): Use lang hook.
	(expand_expr): Set IGNORE if VOID_TYPE result of VIEW_CONVERT_EXPR too.
	(expand_expr, case VIEW_CONVERT_EXPR): Pass ro_modifier down.
	* expr.h (lang_expand_constant, lang_safe_from_p): Delete.
	* langhooks-def.h (lhd_return_tree, lhd_safe_from_p): New decls.
	(LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_SAFE_FROM_P): New hooks.
	* langhooks.c (lhd_return_tree, lhd_safe_from_p): New functions.
	* langhooks.h (struct lang_hooks): New fields expand_constant
	and safe_from_p.
	* output.h (output_constant): Size arg is HOST_WIDE_INT.
	* stmt.c (expand_decl_init): No longer need to expand constant
	for CONST_DECL.
	* stor-layout.c (put_pending_size): Don't check for SAVE_EXPR.
	* toplev.c (lang_expand_constant): Delete var.
	* tree.c (save_expr): Don't put another SAVE_EXPR around simple
	operations on SAVE_EXPR.
	* varasm.c (langhooks.h): Now include.
	(compare_constant_1): Use lang_hooks, not lang_expand_constant.
	(record_constant_1, output_addressed_constants): Likewise.
	(initializer_constant_valid_p, output_constant): Likewise.
	(output_constant_def): Process no-defer of string constant.
	(output_addressed_constants, case ADDR_EXPR): Use handled_component_p.
	(output_constant): Strip more conversions.
	Track our size and pad for the rest.
	(array_size_for_constructor): Remove code for non-byte STRING_CST.
	(output_constructor): SIZE now HOST_WIDE_INT.
	* cp/Make-lang.in (cp-lang.o): Depends on c-common.h.
	* cp/cp-lang.c (c-common.h): Include.
	(LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_SAFE_FROM_P): New hooks.
	* cp/decl.c (cxx_init_decl_processing): Don't set lang_safe_from_p.
	* cp/expr.c (init_cplus_expand): Don't set lang_expand_constant.

From-SVN: r47376
2001-11-27 09:31:29 -05:00
DJ Delorie
8b6000fc89 expr.c (store_constructor): Actually use the value computed if WORD_REGISTER_OPERATIONS.
* expr.c (store_constructor): Actually use the value computed
if WORD_REGISTER_OPERATIONS.

From-SVN: r47359
2001-11-26 17:29:46 -05:00
Richard Kenner
c11c10d87b expr.c (expand_expr, [...]): Refine slightly and also support TREE_ADDRESSABLE.
* expr.c (expand_expr, case VIEW_CONVERT_EXPR): Refine slightly
	and also support TREE_ADDRESSABLE.
	* tree.def (VIEW_CONVERT_EXPR): Document TREE_ADDRESSABLE.

From-SVN: r47249
2001-11-21 18:32:03 -05:00
Richard Kenner
ed239f5a43 tree.def (VIEW_CONVERT_EXPR): New tree code.
* tree.def (VIEW_CONVERT_EXPR): New tree code.
	* tree.h (handled_component_p): New declaration.
	* alias.c (handled_component_p): Move function from here ...
	* expr.c (handled_component_p): ... to here and non longer static.
	(is_zeros_p, case VIEW_CONVERT_EXPR): New case.
	(store_field): Remove unneeded MEM_COPY_ATTRIBUTES call.
	(get_inner_reference): Handle VIEW_CONVERT_EXPR.
	(expand_expr, case VAR_DECL): Clean up handling of re-layout case.
	(expand_expr, case VIEW_CONVERT_EXPR): New case.
	(expand_expr, cse ADDR_EXPR): No need to copy if already
	BIGGEST_ALIGNMENT.
	* fold-const.c (fold, case VIEW_CONVERT_EXPR): New case.
	* varasm.c (initializer_constant_value_p, case VIEW_CONVERT_EXPR): New.
	(output_constant): Handle VIEW_CONVERT_EXPR.
	* dwarf2out.c (loc-descriptor_from_tree, add_bound_info):
	Add new case for VIEW_CONVERT_EXPR.

From-SVN: r47179
2001-11-19 15:38:07 -05:00
Richard Kenner
e27cc84b10 expr.c (expand_expr, [...]): Update alignment of DECL_RTL after re-laying out decl in incomplete case.
* expr.c (expand_expr, case VAR_DECL): Update alignment of DECL_RTL
	after re-laying out decl in incomplete case.
	(expand_expr, case ADDR_EXPR): Fix typo in copy case.

From-SVN: r47153
2001-11-18 16:44:26 -05:00
Richard Kenner
c3d321205f tree.h (TYPE_ALIGN_OK): New flag.
* tree.h (TYPE_ALIGN_OK): New flag.
	* emit-rtl.c (set_mem_attributes): Handle it.
	* expr.c (emit_single_push_insn): Only set to alias set 0 if
	doing sibcall optimization.
	(expand_expr, case COMPONENT_REF): Call set_mem_attributes on case
	when make temporary.
	(expand_expr, case CONVERT_EXPR): Simplify convert-to-union case.
	(expand_expr, case ADDR_EXPR): Abort if TYPE_ALIGN_OK and need copy.

From-SVN: r47149
2001-11-18 14:36:01 -05:00
Richard Kenner
c952ff4b08 expr.c (expand_expr, [...]): Refine test for when to copy misaligned data.
* expr.c (expand_expr, case ADDR_EXPR): Refine test for when to
	copy misaligned data.
	* varasm.c (assemble_variable): Set alignment into MEM when changed.

From-SVN: r47089
2001-11-16 09:02:56 -05:00
Richard Kenner
a8ca89dca8 expr.c (expand_expr, [...]): Only copy for misaligned if BLKmode.
* expr.c (expand_expr, case ADDR_EXPR): Only copy for misaligned if
	BLKmode.

From-SVN: r47086
2001-11-16 07:11:13 -05:00
Stan Shebs
38b3baaef4 * expr.c (expand_expr, case COMPONENT_REF): Fix variable ref.
From-SVN: r47081
2001-11-16 04:40:11 +00:00
Richard Kenner
a06ef755a3 alias.c (nonoverlapping_memrefs): Use REGNO_PTR_FRAME_P.
* alias.c (nonoverlapping_memrefs): Use REGNO_PTR_FRAME_P.
	* emit-rtl.c (change_address): Fix typo in default alignment.
	(adjust_address_1): Use mode of NEW, not MODE, when setting size.
	* expr.c (highest_pow2_factor, case WITH_RECORD_EXPR): New case.
	* rtl.h (REGNO_PTR_FRAME_P): New macro.

	* expr.c (store_field): Pass tree instead of max size; callers changed.
	Change handling of alignment.
	Only copy to_rtx if is TARGET.
	(expand_expr_unaligned): Delete; callers now use expand_expr.
	(emit_cmp_insn): No longer take ALIGN parm; all callers changed.
	(expand_assignment): Change handling of alignment.
	Only copy to_rtx if was original.
	(get_inner_reference): No longer return alginment; callers changed.
	(expand_expr, case COMPONENT_REF): Change handling of alignment.
	(expand_expr, case ADDR_EXPR): Make copy if not sufficiently aligned.
	(compare_from_rtx): Delete ALIGN parm; all callers changed.
	(do_compare_rtx_and_jump): Likewise.
	* expr.h: Reflect above changes.
	* tree.h: Likewise.
	* dwarf2out.c (loc_descriptor_from_tree): Remove ALIGN parameter
	to get_inner_reference.
	* except.c: Remove ALIGN parameter in call to emit_cmp_and_jump_insns.
	* explow.c: Likewise.
	* loop.c: Likewise.
	* optabs.c: Likewise.
	(prepare_cmp_insn): Now static; remove ALIGN parm.  Callers changed.
	(emit_cmp_and_jump_insns): Remove ALIGN parm; all callers changed.
	* fold-const.c: Remove PALIGN in calls to get_inner_reference.
	* function.c (assign_stack_temp_for_type): No longer static.
	* optabs.h (emit_cmp_insn): Remove ALIGN parm.
	(prepare_cmp_insn): Delete declaration.
	* rtl.h (assign_stack_temp_for_type): Add declaration.
	* config/d30v/d30v.c: Reflect above changes.
	* config/i860/i860.c, config/ia64/ia64.c: Likewise.
	* config/rs6000/rs6000.c, config/sh/sh.c: Likewise.
	* ada/trans.c, ada/utils2.c: Remove PALIGN parameter to
	get_inner_reference.

From-SVN: r47075
2001-11-15 18:44:58 -05:00
Jakub Jelinek
630036c6a3 emit-rtl.c (adjust_address_1): Add ADJUST argument.
* emit-rtl.c (adjust_address_1): Add ADJUST argument.
	(adjust_automodify_address_1): New.
	* expr.h (adjust_address, adjust_address_nv): Adjust.
	(adjust_automodify_address, adjust_automodify_address_nv): Define.
	(adjust_address_1): Update prototype.
	(adjust_automodify_address_1): Add prototype.
	* expr.c (move_by_pieces_1): Use adjust_automodify_address.
	(store_by_pieces_2): Likewise.

	* gcc.c-torture/execute/20011113-1.c: New test.

From-SVN: r46988
2001-11-13 17:45:18 +01:00
Richard Kenner
34e81b5a0f Makefile.in (expr.o): Depends on insn-attr.h.
* Makefile.in (expr.o): Depends on insn-attr.h.
	* expr.c (insn-attr.h): New include.
	(force_operand): If INSN_SCHEDULING, deal with paradoxical SUBREG
	of MEM.
	(highest_pow2_factor, case INTEGER_CST): Handle negative values.
	(expand_expr): Remove unneeded mark_temp_addr_taken calls and
	clean up related usage in ADDR_EXPR.
	(expand_expr_unaligned): Likewise.

From-SVN: r46980
2001-11-13 05:47:40 -05:00
Richard Kenner
04050c690d expmed.c (extract_bit_field): No longer pass in alignment.
* expmed.c (extract_bit_field): No longer pass in alignment.
	(extract_fixed_bit_field, extract_split_bit_field): Likewise.
	(store_bit_field, store_fixed_bit_field, store_split_bit_field):
	Likewise.
	* expr.c (store_constructor, store_constructor_field): Likewise.
	(store_field, emit_group_load, emit_group_store): Likewise.
	* expr.h (emit_group_load, emit_group_store): Delete ALIGN parm.
	(store_bit_field, extract_bit_field): Likewise.
	* calls.c, expr.c, function.c: Change calls to above functions.
	* ifcvt.c, stmt.c: Likewise.

From-SVN: r46926
2001-11-11 06:02:26 -05:00
Richard Kenner
66c60e6756 expr.c (emit_block_move): If X is readonly emit CLOBBER for it.
* expr.c (emit_block_move): If X is readonly emit CLOBBER for it.
	(clear_storage): Likewise, for OBJECT.

From-SVN: r46865
2001-11-08 18:33:08 -05:00
Richard Kenner
9e446a5c1e expr.c (store_field): When making temp object for unaligned component, set it to alias set 0.
* expr.c (store_field): When making temp object for unaligned
	component, set it to alias set 0.

From-SVN: r46806
2001-11-06 09:20:30 -05:00
Richard Kenner
d6b6783b3f expr.c (expand_expr, [...]): If at top level, don't call force_const_mem.
* expr.c (expand_expr, case ADDDR_EXPR): If at top level, don't call
	force_const_mem.

From-SVN: r46735
2001-11-03 11:14:05 -05:00
Aldy Hernandez
bafe341a4f expr.c (convert_move): Use simplify_gen_subreg to make SUBREG so we avoid SUBREGing memory.
* expr.c (convert_move): Use simplify_gen_subreg to make SUBREG so
        we avoid SUBREGing memory.

From-SVN: r46722
2001-11-02 22:17:11 +00:00
Jakub Jelinek
3d23824843 emit-rtl.c (set_unique_reg_note): Don't create REG_EQUAL or REG_EQUIV notes for ASM_OPERANDS.
* emit-rtl.c (set_unique_reg_note): Don't create REG_EQUAL or
	REG_EQUIV notes for ASM_OPERANDS.  Return the new note (if any).
	* rtl.h (set_unique_reg_note): Change return value.
	* gcse.c (try_replace_reg): Use set_unique_reg_note.
	* cse.c (cse_insn): Likewise.
	* expr.c (emit_move_insn): Likewise.
	* explow.c (force_reg): Likewise.
	* local-alloc (update_equiv_regs): Likewise.
	* loop.c (move_moveables, load_mems): Likewise.
	* reload (find_reloads): Likewise.

	* gcc.dg/20011029-2.c: New test.

From-SVN: r46636
2001-10-30 13:41:45 +01:00
Jan Hubicka
58f698416a expr.c (emit_group_load): Support CONCATs by storing them to memory and reloading.
* expr.c (emit_group_load): Support CONCATs by storing them to memory
	and reloading.

From-SVN: r46586
2001-10-28 16:10:12 +00:00
Richard Kenner
61cb205c64 * expr.c (store_constructor_field): Only call adjust_address on MEM.
From-SVN: r46585
2001-10-28 11:06:17 -05:00
Richard Kenner
70072ed99e expr.c (stor_constructor_field): Always call adjust_address.
* expr.c (stor_constructor_field): Always call adjust_address.
	Copy TARGET before changing its alias set.
	(store_field): Likewise, for TO_RTX.
	(get_inner_reference): Stop at PLACEHOLDER_EXPR if can't find
	replacement.
	(safe_from_p, case ADDR_EXPR): Properly check for conflict.
	(find_placeholder): Return 0 if can't find object.
	(expand_expr, case PLACEHOLDER_EXPR): Abort if find_placeholder
	returns 0.

From-SVN: r46571
2001-10-27 17:30:46 -04:00