1. 11 Sep, 2003 1 commit
  2. 09 Sep, 2003 1 commit
    • builtins.c (real_dconstp, [...]): New, split out from fold_builtin. · f7657db9
      	* builtins.c (real_dconstp, fold_builtin_logarithm,
      	fold_builtin_exponent): New, split out from fold_builtin.  Also
      	generalize to add log2, log10, exp2 and exp10/pow10 equivalents.
      	* emit-rtl.c (dconst3, dconst10, dconstthird): New.
      	(init_emit_once): Initialize new dconsts, use ARRAY_SIZE in lieu
      	of hardcoded array size.
      	* fold-const.c (fold): Add cases for exp2, exp10 and pow10.
      	(tree_expr_nonnegative_p): Likewise.
      	* real.h (dconst3, dconst10, dconstthird): New.
      
      testsuite:
      	* gcc.dg/torture/builtin-explog-1.c: New testcase.
      
      From-SVN: r71252
      Kaveh R. Ghazi committed
  3. 10 Jul, 2003 1 commit
    • ggc.h, [...]: Use `rtx' instead of `struct rtx_def *'... · bcda12f4
      2003-07-10  Steven Bosscher  <steven@gcc.gnu.org>
      
      	* ggc.h, integrate.h, langhooks.h, real.h, toplev.h:
      	Use `rtx' instead of `struct rtx_def *', `rtvec' instead of
      	`struct rtvec_dev *' and `tree' instead of `union tree_node *'
      	in function prototypes.
      	* varray.h (const_equiv_data): Likewise for fields.
      	(varray_data_tag): Likewise.
      	* output.h: Likewise, and don't forward declare union tree_node.
      	* emit_rtl.c (const_int_htab_hash): Cast to `rtx' instead of
      	`struct rtxvec *'.
      	* print-tree.c (print_node): Likewise.
      	* reload1.c: Don't redeclare current_function_decl, tree.h is
      	included in this file.
      
      From-SVN: r69183
      Steven Bosscher committed
  4. 06 Jul, 2003 1 commit
    • jump.c: Convert prototypes to ISO C90. · 0c20a65f
      	* jump.c: Convert prototypes to ISO C90.
      	* langhooks-def.h: Likewise.  Add extern to prototypes.
      	* langhooks.c: Likewise.
      	* langhooks.h: Likewise.
      	* lcm.c: Likewise.
      	* local-alloc.c: Likewise.
      	* loop-init.c: Likewise.
      	* loop-unroll.c: Likewise.
      	* loop-unswitch.c: Likewise.
      	* loop.c: Likewise.
      	* loop.h: Likewise. Add extern to prototypes.
      	* machmode.h: Likewise.
      	* main.c: Likewise.
      	* mbchar.c: Likewise.
      	* mbchar.h: Likewise.
      	* mkdeps.c: Likewise.
      	* mkdeps.h: Likewise.
      	* optabs.c: Likewise.
      	* optabs.h: Likewise.
      	* output.h: Likewise.
      	* gccspec.c: Likwise.
      	* postreload.c: Likewise.
      	* prefix.c: Likewise.
      	* prefix.h: Likewise.
      	* print-rtl.c: Likewise.
      	* print-tree.c: Likewise.
      	* profile.c: Likewise.
      	* read-rtl.c: Likewise.
      	* real.c: Likewise.
      	* real.h: Likewise.
      	* recog.c: Likewise.
      	* recog.h: Likewise.
      	* reg-stack.c: Likewise.
      	* regclass.c: Likewise.
      	* regmove.c: Likewise.
      	* regrename.c: Likewise.
      	* regs.h: Likewise.
      	* reload.c: Likewise.
      	* reload.h: Likewise.
      	* reload1.c: Likewise.
      	* reorg.c: Likewise.
      	* resource.c: Likewise.
      	* resource.h: Likewise.
      	* rtl-error.c: Likewise.
      	* rtl.c: Likewise.
      	* rtl.h: Likewise.
      	* rtlanal.c: Likewise.
      
      From-SVN: r68998
      Andreas Jaeger committed
  5. 03 Jul, 2003 1 commit
    • real.c (real_trunc, [...]): New functions to implement trunc, floor and ceil respectively. · 0a9530a9
      	* real.c (real_trunc, real_floor, real_ceil): New functions
      	to implement trunc, floor and ceil respectively.
      	* real.h (real_trunc, real_floor, real_ceil): Prototype here.
      	* builtins.c (integer_valued_real_p): New function to test if
      	a floating point expression has an integer valued result.
      	(fold_trunc_transparent_mathfn): Optimize foo(foo(x)) as
      	foo(x) where foo is an integer rounding function.  Similarly,
      	optimize foo(bar(x)) as bar(x), and foo((double)(int)x) as
      	(double)(int)x when both foo and bar are integer rounding
      	functions and we don't need to honor errno.
      	(fold_builtin_trunc, fold_builtin_floor, fold_builtin_ceil):
      	New functions to fold trunc, floor and ceil.
      	(fold_builtin): Use fold_builtin_trunc to fold BUILT_IN_TRUNC*,
      	fold_builtin_floor to fold BUILT_IN_FLOOR* and fold_builtin_ceil
      	to fold BUILT_IN_CEIL*.
      	* fold-const.c (tree_expr_nonnegative_p): Handle FLOAT_EXPR and
      	the remaining integer rounding functions.
      
      	* gcc.dg/builtins-25.c: New testcase.
      	* gcc.dg/builtins-26.c: New testcase.
      
      From-SVN: r68903
      Roger Sayle committed
  6. 25 Jun, 2003 1 commit
  7. 23 Jun, 2003 1 commit
    • basic-block.h: Fix comment formatting. · 71c0e7fc
      	* basic-block.h: Fix comment formatting.
      	* bt-load.c: Likewise.
      	* builtins.c: Likewise.
      	* c-common.c: Likewise.
      	* c-common.h: Likewise.
      	* c-format.c: Likewise.
      	* coverage.c: Likewise.
      	* cpplib.h: Likewise.
      	* cpppch.c: Likewise.
      	* dbxout.c: Likewise.
      	* diagnostic.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* expr.c: Likewise.
      	* fold-const.c: Likewise.
      	* function.c: Likewise.
      	* gcc.c: Likewise.
      	* gcov-io.c: Likewise.
      	* gcov-io.h: Likewise.
      	* gcov.c: Likewise.
      	* profile.c: Likewise.
      	* real.h: Likewise.
      	* sched-deps.c: Likewise.
      
      From-SVN: r68369
      Kazu Hirata committed
  8. 23 May, 2003 1 commit
    • real.c (real_maxval): New function to return the largest finite value… · 18c2511c
      real.c (real_maxval): New function to return the largest finite value representable in a given mode (i.e.
      
      
      	* real.c (real_maxval): New function to return the largest finite
      	value representable in a given mode (i.e. FLT_MAX and DBL_MAX).
      	* real.h (real_maxval): Prototype here.
      	* fold-const.c (fold_inf_compare): Transform comparisons against
      	+-Infinity into comparisons against DBL_MAX (or equivalent).
      
      	* gcc.c-torture/execute/ieee/inf-2.c: New test case.
      
      From-SVN: r67112
      Roger Sayle committed
  9. 06 May, 2003 1 commit
    • real.c (real_powi): New function to calculate the value of a real raised to an integer power, i.e. · e82a312b
      	* real.c (real_powi): New function to calculate the value of
      	a real raised to an integer power, i.e. pow(x,n) for int n.
      	(real_sqrt): Convert to using the faster do_add, do_multiply
      	and do_divide API for consistency with the rest of real.c.
      	* real.h (real_powi): Prototype here.
      	* builtins.c (fold_builtin):  Avoid local variable mode when
      	evaluating sqrt at compile time.  Attempt to evaluate pow at
      	compile-time, by checking for an integral exponent.
      
      	* gcc.dg/builtins-14.c: New test case.
      
      From-SVN: r66515
      Roger Sayle committed
  10. 01 Apr, 2003 1 commit
    • real.h (EXP_BITS): Make room for... · fe0002ee
      * real.h (EXP_BITS): Make room for...
      (struct real_value): ... added canonical bit.
      (struct real_format): Added pnan.
      (mips_single_format, mips_double_format, mips_extended_format,
      mips_quad_format): New.
      * real.c: Copy p to pnan in all formats.
      (get_canonical_qnan, get_canonical_snan): Set canonical bit.
      (real_nan): Use pnan to compute significand's shift.
      (real_identical): Disregard significand in canonical
      NaNs.
      (real_hash): Likewise.  Take signalling into account.
      (encode_ieee_single, encode_ieee_double, encode_ieee_quad):
      Disregard significand bits in canonical NaNs.  Set all bits of
      canonical NaN if !qnan_msb_set.
      (encode_ibm_extended, decode_ibm_extended): Likewise.  Use
      qnan_msb_set to tell the base double format.
      (ibm_extended_format): Use 53 as pnan.
      (mips_single_format, mips_double_format, mips_extended_format,
      mips_quad_format): Copied from the corresponding ieee/ibm
      formats, with qnan_msb_set false.
      * config/mips/iris6.h (MIPS_TFMODE_FORMAT): Use mips_extended_format.
      * config/mips/linux64.h (MIPS_TFMODE_FORMAT): Use mips_quad_format.
      * config/mips/mips.c (override_options): Use mips_single_format
      and mips_double_format.  Default TFmode to mips_quad_format.
      * config/mips/t-linux64 (tp-bit.c): Define QUIET_NAN_NEGATED.
      * config/mips/t-irix6: Likewise.
      * config/mips/t-mips (fp-bit.c, dp-bit.c): Likewise.
      * config/fp-bit.c (pack_d, unpack_d): Obey it.
      
      From-SVN: r65146
      Alexandre Oliva committed
  11. 31 Mar, 2003 1 commit
    • emit-rtl.c (dconstm2, dconsthalf): New real constants. · 03f2ea93
      	* emit-rtl.c (dconstm2, dconsthalf): New real constants.
      	(init_emit_once): Initialize dconstm2 and dconsthalf here.
      	* real.h (dconstm2, dconsthalf): Add prototypes here.
      	* real.c (real_sqrt): Use dconsthalf rather than local copy.
      	* builtins.c (fold_builtin): When optimizing sqrt(exp(x)) as
      	exp(x/2.0) remember to fold the division if possible.
      	Fold sin(0.0) as 0.0, cos(0.0) as 1.0, pow(x,1.0) as x,
      	pow(x,-1.0) as 1.0/x, pow(x,2.0) as x*x, pow(x,-2.0) as
      	1.0/(x*x) and pow(x,0.5) as sqrt(x).
      
      	* gcc.dg/builtins-3.c: Add new tests for sin and cos.
      	* gcc.dg/builtins-7.c: New test case.
      	* gcc.dg/builtins-8.c: New test case.
      
      From-SVN: r65088
      Roger Sayle committed
  12. 27 Mar, 2003 1 commit
    • real.h (struct real_value): Add signalling. · ad59ba20
              * real.h (struct real_value): Add signalling.
              (EXP_BITS): Decrement.
              * real.c (get_canonical_qnan): Don't set MSB-1.
              (get_canonical_snan): Likewise.  Set signalling.
              (real_identical): Compare signalling.
              (round_for_format): Remove force-one-bit on code.
              (real_nan): Likewise.  Set signalling.
              (encode_ieee_single): Add force-one-bit code; honor signalling.
              (encode_ieee_double, encode_ieee_extended, encode_ieee_quad): Likewise.
              (decode_ieee_single): Set signalling.
              (decode_ieee_double, decode_ieee_extended, decode_ieee_quad): Likewise.
      
      From-SVN: r64935
      Richard Henderson committed
  13. 15 Jan, 2003 1 commit
  14. 16 Dec, 2002 1 commit
  15. 22 Oct, 2002 1 commit
    • real.c (sticky_rshift_significand): Return inexact, don't or it in immediately. · 5e26e5a2
              * real.c (sticky_rshift_significand): Return inexact, don't
              or it in immediately.
              (sub_significands): Accept incomming carry.
              (div_significands, rtd_divmod): Update for sub_significands change.
              (round_for_format): Update for sticky_rshift_significand change.
              (do_add): Don't involve the inexact bit in addition, do give the
              inexact bit as the subtraction carry-in.
              (encode_internal, decode_internal, real_internal_format): New.
              * real.h (real_internal_format): Declare.
      
      From-SVN: r58396
      Richard Henderson committed
  16. 16 Oct, 2002 1 commit
    • real.c (real_to_decimal): Accept BUF_SIZE and CROP_TRAILING_ZEROS as arguments. · da6eec72
      gcc/
              * real.c (real_to_decimal): Accept BUF_SIZE and CROP_TRAILING_ZEROS
              as arguments.  Bound DIGITS by the available buffer size.
              (real_to_hexadecimal): Likewise.
              * real.h (real_to_decimal, real_to_hexadecimal): Update prototypes.
              (REAL_VALUE_TO_DECIMAL): Remove.
              * c-common.c, c-pretty-print.c, print-rtl.c, print-tree.c,
              sched-vis.c, config/arc/arc.c, config/c4x/c4x.c, config/fr30/fr30.c,
              config/i370/i370.h, config/i386/i386.c, config/i960/i960.c,
              config/ip2k/ip2k.c, config/m32r/m32r.c, config/m68hc11/m68hc11.c,
              config/m68k/hp320.h, config/m68k/m68k.h, config/m68k/sun2o4.h,
              config/m68k/sun3.h, config/mips/mips.c, config/ns32k/ns32k.c,
              config/pdp11/pdp11.h, config/vax/vax.h: Update all callers to
              use real_to_decimal directly, and with the proper arguments.
              * doc/tm.texi (REAL_VALUE_TO_DECIMAL): Remove.
      
      gcc/cp/
              * error.c (dump_expr): Use real_to_decimal directly, and with
              the new arguments.
      
      gcc/f/
              * target.h (ffetarget_print_real1, ffetarget_print_real2): Use
              real_to_decimal directly, and with the new arguments.
      
      From-SVN: r58187
      Richard Henderson committed
  17. 11 Oct, 2002 1 commit
  18. 04 Oct, 2002 2 commits
  19. 29 Sep, 2002 1 commit
  20. 24 Sep, 2002 1 commit
  21. 21 Sep, 2002 1 commit
    • real.c (struct real_format): Move to real.h. · 3dc85dfb
      	* real.c (struct real_format): Move to real.h.
      	(real_format_for_mode): Rename from fmt_for_mode; update all users;
      	initialize with ieee defaults.
      	(real_to_target_fmt, real_from_target_fmt): New.
      	(ieee_single_format, ieee_double_format, ieee_extended_motorola_format,
      	ieee_extended_intel_96_format, ieee_extended_intel_128_format,
      	ieee_quad_format, i370_single_format, i370_double_format,
      	c4x_single_format, c4x_extended_format): Rename from s/_format//.
      	(ieee_quad_format): Fix emin.
      	(format_for_size, init_real_once): Remove.
      	* real.h (struct real_format): Move from real.c.
      	(real_format_for_mode): Declare.
      	(real_to_target_fmt, real_from_target_fmt): Declare.
      	(ieee_single_format, ieee_double_format, ieee_extended_motorola_format,
      	ieee_extended_intel_96_format, ieee_extended_intel_128_format,
      	ieee_quad_format, vax_f_format, vax_d_format, vax_g_format,
      	i370_single_format, i370_double_format, c4x_single_format,
      	c4x_extended_format): Declare.
      	* toplev.c (do_compile): Don't call init_real_once.
      
      	* defaults.h (INTEL_EXTENDED_IEEE_FORMAT): Remove.
      	* doc/tm.texi (INTEL_EXTENDED_IEEE_FORMAT): Remove.
      
      	* config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Define.
      	* config/alpha/osf5.h (LONG_DOUBLE_TYPE_SIZE): 64, if vax mode.
      	* config/alpha/alpha.c (override_options): Set real_format_for_mode
      	for VAX, if enabled.
      
      	* config/c4x/c4x.c (c4x_override_options): Set real_format_for_mode
      	for C4X.
      
      	* config/i370/i370.h (OVERRIDE_OPTIONS): New.
      	* config/i370/i370.c (override_options): New.
      	* config/i370/i370-protos.h: Update.
      
      	* config/i386/i386.c (override_options): Set real_format_for_mode
      	for Intel 80-bit extended.
      	* config/i386/i386.h (INTEL_EXTENDED_IEEE_FORMAT): Remove.
      
      	* config/i960/i960.h (LONG_DOUBLE_TYPE_SIZE): Mind -mlong-double-64.
      	(OVERRIDE_OPTIONS): Move code...
      	* config/i960/i960.c (i960_initialize): ... here.  Set
      	real_format_for_mode for Intel 80-bit extended.
      
      	* config/ia64/ia64.c (ia64_override_options): Set real_format_for_mode
      	for Intel 80-bit extended, if enabled.
      
      	* config/m68k/m68k.c (override_options): Set real_format_for_mode
              for Motorola 96-bit extended.
      
      	* config/vax/vax.h (OVERRIDE_OPTIONS): New.
      	* config/vax/vax.c (override_options): New.
      	* config/vax/vax-protos.h: Update.
      
      From-SVN: r57388
      Richard Henderson committed
  22. 20 Sep, 2002 3 commits
    • real.c (real_hash): New. · 46b33600
              * real.c (real_hash): New.
              * real.h: Declare it.
              * cse.c (canon_hash): Use it.
              * cselib.c (hash_rtx): Likewise.
              * emit-rtl.c (const_double_htab_hash): Likewise.
              * rtl.h (CONST_DOUBLE_REAL_VALUE): New.
              * varasm.c (struct rtx_const): Reduce vector size; separate
              integer and fp vectors.
              (HASHBITS): Remove.
              (const_hash_1): Rename from const_hash.  Use real_hash.  Do not
              take modulus MAX_HASH_TABLE.
              (const_hash): New.  Do take modulus MAX_HASH_TABLE.
              (output_constant_def): Do not take modulus MAX_HASH_TABLE.
              (SYMHASH): Don't use HASHBITS.
              (decode_rtx_const): Copy only active bits from REAL_VALUE_TYPE.
              Fix CONST_VECTOR thinko wrt fp vectors.  Fix kind comparison.
              (simplify_subtraction): Fix kind comparison.
              (const_hash_rtx): Return unsigned int.  Don't use HASHBITS.
              Use a union to pun integer array.
              * config/rs6000/rs6000.c (rs6000_hash_constant): Use real_hash;
              only hash two words of integral CONST_DOUBLE.
      
      From-SVN: r57356
      Richard Henderson committed
    • real.h (enum real_value_class, [...]): Move from real.c. · 0ee6fdb5
              * real.h (enum real_value_class, SIGNIFICAND_BITS, EXP_BITS,
              MAX_EXP, SIGSZ, SIG_MSB, struct real_value): Move from real.c.
              (struct realvaluetype): Remove.
              (REAL_VALUE_TYPE): Use struct real_value.
              (REAL_VALUE_TYPE_SIZE): Use SIGNIFICAND_BITS.
              (test_real_width): New.
              * real.c: Global replace struct real_value with REAL_VALUE_TYPE.
              (real_arithmetic): Avoid hoops for REAL_VALUE_TYPE parameters.
              (real_compare, real_exponent, real_ldexp, real_isinf, real_isnan,
              real_isneg, real_isnegzero, real_identical, exact_real_inverse,
              real_to_integer, real_to_integer2, real_to_decimal,
              real_to_hexadecimal, real_from_string, real_from_integer,
              real_inf, real_nan, real_2expN, real_convert, real_to_target,
              real_from_target): Likewise.
              * tree.h (struct tree_real_cst): Use real_value not realvaluetype.
              * gengtype-yacc.y (bitfieldopt): Accept an ID as well.
      
      From-SVN: r57343
      Richard Henderson committed
    • real.h (UNKNOWN_FLOAT_FORMAT, [...]): Move ... · 66d93b5a
              * real.h (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT,
              IBM_FLOAT_FORMAT, C4X_FLOAT_FORMAT, TARGET_FLOAT_FORMAT): Move ...
              * defaults.h: ... here.
              * config/arm/arm.h, config/avr/avr.h, config/d30v/d30v.h,
              config/fr30/fr30.h, config/frv/frv.h, config/ia64/ia64.h,
              config/ip2k/ip2k.h, config/mips/mips.h, config/stormy16/stormy16.h,
              config/xtensa/xtensa.h (TARGET_FLOAT_FORMAT): Remove.
      
      From-SVN: r57336
      Richard Henderson committed
  23. 17 Sep, 2002 1 commit
    • builtin-types.def (BT_FN_FLOAT_CONST_STRING): New. · 1472e41c
      gcc/
              * builtin-types.def (BT_FN_FLOAT_CONST_STRING): New.
              (BT_FN_DOUBLE_CONST_STRING, BT_FN_LONG_DOUBLE_CONST_STRING): New.
              * builtins.def (__builtin_nan, __builtin_nanf, __builtin_nanl): New.
              (__builtin_nans, __builtin_nansf, __builtin_nansl): New.
              * builtins.c (fold_builtin_nan): New.
              (fold_builtin): Call it.
              * real.c (real_nan): Parse a non-empty string.
              (round_for_format): Fix NaN significand truncation.
              * real.h (real_nan): Return bool.
              * doc/extend.texi: Document new builtins.
      
      libstdc++/
              * include/std/std_limits.h (__glibcpp_f32_QNaN_bytes,
              __glibcpp_f32_has_QNaN, __glibcpp_f32_SNaN_bytes,
              __glibcpp_f32_has_SNaN, __glibcpp_f64_QNaN_bytes,
              __glibcpp_f64_has_QNaN, __glibcpp_f64_SNaN_bytes,
              __glibcpp_f64_has_SNaN, __glibcpp_f80_QNaN_bytes,
              __glibcpp_f80_has_QNaN, __glibcpp_f80_SNaN_bytes,
              __glibcpp_f80_has_SNaN, __glibcpp_f96_QNaN_bytes,
              __glibcpp_f96_has_QNaN, __glibcpp_f96_SNaN_bytes,
              __glibcpp_f96_has_SNaN, __glibcpp_f128_QNaN_bytes,
              __glibcpp_f128_has_QNaN, __glibcpp_f128_SNaN_bytes,
              __glibcpp_f128_has_SNaN, __glibcpp_float_QNaN_bytes,
              __glibcpp_float_has_QNaN, __glibcpp_float_SNaN_bytes,
              __glibcpp_float_has_SNaN, __glibcpp_double_QNaN_bytes,
              __glibcpp_double_has_QNaN, __glibcpp_double_SNaN_bytes,
              __glibcpp_double_has_SNaN, __glibcpp_long_double_QNaN_bytes,
              __glibcpp_long_double_has_QNaN, __glibcpp_long_double_SNaN_bytes,
              __glibcpp_long_double_has_SNaN): Remove.
              (__glibcpp_f128_is_iec559): True if IEEE.
              (__glibcpp_float_QNaN, __glibcpp_float_SNaN): Remove.
              (__glibcpp_double_QNaN, __glibcpp_double_SNaN): Remove.
              (__glibcpp_long_double_QNaN, __glibcpp_long_double_SNaN): Remove.
              (std::numeric_limits<float>::has_quiet_NaN): Use __builtin_nanf.
              (std::numeric_limits<float>::has_signaling_NaN): Mirror has_quiet_NaN.
              (std::numeric_limits<float>::quiet_NaN): Use __builtin_nanf.
              (std::numeric_limits<float>::signaling_NaN): Use __builtin_nansf.
              (std::numeric_limits<double>): Similarly.
              (std::numeric_limits<long double>): Similarly.
              * src/limits.cc (__glibcpp_float_QNaN, __glibcpp_float_SNaN): Remove.
              (__glibcpp_double_QNaN, __glibcpp_double_SNaN): Remove.
              (__glibcpp_long_double_QNaN, __glibcpp_long_double_SNaN): Remove.
      
              * testsuite/18_support/numeric_limits.cc (test_infinity): New.
              (test_denorm_min, test_qnan, test_is_iec559): New.
      
      From-SVN: r57221
      Richard Henderson committed
  24. 16 Sep, 2002 1 commit
    • real.c, real.h: Rewrite from scratch. · efdc7e19
      gcc/
      	* real.c, real.h: Rewrite from scratch.
      
      	* Makefile.in (simplify-rtx.o): Depend on TREE_H.
      	(paranoia): New target.
      	* builtins.c (fold_builtin_inf): Use new real.h interface.
      	* c-common.c (builtin_define_with_hex_fp_value): Likewise.
      	* c-lex.c (interpret_float): Likewise.
      	* emit-rtl.c (gen_lowpart_common): Likewise.
      	* optabs.c (expand_float): Use real_2expN.
      	* config/ia64/ia64.md (divsi3, udivsi3): Likewise.
      	* defaults.h (INTEL_EXTENDED_IEEE_FORMAT): New.
      	(FLOAT_WORDS_BIG_ENDIAN): New.
      	* cse.c (find_comparison_args): Don't pass FLOAT_STORE_FLAG_VALUE
      	directly to REAL_VALUE_NEGATIVE.
      	* loop.c (canonicalize_condition): Likewise.
      	* simplify-rtx.c: Include tree.h.
      	(simplify_unary_operation): Don't handle FIX and UNSIGNED_FIX
      	with floating-point result modes.
      	* toplev.c (backend_init): Call init_real_once.
      
      	* fold-const.c (force_fit_type): Don't call CHECK_FLOAT_VALUE.
      	* tree.c (build_real): Likewise.
      	* config/alpha/alpha.c, config/vax/vax.c (float_strings,
      	float_values, inited_float_values, check_float_value): Remove.
      	* config/alpha/alpha.h, config/m68hc11/m68hc11.h,
      	config/m88k/m88k.h, config/vax/vax.h (CHECK_FLOAT_VALUE): Remove.
      	* doc/tm.texi (CHECK_FLOAT_VALUE): Remove.
      
      gcc/f/
      	* target.c (ffetarget_real1): Don't pass FFETARGET_ATOF_
      	directly to ffetarget_make_real1.
      	(ffetarget_real2): Similarly.
      	* target.h (ffetarget_cvt_r1_to_rv_, ffetarget_cvt_rv_to_r2_,
      	ffetarget_cvt_r2_to_rv_): Use new real.h interface and simplify.
      
      gcc/java/
      	* jcf-parse.c (get_constant): Runtime check for IEEE format;
      	use new real.h interface.
      	* jcf-write.c (find_constant_index): Use new real.h interface.
      	* lex.c (IS_ZERO): Use REAL_VALUES_EQUAL.
      
      contrib/
      	* paranoia.cc: New file.
      
      From-SVN: r57198
      Richard Henderson committed
  25. 04 Sep, 2002 2 commits
    • builtin-types.def (BT_FN_FLOAT): New. · ab5e2615
              * builtin-types.def (BT_FN_FLOAT): New.
              (BT_FN_DOUBLE, BT_FN_LONG_DOUBLE): New.
              * builtins.def (BUILT_IN_INF, BUILT_IN_INFF, BUILT_IN_INFL,
              BUILT_IN_HUGE_VAL, BUILT_IN_HUGE_VALF, BUILT_IN_HUGE_VALL): New.
              * builtins.c (fold_builtin_inf): New.
              (fold_builtin): Call it.
              * real.c (ereal_inf): New.
              * real.h: Declare it.
              * doc/extend.texi: Document new builtins.
      
      From-SVN: r56820
      Richard Henderson committed
    • real.c (ereal_to_decimal): Add digits parameter. · 4b67a274
      	* real.c (ereal_to_decimal): Add digits parameter.
      	* real.h (REAL_VALUE_TO_DECIMAL): Remove format; add digits parameter.
      	* c-pretty-print.c (pp_c_real_literal): Update call.
      	* print-rtl.c (print_rtx): Likewise.
      	* print-tree.c (print_node_brief, print_node): Likewise.
      	* sched-vis.c (print_value): Likewise.
      	* config/arc/arc.c (arc_print_operand): Likewise.
      	* config/c4x/c4x.c (c4x_print_operand): Likewise.
      	* config/i370/i370.h (PRINT_OPERAND): Likewise.
      	* config/i386/i386.c (print_operand): Likewise.
      	* config/i960/i960.c (i960_print_operand): Likewise.
      	* config/ip2k/ip2k.c (asm_output_float): Likewise.
      	* config/m32r/m32r.c (m32r_print_operand): Likewise.
      	* config/m68hc11/m68hc11.c (print_operand): Likewise.
      	* config/m68k/hp320.h (PRINT_OPERAND, ASM_OUTPUT_FLOAT_OPERAND,
      	ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND): Likewise.
      	* config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND,
      	ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND): Likewise.
      	* config/m68k/sun2o4.h (ASM_OUTPUT_FLOAT_OPERAND,
      	ASM_OUTPUT_DOUBLE_OPERAND): Likewise.
      	* config/m68k/sun3.h (ASM_OUTPUT_FLOAT_OPERAND,
      	ASM_OUTPUT_DOUBLE_OPERAND): Likewise.
      	* config/mips/mips.c (print_operand): Likewise.
      	* config/ns32k/ns32k.c (print_operand): Likewise.
      	* config/pdp11/pdp11.h (PRINT_OPERAND): Likewise.
      	* config/vax/vax.h (PRINT_OPERAND): Likewise.
      	* doc/tm.texi (REAL_VALUE_TO_DECIMAL): Update docs.
      
              * f/target.h (ffetarget_print_real1, ffetarget_print_real2): Update
              call to REAL_VALUE_TO_DECIMAL.
      
      From-SVN: r56798
      Richard Henderson committed
  26. 04 Jun, 2002 1 commit
  27. 28 May, 2002 1 commit
    • tree.h: Forward-declare struct realvaluetype. · 11ad4784
      	* tree.h: Forward-declare struct realvaluetype.
      	(struct tree_real_cst): Point to the REAL_VALUE_TYPE, do not
      	contain it.
      	(TREE_REAL_CST_PTR): New accessor.
      	(TREE_REAL_CST): Update.
      	* real.h: Include machmode.h.
      	(realvaluetype): Make it struct realvaluetype, not a typedef.
      	(build_real): Prototype here.
      
      	* tree.c: Include real.h.
      	(build_real): Allocate the REAL_VALUE_TYPE as a separate
      	object in GC memory, set TREE_REAL_CST_PTR to point to it.
      	(build_real_from_int_cst): Use build_real.
      	* ggc-common.c (ggc_mark_trees): Mark TREE_REAL_CST_PTR of a
      	REAL_CST.
      
      	* builtins.c, c-common.c, c-lex.c, dwarf2out.c, expr.c,
      	fold-const.c, print-tree.c, real.c, cp/mangle.c, cp/tree.c,
      	f/bld.c, f/com.c, f/expr.c, f/target.c, java/decl.c,
      	java/jcf-parse.c, java/parse.y, java/typeck.c: Include real.h.
      	* Makefile.in, cp/Make-lang.in, f/Make-lang.in,
      	java/Make-lang.in: Update dependency lists.
      
      From-SVN: r53959
      Zack Weinberg committed
  28. 19 May, 2002 1 commit
  29. 13 May, 2002 1 commit
    • emit-rtl.c (global_rtl): Update comment. · 5692c7bc
      	* emit-rtl.c (global_rtl): Update comment.
      	(const_double_htab, const_double_htab_hash,
      	const_double_htab_hash, lookup_const_double): New.
      	(const_int_htab_hash, const_int_htab_eq): Remove const
      	qualifiers, which cause tons of warnings with RTL checking on.
      	(gen_rtx_CONST_DOUBLE): Deleted.
      	(const_double_from_real_value): New function - bears some
      	resemblance to the former immed_real_const_1.
      	(immed_double_const): Moved here from varasm.c and
      	simplified.
      	(gen_rtx_REG): Make REGNO unsigned to squelch warnings.
      	(gen_rtx_SUBREG): Use gen_rtx_raw_SUBREG.
      	(gen_rtx): Use immed_double_const.
      	(init_emit_once): Initialize the const_double_htab.  Use
      	REAL_VALUE_FROM_INT where possible.  Can now use
      	CONST_DOUBLE_FROM_REAL_VALUE when setting up const_tiny_rtx.
      	* varasm.c (struct varasm_status): Remove x_const_double_chain.
      	(const_double_chain, immed_real_const, clear_const_double_mem): Delete.
      	(immed_double_const, immed_real_const_1): Moved to emit-rtl.c.
      	(init_varasm_status, mark_varasm_status): Don't touch
      	x_const_double_chain.
      
      	* output.h: Delete prototype for clear_const_double_mem.
      	* real.h: Make REAL_VALUE_TYPE a macro again.  Remove leading
      	'0' slot from all CONST_DOUBLE_FORMAT definitions.  Prototype
      	const_double_from_real_value, not immed_real_const_1, and use
      	it to define CONST_DOUBLE_FROM_REAL_VALUE.  Define new macro
      	CONST_DOUBLE_ATOF.
      	* rtl.h (CONST_DOUBLE_CHAIN): Kill.
      	(CONST_DOUBLE_LOW, CONST_DOUBLE_HIGH): Adjust.
      	(gen_rtx_CONST_DOUBLE, immed_real_const): Delete prototypes.
      	(gen_rtx_REG): Second arg is unsigned.
      
      	* gengenrtl.c (special_rtx): Take out CONST_DOUBLE.
      	(excluded_rtx): New, return true for CONST_DOUBLE.
      	(genmacro): Write nothing for excluded codes.
      	* combine.c (combine_simplify_rtx): Use CONST_DOUBLE_FROM_REAL_VALUE.
      	* expr.c (expand_expr): Likewise.
      	* ggc-common.c (ggc_mark_rtx_children_1): Don't mark the
      	CONST_DOUBLE_CHAIN.
      	* toplev.c (rest_of_compilation): Don't call
      	clear_const_double_mem.
      
      	* config/rs6000/rs6000.c (rs6000_float_const): Delete.
      	(rs6000_hash_constant): Remove CONST_DOUBLE special case.
      	(toc_hash_eq): Remove CONST_DOUBLE and LABEL_REF special cases.
      	* config/rs6000/rs6000-protos.h: Don't prototype rs6000_float_const.
      	* config/c4x/c4x.md, config/rs6000/rs6000.md: Use CONST_DOUBLE_ATOF.
      	* config/dsp16xx/dsp16xx.md, config/mips/mips.md,
      	config/pa/pa.md: Use CONST_DOUBLE_FROM_REAL_VALUE.
      	* config/sparc/sparc.md, config/sparc/sparc.c: Use immed_double_const.
      
      From-SVN: r53409
      Zack Weinberg committed
  30. 19 Apr, 2002 1 commit
    • real.h: Define REAL_VALUE_TYPE_SIZE as 96 or 160, as appropriate. · 46468cd9
      	* real.h: Define REAL_VALUE_TYPE_SIZE as 96 or 160, as
      	appropriate.  Document need for extended precision even when
      	MAX_LONG_DOUBLE_TYPE_SIZE is smaller.  Define REAL_WIDTH here,
      	based on REAL_VALUE_TYPE_SIZE.  Use REAL_WIDTH to size
      	REAL_VALUE_TYPE.  Define CONST_DOUBLE_FORMAT here.  Use #error
      	instead of relying on later syntax error when REAL_WIDTH > 5.
      	* real.c: Define NE based only on whether or not we have a
      	full 128-bit extended type (not INTEL_EXTENDED_IEEE_FORMAT).
      	Require sizeof(REAL_VALUE_TYPE) == 2*NE.  Unconditionally
      	define GET_REAL and PUT_REAL as simple memcpy operations; no
      	need to byteswap or round.
      	Use #error instead of #ifdef-ing out the entire file, for
      	prompt error detection.
      
      	* rtl.c, gengenrtl.c: No need to calculate CONST_DOUBLE_FORMAT here.
      
      From-SVN: r52502
      Zack Weinberg committed
  31. 25 Mar, 2002 1 commit
    • toplev.c: Don't include setjmp.h. · 15e5ad76
      	* toplev.c: Don't include setjmp.h.  Kill float_handler_set,
      	float_handled, float_handler, float_signal, set_float_handler,
      	and do_float_handler.  Set handler for SIGFPE to crash_signal.
      	* toplev.h: Don't prototype do_float_handler.
      
      	* c-lex.c: Fold parse_float into lex_number.  Make warning
      	about portability of hex float constants more informative, and
      	don't issue it on top of a syntax error.
      	* fold-const.c: Fold const_binop_1 and fold_convert_1 into
      	their callers.
      	* real.h: Define REAL_VALUE_ABS here...
      	* simplify-rtx.c: ... not here.  Fold check_fold_consts,
      	simplify_unary_real, simplify_binary_real, and
      	simplify_binary_is2orm1 into their callers.
      	* tree.c: Fold build_real_from_int_cst_1 into caller.
      
      	* doc/tm.texi: Document REAL_VALUE_ABS and REAL_VALUE_NEGATIVE.
      
      	* tsystem.h: Include float.h here...
      	* libgcc2.c: ... not here.
      
      java:
      	* lex.c: Change java_perform_atof to take normal parameters
      	instead of a pointer to a parameter block.  Call it directly
      	from java_lex.
      
      testsuite:
      	* gcc.dg/c90-hexfloat-1.c: Adjust error regexps.
      
      From-SVN: r51336
      Zack Weinberg committed
  32. 23 Mar, 2002 2 commits
    • * real.h (N): Special case 128 bit doubles. · bbaa9790
      From-SVN: r51229
      Alan Modra committed
    • real.h: Don't define REAL_INFINITY or REAL_IS_NOT_DOUBLE. · b216cd4a
      	* real.h: Don't define REAL_INFINITY or REAL_IS_NOT_DOUBLE.
      	Always make REAL_VALUE_TYPE a struct containing an array of
      	HOST_WIDE_INT, not a double.  Tidy up the code deciding how
      	big it is.  Don't declare or use union real_extract.
      
      	* emit-rtl.c (init_emit_once), varasm.c (immed_real_const_1,
      	decode_rtx_const, output_constant_pool), config/a29k/a29k.c
      	(print_operand), config/arm/arm.c (output_move_double),
      	config/arm/arm.md (consttable_4, consttable_8),
      	config/romp/romp.c (output_fpops), config/s390/s390.h
      	(ASM_OUTPUT_SPECIAL_POOL_ENTRY), config/xtensa/xtensa.c
      	(xtensa_output_literal): Don't use union real_extract.
      
      	* config/dsp16xx/dsp16xx.c (print_operand), config/i860/i860.c
      	(sfmode_constant_to_ulong), config/ns32k/merlin.h
      	(PRINT_OPERAND), config/ns32k/ns32k.c (print_operand),
      	config/pdp11/pdp11.h (PRINT_OPERAND), config/we32k/we32k.h
      	(PRINT_OPERAND): Don't use local version of union
      	real_extract.
      
      	* config/convex/convex.c (check_float_value), config/vax/vax.c
      	(vax_float_literal), config/m88k/m88k.md (divdf3),
      	config/dsp16xx/dsp16xx.md (fixuns_trunchfhi2),
      	config/pdp11/pdp11.c (output_move_quad): Don't do host
      	arithmetic on target floating point quantities.
      
      	* config/a29k/a29k.md, config/dsp16xx/dsp16xx.c
      	(output_dsp16xx_float_const): Don't test HOST_FLOAT_FORMAT.
      
      	* fold-const.c (fold), simplify-rtx.c (simplify_binary_real):
      	Use MODE_HAS_INFINITIES rather than #ifdef REAL_INFINITY.
      
      	* real.c (earith): Test INFINITY rather than REAL_INFINITY;
      	NANS implies INFINITY, so can drop #ifdef NANS inside #ifndef
      	INFINITY.
      	* print-rtl.c (print_rtx): Disable code which needs
      	floating-point emulator.
      	* libgcc2.c: Include float.h and use DBL_MANT_DIG,
      	FLT_MANT_DIG, to define DF_SIZE and SF_SIZE, rather than
      	depending on HOST_FLOAT_FORMAT to be defined properly.
      
      	* ch/grant.c, cp/error.c: Always use REAL_VALUE_TO_DECIMAL;
      	don't test REAL_IS_NOT_DOUBLE.
      
      	* config/1750a/1750a.c (get_double, float_label): Delete.
      	(print_operand): Delete huge commented-out chunk.  Use
      	REAL_VALUE_TO_DECIMAL.
      	* config/1750a/1750a-protos.h: Delete prototypes of deleted
      	functions.
      	* config/convex/convex.h: Always set TARGET_FLOAT_FORMAT to
      	IEEE_FLOAT_FORMAT.
      	* config/i370/i370.h (PRINT_OPERAND [TARGET_HLASM version]):
      	Use REAL_VALUE_TO_DECIMAL as ELF version does.
      	* config/m88k/m88k.c (real_power_of_2_operand,
      	legitimize_operand): Take the REAL_VALUE_TYPE and/or union
      	real_extract out of the union; run the input through
      	REAL_VALUE_TO_TARGET_DOUBLE, then plug the pair of longwords
      	from that into the union.
      	* config/pdp11/pdp11.c (output_move_double): Rearrange
      	parentheses to make automatic indenter happy.
      
      	* doc/tm.texi (Cross-compilation): Rename node to "Floating
      	Point" and rewrite to describe current situation.  Also adjust
      	documentation of REAL_VALUE_TO_TARGET_SINGLE and friends to
      	match code.
      	* doc/rtl.texi: Adjust cross reference.
      
      From-SVN: r51210
      Zack Weinberg committed
  33. 03 Mar, 2002 1 commit
    • emit-rtl.c, [...]: Remove all #ifndef REAL_ARITHMETIC blocks... · ba31d94e
      	* emit-rtl.c, final.c, fold-const.c, gengenrtl.c, optabs.c,
      	print-tree.c, real.c, real.h, recog.c, rtl.c, simplify-rtx.c,
      	tree.c, config/m68k/m68k.c, f/com.c, f/target.h, java/expr.c,
      	java/jcf-parse.c, java/lex.c:
      	Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef
      	REAL_ARITHMETIC blocks unconditional.  Delete some further
      	#ifdef blocks predicated on REAL_ARITHMETIC.
      	* flags.h, toplev.c: Delete remaining references to
      	flag_pretend_float.
      
      	* doc/invoke.texi: Remove documentation of -fpretend-float.
      	* doc/tm.texi: Describe the various REAL_* macros as provided by
      	real.h, not by the target configuration files.
      
      	* config/alpha/alpha.h, config/alpha/unicosmk.h, config/arm/arm.h,
      	config/avr/avr.h, config/c4x/c4x.h, config/convex/convex.h,
      	config/cris/cris.h, config/d30v/d30v.h, config/dsp16xx/dsp16xx.h,
      	config/h8300/h8300.h, config/i370/i370.h, config/i386/i386.h,
      	config/i386/osf1elf.h, config/i960/i960.h, config/ia64/ia64.h,
      	config/m32r/m32r.h, config/m68hc11/m68hc11.h, config/m68k/dpx2.h,
      	config/m68k/linux-aout.h, config/m68k/linux.h, config/m68k/m68k.h,
      	config/m68k/sun3.h, config/m68k/vxm68k.h, config/mcore/mcore.h,
      	config/mips/mips.h, config/mmix/mmix.h, config/mn10200/mn10200.h,
      	config/mn10300/mn10300.h, config/pa/pa.h, config/pj/pj.h,
      	config/rs6000/rs6000.h, config/s390/s390.h, config/sh/sh.h,
      	config/sparc/freebsd.h, config/sparc/linux.h, config/sparc/linux64.h,
      	config/sparc/sol2.h, config/sparc/sparc.h, config/sparc/vxsim.h,
      	config/stormy16/stormy16.h, config/v850/v850.h, config/vax/vax.h,
      	config/xtensa/xtensa.h:
      	Do not define, undefine, or mention in comments any of
      	REAL_ARITHMETIC, REAL_VALUE_ATOF, REAL_VALUE_HTOF,
      	REAL_VALUE_ISNAN, REAL_VALUE_ISINF,
      	REAL_VALUE_TO_TARGET_SINGLE, REAL_VALUE_TO_TARGET_DOUBLE,
      	REAL_VALUE_TO_TARGET_LONG_DOUBLE, REAL_VALUE_TO_DECIMAL,
      	REAL_VALUE_TYPE, REAL_VALUES_EQUAL, REAL_VALUES_LESS,
      	REAL_VALUE_LDEXP, REAL_VALUE_FIX, REAL_VALUE_UNSIGNED_FIX,
      	REAL_VALUE_RNDZINT, REAL_VALUE_UNSIGNED_RNDZINT,
      	REAL_INFINITY, REAL_VALUE_NEGATE, REAL_VALUE_TRUNCATE,
      	REAL_VALUE_TO_INT, or REAL_VALUE_FROM_INT.
      
      From-SVN: r50263
      Zack Weinberg committed
  34. 22 Jan, 2002 1 commit
    • predict.c: Fix formatting. · cf403648
      	* predict.c: Fix formatting.
      	* print-tree.c: Likewise.
      	* protoize.c: Likewise.
      	* real.h: Likewise.
      	* rtl.h: Likewise.
      	* sbitmap.h: Likewise.
      	* scan.c: Likewise.
      	* sched-deps.c: Likewise.
      	* sched-vis.c: Likewise.
      	* sdbout.c: Likewise.
      	* sibcall.c: Likewise.
      	* ssa.c: Likewise.
      	* ssa-ccp.c: Likewise.
      	* ssa-dce.c: Likewise.
      	* stmt.c: Likewise.
      	* stor-layout.c: Likewise.
      	* system.h: Likewise.
      
      From-SVN: r49074
      Kazu Hirata committed
  35. 28 Dec, 2001 1 commit