Commit Graph

378 Commits

Author SHA1 Message Date
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