Commit Graph

378 Commits

Author SHA1 Message Date
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
Richard Kenner
2ae342f72c (expand_expr, case ARRAY_REF): Properly convert types of index, size,
and multiplication.

From-SVN: r10573
1995-11-09 11:01:13 -05:00
Richard Kenner
4c08eef0d2 (clear_storage): SIZE is now rtx, not int.
(store_constructor): Call clear_storage with rtx.
(get_inner_reference): Convert index to precision of sizetype, not
POINTER_SIZE.
(expand_expr, case ARRAY_REF): Likewise.

From-SVN: r10529
1995-10-27 06:41:39 -04:00
Richard Kenner
3bb5826ab8 (safe_from_p, case RTL_EXPR): Return 0 if RTL_EXPR_SEQUENCE exists.
Delete code to return 0 if exp_rtl is zero.

From-SVN: r10492
1995-10-20 19:30:53 -04:00
Mike Stump
0ebba7fc0d fix small typo
From-SVN: r10431
1995-10-04 17:59:40 +00:00
Richard Kenner
15a7a8ec1c (emit_move_insn_1): When doing multi-word move, show output is
clobbered.

From-SVN: r10427
1995-10-03 12:31:19 -04:00
Richard Kenner
2bbf216f5e (expand_builtin_return_addr): Break out functionality from expand_builtin.
(expand_builtin): Call expand_builtin_return_addr.

From-SVN: r10418
1995-10-03 11:48:39 -04:00
Richard Kenner
b74f5ff2bd (expand_expr, case COMPONENT_REF): If getting component of union of
variable size, propagate TARGET.

From-SVN: r10415
1995-10-01 21:23:04 -04:00
Richard Kenner
f29369b9f2 (store_expr): When storing promoted value, don't return MEM if address
contains target.

