(subst): Instead, do it here, but also allow it in as a nested SUBREG since
the inner one will be eliminated.
(simplify_and_const_int): Convert (and (neg X) (const_int 1)) to a shift
when X is known to be either 0 or 1.
From-SVN: r5187
(try_combine): Don't split a PARALLEL of a SIGN_EXTEND and the object
being sign extended if we have made assumptions about the form the
I2DEST.
From-SVN: r5184
* pa.md (movdf insn): Distinguish between offsettable and
nonoffsettable memory locations when loading/storing a GR.
(movdi insn): Likewise. Loading a DImode constant can take
as many os 4 insns.
From-SVN: r5182
* pa.md (zero_extendqihi2): No need to explicitly set a length,
the defaults are correct.
(zero_extendqisi2, floatsisf2, floatsidf2): Likewise.
(floatdisf2, floatdidf2, fix_truncsfsi2): Likewise.
(fix_truncdfsi2, fix_truncsfdi2, fix_truncdfdi2): Likewise.
From-SVN: r5181
* pa.c (emit_move_sequence): Always handle secondary reloads for
symbolic addresses.
(secondary_reload_class): Symbolic operands always need a secondary
reload from R1_REGS if their target class is not R1_REGS.
From-SVN: r5178
* pa.h (TARGET_GAS): New target flag to control use of GAS specific
assembler directives.
(TARGET_SWITCHES): Support -mgas and -mno-gas.
(ASM_DECLARE_FUNCTION_NAME): If TARGET_GAS, then emit .PARAM directives
for static functions so that argument relocations work.
From-SVN: r5173
* pa.c (hppa_legitimize_address): Rework address computation
for x[n - m] so that problems with implicit space register
selection are avoided.
From-SVN: r5172
(fold, case EQ_EXPR): Re-enable converting signed MOD operations to
unsigned when inside comparisons against zero, but only when the
second operand of the MOD is an integral power of two.
From-SVN: r5166
* 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.
From-SVN: r5162
(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.
From-SVN: r5161
(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.
From-SVN: r5153
(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.
From-SVN: r5152
(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.
From-SVN: r5150
(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.
From-SVN: r5148
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.
From-SVN: r5145