Jeff Law [Mon, 16 Aug 1993 00:16:56 +0000 (18:16 -0600)]
reorg.c (find_end_label): If a suitable RETURN insn exists at the end of the current function...
* reorg.c (find_end_label): If a suitable RETURN insn exists at
the end of the current function, place a label in front of it
for the end_of_function_label.
Richard Stallman [Sun, 15 Aug 1993 09:30:20 +0000 (09:30 +0000)]
(declare_hidden_char_array): New function to factor out duplicate code in declare_function_name.
(declare_hidden_char_array): New function to
factor out duplicate code in declare_function_name.
Don't set DECL_EXTERNAL (which is illegal without TREE_PUBLIC)
to prevent output; instead, set TREE_ASM_WRITTEN.
(declare_function_name): Use declare_hidden_char_array.
Jim Wilson [Fri, 13 Aug 1993 18:28:49 +0000 (11:28 -0700)]
(GET_REAL, PUT_REAL): Add TFmode versions.
(MAXDECEXP, MINDECEXP): New decimal exponent limits
that vary with definition of LONG_DOUBLE_TYPE_SIZE.
(endian, ereal_atof, real_value_truncate, einfin, emdnorm, asctoeg):
Add cases for TFmode.
(etartdouble): New function converts REAL_VALUE_TYPE to TFmode
for use by ASM_OUTPUT_LONG_DOUBLE.
(edivm, emulm): Ifdef out, replace by faster multiply and divide.
(etoe113, toe113, e113toe): New type conversions for TFmode.
(asctoe113, e113toasc): New TFmode binary <-> decimal conversions.
(at top level): Define constants ezero, eone, emtens, etens, ...
in a new 20-byte format when LONG_DOUBLE_TYPE_SIZE = 128 and
set NE to 10. Otherwise, the internal format remains 12 bytes wide.
(etoudi, etodi, ditoe, uditoe): New functions, signed and unsigned
DImode float and fix, for real.c used in a libgcc-of-last-resort.
(esqrt): New function, correctly rounded square root for libgcc.
(etodec): Delete ifdef'd version.
(eroundi, eroundui): Rename to efixi, efixui and always
round towards zero.
From frank@atom.ansto.gov.au (Frank Crawford):
(etoibm, toibm, ibmtoe): New conversions for IBM 370 float format.
(e53toe, e64toe, toe64, etoe53, toe53, etoe24, toe24, asctoe53,
asctoeg, make_nan): Ifdef for IBM.
Jim Wilson [Fri, 13 Aug 1993 18:27:32 +0000 (11:27 -0700)]
(REAL_VALUE_TYPE): Define array at least 20 bytes wide if LONG_DOUBLE_TYPE_SIZE is 128 bits.
(REAL_VALUE_TYPE): Define array at least 20 bytes wide
if LONG_DOUBLE_TYPE_SIZE is 128 bits.
(etartdouble): Declare and use for REAL_VALUE_TO_TARGET_LONG_DOUBLE
when long double is TFmode.
(REAL_VALUE_FIX, REAL_VALUE_UNSIGNED_FIX): Must always round
towards zero.
Richard Stallman [Fri, 13 Aug 1993 05:59:36 +0000 (05:59 +0000)]
(output_init_element): Don't call default_conversion for a STRING_CST if type is directly suitable for it.
(output_init_element): Don't call default_conversion
for a STRING_CST if type is directly suitable for it.
(digest_init): Eliminate a lot of code that checks the variable
'element', since element is always 0 in these code paths.
(build_c_cast): For (void *) (FOO *) 0, return a nop_expr
so it doesn't count as a null pointer constant.
(convert_for_assignment, build_binary_op): Pedantically warn about
that case if looking for a null_pointer_constant.
(build_conditional_expr): Likewise.
Richard Kenner [Thu, 12 Aug 1993 23:02:25 +0000 (19:02 -0400)]
(attribute "type"): Add new type, "branch".
(attribute "length"): New attribute; put on all insns that don't have default
length.
(branch patterns): If conditional branch won't reach, take conditional branch
around an unconditional branch.
(plus): Split (plus (COMPARISON FOO ...) ...) at FOO.
Jim Wilson [Thu, 12 Aug 1993 17:52:48 +0000 (10:52 -0700)]
(legitimize_pic_address): Delete 4th arg SCRATCH.
Fix all callers.
(emit_move_sequence): Delete 3rd arg SCRATCH_REG. Fix all
callers. If operand1 is an invalid PIC address, then legitimize
it before doing anything else.
Jeff Law [Wed, 11 Aug 1993 23:49:36 +0000 (17:49 -0600)]
reorg.c (try_merge_delay_insns): Fix typo.
* reorg.c (try_merge_delay_insns): Fix typo.
(fill_simple_delay_slots): Only access the JUMP_LABEL field
if the INSN needing delay slots is a JUMP_INSN.
Richard Stallman [Wed, 11 Aug 1993 05:22:55 +0000 (05:22 +0000)]
(SLOW_UNALIGNED_ACCESS): Define, but allow override.
(store_bit_field): Test that instead of STRICT_ALIGNMENT.
Also, allow fetching as non-bitfield if memory is aligned enough.
(extract_bit_field): Install code here like that in store_bit_field.
(expand_assignment): If WANT_VALUE is 0, return NULL.
(store_expr): Likewise.
Rename arg SUGGEST_REG to WANT_VALUE.
Never return TARGET if WANT_VALUE unless BLKmode.
Instead, return TEMP or a value copied from TARGET.
Pass 0 for WANT_VALUE in recursive calls that ignore value.
(expand_expr, case PLUS_EXPR): Goto binop2 not
both_summands if we should not be returning a plus.
(do_tablejump) [PIC_CASE_VECTOR_ADDRESS]: If pic,
copy INDEX to a register early, to avoid invalid address later.
Richard Kenner [Sat, 7 Aug 1993 11:42:21 +0000 (07:42 -0400)]
(push_reload, find_reloads): Treat (subreg (pseudo)) and (subreg (mem)) the same.
(push_reload, find_reloads): Treat (subreg (pseudo)) and (subreg (mem))
the same.
If we have (subreg:M1 (mem:M2 ...) ...), never do anything special if M1
and M2 are the same size.
(output_init_element): Call digest_init before calling output_constant.
(output_init_element): Call digest_init before
calling output_constant. Always pass 0, 0 for last 2 args
to digest_init.
(build_binary_op): Warn about ordered comparison
between pointers to complete and incomplete types.
(digest_init): No error for a STRING_CST that already
went through digest_init.
(parser_build_binary_op): Generate a NON_LVALUE_EXPR, not NOP_EXPR,
around a constant value.
Jeff Law [Thu, 5 Aug 1993 05:45:32 +0000 (23:45 -0600)]
toplev.c (rest_of_compilation): If not optimizing, turn off DECL_INLINE for functions declared as inline.
* toplev.c (rest_of_compilation): If not optimizing, turn off
DECL_INLINE for functions declared as inline. Avoid turning on
DECL_INLINE when -finline-functions is used without -O.