From-SVN: r10414
1995-09-29 07:47:40 -04:00
Richard Kenner
5480a90cce (expand_builtin...
(expand_builtin, case BUILT_IN_MEMCPY): Strip off all NOP_EXPRs from
the source and destination nodes, then set MEM_IN_STRUCT_P.

From-SVN: r10397
1995-09-22 19:19:34 -04:00
Richard Kenner
f4510f3757 (safe_from_p): Only safe if EXP is variable-size and X is BLKmode.
From-SVN: r10243
1995-08-15 17:51:44 -04:00
Richard Kenner
402c7311a9 (preexpand_calls): Don't look past a CLEANUP_POINT_EXPR.
From-SVN: r10165
1995-07-26 09:09:44 -04:00
Richard Kenner
dabf8373fb (stor_expr): Force stack adjust before NO_DEFER_POP.
(expand_expr, case COND_EXPR): Likewise.

From-SVN: r10131
1995-07-14 18:18:14 -04:00
Richard Kenner
9c51f37585 (expand_expr, TARGET_EXPR): Only use original_target if !ignore.
From-SVN: r10061
1995-06-27 07:58:20 -04:00
Richard Kenner
0184223489 (expand_expr, case COND_EXPR): Protect the condition from being evaluated more than once.
(expand_expr, case COND_EXPR): Protect the condition from being evaluated more
than once.
(do_jump, case TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR): Likewise.

From-SVN: r10055
1995-06-26 18:57:58 -04:00
Richard Kenner
0f869a71da (expand_expr, TARGET_EXPR): Use original_target.
From-SVN: r10035
1995-06-22 21:41:40 -04:00
Richard Kenner
940d9d638b Update FSF address.
From-SVN: r9959
1995-06-15 07:33:25 -04:00
Richard Kenner
c816db88c3 (expand_builtin_apply_args): Put back original register save and
restore order.

From-SVN: r9952
1995-06-14 17:03:45 -04:00
Richard Kenner
330446eb52 (expand_expr, case PLACEHOLDER_EXPR): Consider two types identical if
their TYPE_MAIN_VARIANTs are the same.

From-SVN: r9897
1995-06-06 18:55:28 -04:00
Richard Kenner
9faa82d8c0 Fix typos in comments.
From-SVN: r9712
1995-05-16 08:39:54 -04:00
Richard Kenner
201012cbf9 (do_jump, case EX_EXPR, NE_EXPR): Fix typo for complex.
From-SVN: r9616
1995-05-11 06:44:14 -04:00
Richard Kenner
1125706fe4 (expand_expr, case INDIRECT_REF): Set RTX_UNCHANGING_P if both
TREE_READONLY and TREE_STATIC set.

From-SVN: r9591
1995-05-08 17:59:41 -04:00
Richard Kenner
c8465d869b (do_jump): Fix error in last change.
From-SVN: r9583
1995-05-05 17:36:40 -04:00
Richard Kenner
0e8c917222 (do_jump, case EQ_EXPR, NE_EXPR): Properly compare complex.
From-SVN: r9577
1995-05-05 07:03:41 -04:00
Jim Wilson
4c7a0be934 (expand_expr, case SAVE_EXPR): Handle the case where
mode is VOIDmode.

From-SVN: r9556
1995-05-01 16:26:28 -07:00
Richard Kenner
67225c151e (expand_expr, case CONSTRUCTOR): Don't set target to zero if more then one word.
(expand_expr, case CONSTRUCTOR): Don't set target to zero if more then one
word.
Pass size and alignment to move_by_pieces_ninsns in bytes, not bits.

From-SVN: r9548
1995-04-30 07:22:58 -04:00
Richard Kenner
33cf5823a5 (expand_builtin, case BUILT_IN_CONSTANT_P): A pointer to a string
constant is a constant.

From-SVN: r9475
1995-04-26 12:29:48 -04:00
Jim Wilson
e9cf6a9776 (struct move_by_pieces): Add to_struct and from_struct fields.
(move_by_pieces): Set to_struct and from_struct fields.
(move_by_pieces_1): Set MEM_IN_STRUCT_P of to1 and from1.
(expand_builtin, case BUILT_IN_MEMCPY): New variable type.
Set MEM_IN_STRUCT_P of src_mem and dest_mem.

From-SVN: r9468
1995-04-25 16:36:38 -07:00
Richard Kenner
ee33823f45 (expand_builtin_apply_args): If STACK_REGS is defined...
(expand_builtin_apply_args): If STACK_REGS is defined, generate USE
insns before the function body, thus showing which registers are
filled with parameters.
Reverse order of saving registers, more compact code for i387.
(expand_builtin_apply): Likewise.

From-SVN: r9462
1995-04-25 19:09:01 -04:00
Richard Kenner
34aa3599f1 (convert_move): Don't access a hard reg in an invalid mode when doing
a truncation.

From-SVN: r9447
1995-04-25 17:05:37 -04:00
Per Bothner
b09f334842 (store_constructor): Fix BITS_BIG_ENDIAN -> BYTES_BIG_ENDIAN for SET_TYPE.
From-SVN: r9416
1995-04-18 18:07:59 -07:00
Jim Wilson
85c53d245a (expand_builtin, case BUILT_IN_MEMCPY): Call force_operand
on dest_rtx before returning it.

From-SVN: r9393
1995-04-17 12:19:48 -07:00
Richard Kenner
e9cdf6e48c (expand_increment): Handle case where INCREMENTED has a non-trivial
conversion.

From-SVN: r9337
1995-04-08 16:32:01 -04:00
Richard Kenner
9fcfcce705 (expand_expr, case ADDR_EXPR): Always call convert_memory_address when
converting; add extra arg.

From-SVN: r9329
1995-04-07 12:35:49 -04:00
Richard Kenner
88f63c77d9 (clear_storage, expand_assignment, store_{expr,constructor}): Use ptr_mode instead of Pmode in some places.
(clear_storage, expand_assignment, store_{expr,constructor}): Use ptr_mode
instead of Pmode in some places.
(expand_expr, expand_builtin): Likewise.
(push_block, store_expr): Convert size to Pmode.
(expand_expr, case ADDR_EXPR): Convert from Pmode to ptr_mode.

From-SVN: r9305
1995-04-03 18:12:50 -04:00
Jim Wilson
01188446e8 (expand_assignment): When offset is zero, make new MEM
before setting MEM_VOLATILE_P.

From-SVN: r9167
1995-03-10 11:45:20 -08:00
Jason Merrill
f283f66b1f (expand_expr, CLEANUP_POINT_EXPR): Force the operand out
of memory before running cleanups.

From-SVN: r9117
1995-03-03 03:45:02 +00:00
Per Bothner
b001a02f29 Remove Feb 28's FUNCTION_NEEDS_STATIC_CHAIN changes.
From-SVN: r9106
1995-03-01 19:33:25 -08:00
Richard Kenner
f635a84d96 (store_expr): Do conversion in two steps for promoted lhs.
From-SVN: r9098
1995-03-01 06:39:01 -05:00
Per Bothner
7c38c3ad5e expr.c (expand_expr): If non-local variable is expanded...
* expr.c (expand_expr):  If non-local variable is expanded,
set FUNCTION_NEEDS_STATIC_CHAIN (current_function_decl).
* expr.c (expand_expr case ADDR_EXPR):  Check for trampoline
using FUNCTION_NEEDS_STATIC_CHAIN, instead of decl_function_context.

From-SVN: r9095
1995-02-28 15:05:01 -08:00
Jim Wilson
f9409c3ac3 (expand_expr, case COMPONENT_REF): Don't fetch unaligned
field if we only want its address.

From-SVN: r9069
1995-02-24 17:45:43 -08:00
Per Bothner
b4ee5a7269 * expr.c (store_constructor): Don't use get_set_constructor_words.
From-SVN: r8954
1995-02-14 22:40:27 -08:00
Jim Wilson
5b4ff0de30 (expand_builtin, case BUILT_IN_NEXT_ARG): Don't warn when
no argument if this is a varargs routine.

From-SVN: r8912
1995-02-11 15:12:05 -08:00
Richard Kenner
5b6c44ffbc (store_constructor, ARRAY_TYPE): Use code for non-integer INDEX for non-integer ELTTYPE size.
(store_constructor, ARRAY_TYPE): Use code for non-integer INDEX for
non-integer ELTTYPE size.
Allow INDEX to be zero in code and divide size by BITS_PER_UNIT.

From-SVN: r8902
1995-02-10 17:37:38 -05:00
Richard Kenner
2391bfeaa2 (expand_expr, case MINUS_EXPR): Remove bogus operand swap.
From-SVN: r8829
1995-01-27 18:51:02 -05:00
Jim Wilson
fa2981d865 (expand_expr, case MIN_EXPR): If must emit multiple
instructions, then don't allow a MEM target.

From-SVN: r8822
1995-01-25 15:09:41 -08:00
Richard Kenner
7f62854a80 (get_inner_reference): Don't ignore CONVERT_EXPR from non-UNION_TYPE to UNION_TYPE.
(get_inner_reference): Don't ignore CONVERT_EXPR from non-UNION_TYPE
to UNION_TYPE.
(expand_expr, case CONVERT_EXPR): Check for conversion to union before
checking for not changing mode.

From-SVN: r8772
1995-01-18 07:43:31 -05:00
Richard Kenner
e6d8c385f3 (get_inner_reference): Only treat offset of PLUS_EXPR as special if
second arg is integer constant.

From-SVN: r8762
1995-01-14 17:49:47 -05:00
Jeff Law
3668e76e90 calls.c (expand_call): Set MEM_IN_STRUCT_P as needed on return value from assign_stack_temp.
* calls.c (expand_call): Set MEM_IN_STRUCT_P as needed on return
	value from assign_stack_temp.
	(store_one_arg): Likewise.
	* expr.c (save_noncopied_parts): Likewise.
	(expand_expr): Likewise.
	* function.c (assign_parms): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	* stmt.c (expand_decl): Likewise.

From-SVN: r8708
1994-12-29 19:50:28 -07:00
Richard Kenner
cd11b87e6a (store_constructor): Properly get constant part of bit position when
DECL_FIELD_BITPOS is a PLUS_EXPR.

From-SVN: r8655
1994-12-15 07:49:16 -05:00
Richard Kenner
1b604ae412 (get_inner_reference): Use EXACT_DIV_EXPR to compute byte offset from
bit offset.

From-SVN: r8654
1994-12-14 19:01:13 -05:00
Richard Kenner
ae4311830e (expand_expr, case MINUS_EXPR): Properly handle case when the NEGATE
overflows.

From-SVN: r8648
1994-12-13 07:50:58 -05:00
Per Bothner
071a659510 * expr.c (store_constructor): Add support for SET_TYPE.
From-SVN: r8604
1994-12-02 20:17:51 -08:00
Richard Kenner
5c5033c3c7 (convert_move): When emit multiword conversion, force FROM into a new
pseudo-reg if it overlaps TO.

From-SVN: r8593
1994-11-30 19:07:49 -05:00
Richard Kenner
8ca00751f7 (emit_block_move): Only use movstr if size is small enough constant or
MODE is at least BITS_PER_WORD.

From-SVN: r8585
1994-11-30 18:13:44 -05:00
Jeff Law
aaf87c453b expr.c (expand_assignment): For BLKmode structure returns...
* expr.c (expand_assignment): For BLKmode structure returns,
	copy the return value from registers into the target memory
	locations.

From-SVN: r8575
1994-11-28 22:44:19 -07:00
Jim Wilson
c7a7ac465e (move_by_pieces, move_by_pieces_ninsns, emit_push_insn,
expand_assignment, store_field, expand_expr): Likewise.
(SLOW_UNALIGNED_ACCESS): Default to STRICT_ALIGNMENT, not zero.

From-SVN: r8569
1994-11-28 16:58:52 -08:00
Richard Kenner
a98c9f1ab2 (emit_move_insn): If splitting up into individual words and X is a push_operand...
(emit_move_insn): If splitting up into individual words and X is a
push_operand, do the push and reference top of stack.

From-SVN: r8554
1994-11-23 13:30:35 -05:00
Richard Kenner
5a32d03841 (convert_move): Don't put FROM in a register if it is a SUBREG.
(store_expr): If don't want a value and storing into promoted
variable, do conversion at tree level; don't copy volatile MEM unless
want value, as comment says.

From-SVN: r8466
1994-11-16 07:47:58 -05:00
Richard Kenner
2e5ec6cf3b (do_jump_by_parts_greater_rtx): No longer static.
(expand_expr): Delete code for plain `abs'.

From-SVN: r8443
1994-11-15 18:35:35 -05:00
Richard Kenner
2d44400163 (expand_expr, COND_EXPR case): Don't use original target as a temp if it's a volatile mem ref.
(expand_expr, COND_EXPR case): Don't use original target as a temp if
it's a volatile mem ref.  Finish previous patch (don't expand "X ? A &
1 : A" as "A & (X != 0)").

From-SVN: r8369
1994-10-31 08:11:19 -05:00
Richard Kenner
7a0b7b9a97 (expand_expr, case COMPONENT_REF): Don't extract field from a CONSTRUCTOR if it already has a TREE_CST_RTL.
(expand_expr, case COMPONENT_REF): Don't extract field from a CONSTRUCTOR if
it already has a TREE_CST_RTL.
(expand_expr, case ADDR_EXPR): Call mark_temp_addr_taken on the temporary made
when operand needs to be stored into memory.

From-SVN: r8362
1994-10-31 07:23:35 -05:00
Doug Evans
9fbd9f58d7 (expand_expr, COND_EXPR case): Don't expand "X ? A & 1 : A" as "A & (X != 0)".
From-SVN: r8345
1994-10-26 22:22:06 +00:00
Richard Kenner
b9bcad654a (convert_move): Add TImode conversions.
From-SVN: r8248
1994-10-10 19:19:32 -04:00
Richard Kenner
45524ce90e Fix typo in last change.
From-SVN: r8236
1994-10-07 08:36:00 -04:00
Richard Kenner
6676e72f96 (safe_from_p): If EXP has a variable size, assume safe.
(preexpand_calls): Don't preexpand a call that returns a variable-sized object.

From-SVN: r8234
1994-10-07 08:26:47 -04:00
Richard Kenner
22619c3f61 (store_expr): Don't clobber TEMP with address.
From-SVN: r8227
1994-10-06 07:25:21 -04:00
Richard Kenner
af5b53ed8d (expand_expr, case ADDR_EXPR): Call mark_temp_addr_taken.
From-SVN: r8225
1994-10-06 06:53:40 -04:00
Richard Kenner
41dfd40ca0 Fix error in last change.
From-SVN: r8215
1994-10-04 21:42:54 -04:00
Richard Kenner
34661f5c30 (do_jump_for_compare): Properly scan insns when branch is at start of
sequence.

From-SVN: r8214
1994-10-04 19:06:09 -04:00
Jim Wilson
1899299599 (result_vector): Use INCOMING_REGNO when !savep instead
of when savep.

From-SVN: r8170
1994-09-29 17:02:36 -07:00
Mike Stump
7ee055f4ae expr.c (do_jump): Handle cleanups in TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
* expr.c (do_jump): Handle cleanups in TRUTH_ANDIF_EXPR and
        TRUTH_ORIF_EXPR.

From-SVN: r8164
1994-09-29 20:45:05 +00:00
Richard Kenner
0407367d53 (convert_move): Added handling of PDImode conversions.
From-SVN: r8161
1994-09-28 19:32:44 -04:00
Richard Kenner
809ab85718 (emit_move_insn_1): Never make a no-conflict block.
From-SVN: r7951
1994-08-19 19:23:00 -04:00
Richard Kenner
ba558a85d2 (expand_builtin): Relegate sin and cos to ffast-math.
From-SVN: r7886
1994-08-11 12:56:59 -04:00
Jason Merrill
fd67d2b620 (expand_expr...
(expand_expr, COND_EXPR case): Use truthvalue_conversion
        to make the condition for running cleanups acceptable to
        invert_truthvalue.

From-SVN: r7861
1994-08-05 19:02:42 +00:00
Jason Merrill
4ea8537b90 (defer_cleanups_to): Put back line which was mistakenly
removed.

From-SVN: r7857
1994-08-05 01:49:31 +00:00
Richard Kenner
72bb971732 (move_block_to_reg): Do nothing if NREGS == 0.
From-SVN: r7820
1994-07-29 17:36:13 -04:00
Richard Kenner
62acb9781f (expand_expr, case CONJ_EXPR): Use correct mode for parts of a complex
expression.

From-SVN: r7815
1994-07-28 19:48:33 -04:00
Richard Kenner
ad2e7dd004 (expand_expr, case ARRAY_REF): Don't fold L"foo"[2].
From-SVN: r7797
1994-07-26 19:45:11 -04:00
Jim Wilson
24a13950ca (store_field): Set MEM_IN_STRUCT_P on object and
blk_object.

From-SVN: r7767
1994-07-13 13:35:03 -07:00
Richard Kenner
03747aa399 (convert_move): Add some conversions for TQFmode.
From-SVN: r7733
1994-07-11 19:27:23 -04:00
Richard Kenner
e74a220154 (expand_builtin, case BUILT_IN_FSQRT): Don't use asterisk in name of
`errno'.

From-SVN: r7695
1994-07-10 06:02:49 -04:00
Richard Kenner
5069803972 (expand_expr, case CONVERT_EXPR): If changing signedness and we have a
promoted SUBREG, clear the promotion flag.

From-SVN: r7686
1994-07-08 18:22:46 -04:00
Jim Wilson
6be583037c (get_inner_unaligned_p): New function.
(expand_assignment, expand_expr): Use it.

From-SVN: r7685
1994-07-08 14:41:02 -07:00
Mike Stump
d93d4205f1 fix temp lifetime (FOR TARGET_EXPRs only)
From-SVN: r7681
1994-07-08 20:45:14 +00:00
Mike Stump
61d6b1cca1 expr.c (expand_expr, [...]): All cleanups have to be protected by interim exception handling code.
* expr.c (expand_expr, defer_cleanups_to, expand_cleanups_to): All
        cleanups have to be protected by interim exception handling code.
        * stmt.c (expand_decl_cleanup, expand_cleanups): Ditto.
        * toplev.c (interim_eh_hook): Hook for interim exception handling.
        * toplev.c (interim_eh): Default implementation for exception
        handling that does nothing.
        * toplev.c (main): Set default for interim_eh_hook.

From-SVN: r7666
1994-07-07 03:08:23 +00:00
Richard Kenner
3e073e7297 (expand_increment): If pre-incrementing a promoted variable, don't
adjust OP0 since the result won't be used.

From-SVN: r7655
1994-07-05 18:27:27 -04:00
Richard Kenner
2f6e6d22ea (do_jump, case BIT_AND_EXPR): Only narrow to a type that corresponds
to a mode.

From-SVN: r7580
1994-06-28 05:44:57 -04:00
Richard Kenner
119af78aa8 (expand_expr, case ADDR_EXPR): If result is ignored, just return
const0_rtx.

From-SVN: r7421
1994-06-02 08:13:33 -04:00
Richard Kenner
94b25f81ca Update comments.
From-SVN: r7420
1994-06-02 07:24:33 -04:00
Doug Evans
0304dfbb67 expr.c (use_reg): Fix recording of USE information.
* expr.c (use_reg): Fix recording of USE information.
	(use_regs): Likewise.
	Delete argument `reg'.  All callers changed.
	* expr.h (use_regs): Update prototype.
	* calls.c (expand_call): Update call to use_regs.  Call use_reg
	if parm is wholly in registers.

From-SVN: r7378
1994-05-27 23:27:50 +00:00
Richard Kenner
d720b9d197 (expand_expr...
(expand_expr, case CONSTRUCTOR): If constant and large enough for
memcpy to be used, build constructor into static memory.

From-SVN: r7365
1994-05-27 14:56:31 -04:00