1. 19 Aug, 2016 1 commit
    • Implement C _FloatN, _FloatNx types. · c65699ef
      ISO/IEC TS 18661-3:2015 defines C bindings to IEEE interchange and
      extended types, in the form of _FloatN and _FloatNx type names with
      corresponding fN/FN and fNx/FNx constant suffixes and FLTN_* / FLTNX_*
      <float.h> macros.  This patch implements support for this feature in
      GCC.
      
      The _FloatN types, for N = 16, 32, 64 or >= 128 and a multiple of 32,
      are types encoded according to the corresponding IEEE interchange
      format (endianness unspecified; may use either the NaN conventions
      recommended in IEEE 754-2008, or the MIPS NaN conventions, since the
      choice of convention is only an IEEE recommendation, not a
      requirement).  The _FloatNx types, for N = 32, 64 and 128, are IEEE
      "extended" types: types extending a narrower format with range and
      precision at least as big as those specified in IEEE 754 for each
      extended type (and with unspecified representation, but still
      following IEEE semantics for their values and operations - and with
      the set of values being determined by the precision and the maximum
      exponent, which means that while Intel "extended" is suitable for
      _Float64x, m68k "extended" is not).  These types are always distinct
      from and not compatible with each other and the standard floating
      types float, double, long double; thus, double, _Float64 and _Float32x
      may all have the same ABI, but they are three still distinct types.
      The type names may be used with _Complex to construct corresponding
      complex types (unlike __float128, which acts more like a typedef name
      than a keyword - thus, this patch may be considered to fix PR
      c/32187).  The new suffixes can be combined with GNU "i" and "j"
      suffixes for constants of complex types (e.g. 1.0if128, 2.0f64i).
      
      The set of types supported is implementation-defined.  In this GCC
      patch, _Float32 is SFmode if that is suitable; _Float32x and _Float64
      are DFmode if that is suitable; _Float128 is TFmode if that is
      suitable; _Float64x is XFmode if that is suitable, and otherwise
      TFmode if that is suitable.  There is a target hook to override the
      choices if necessary.  "Suitable" means both conforming to the
      requirements of that type, and supported as a scalar type including in
      libgcc.  The ABI is whatever the back end does for scalars of that
      mode (but note that _Float32 is passed without promotion in variable
      arguments, unlike float).  All the existing issues with exceptions and
      rounding modes for existing types apply equally to the new type names.
      
      No GCC port supports a floating-point format suitable for _Float128x.
      Although there is HFmode support for ARM and AArch64, use of that for
      _Float16 is not enabled.  Supporting _Float16 would require additional
      work on the excess precision aspects of TS 18661-3: there are new
      values of FLT_EVAL_METHOD, which are not currently supported in GCC,
      and FLT_EVAL_METHOD == 0 now means that operations and constants on
      types narrower than float are evaluated to the range and precision of
      float.  Implementing that, so that _Float16 gets evaluated with excess
      range and precision, would involve changes to the excess precision
      infrastructure so that the _Float16 case is enabled by default, unlike
      the x87 case which is only enabled for -fexcess-precision=standard.
      Other differences between _Float16 and __fp16 would also need to be
      disentangled.
      
      GCC has some prior support for nonstandard floating-point types in the
      form of __float80 and __float128.  Where these were previously types
      distinct from long double, they are made by this patch into aliases
      for _Float64x / _Float128 if those types have the required properties.
      
      In principle the set of possible _FloatN types is infinite.  This
      patch hardcodes the four such types for N <= 128, but with as much
      code as possible using loops over types to minimize the number of
      places with such hardcoding.  I don't think it's likely any further
      such types will be of use in future (or indeed that formats suitable
      for _Float128x will actually be implemented).  There is a corner case
      that all _FloatN, for N >= 128 and a multiple of 32, should be treated
      as keywords even when the corresponding type is not supported; I
      intend to deal with that in a followup patch.
      
      Tests are added for various functionality of the new types, mostly
      using type-generic headers.  The tests use dg-add-options to pass any
      extra options needed to enable the types; this is wired up to use the
      same options as for __float128 on powerpc to enable _Float128 and
      _Float64x, and effective-target keywords for runtime support do the
      same hardware test as for __float128 to make sure the VSX instructions
      generated by those options are supported.  (Corresponding additions
      would be needed for _Float16 on ARM as well if that were enabled with
      -mfp16-format=ieee required to use it rather than unconditionally
      available.  Of course, -mfp16-format=alternative enables use of a
      format which is not compatible with the requirements of the _Float16
      type.)
      
      C++ note: no support for the new types or constant suffixes is added
      for C++.  C++ decimal floating-point support was very different from
      the C support, using class types, and the same may well apply to any
      future C++ bindings for IEEE interchange and extended types.  There is
      a case, however, for supporting at least *f128 constants in C++, so
      that code using __float128 can use the newer style for constants
      throughout rather than needing to use the older *q constants in C++.
      Also, if built-in functions are added that may provide a way in which
      the types could leak into C++ code.
      
      Fortran note: the float128_type_node used in the Fortran front end is
      renamed to gfc_float128_type_node, since the semantics are different:
      in particular, if long double has binary128 format, then the new
      language-independent float128_type_node is a distinct type that also
      has binary128 format, but the Fortran node is expected to be NULL in
      that case.  Likewise, Fortran's complex_float128_type_node is renamed
      to gfc_complex_float128_type_node.
      
      PowerPC note: the back end had an inconsistency that if TFmode was
      binary128, *q constants were TFmode instead of KFmode but __float128
      was KFmode.  This patch follows the same logic as for *q constants, so
      that _Float128 prefers TFmode (and __float128 becomes an alias for
      _Float128).
      
      ARM note: __fp16 is promoted to double (by convert_arguments) when
      passed without a prototype / in variable arguments.  But this is only
      about the argument promotion; it is not handled as promoting in
      c-common.c:self_promoting_args_p / c-typeck.c:c_type_promotes_to,
      meaning that a K&R function definition for an argument of type __fp16
      corresponds to a prototype with an argument of that type, not to one
      with an argument of type double, whereas a float argument in a K&R
      function definition corresponds to a double prototype argument - and
      the same functions are also what's involved in making va_arg give a
      warning and generate a call to abort when called with type float.
      This is preserved by this patch, while arranging for _Float16 not to
      be promoted when passed without a prototype / in variable arguments
      (the promotion of float being considered a legacy feature, not applied
      to any new types in C99 or later).
      
      TS 18661-3 extends the set of decimal floating-point types similarly,
      and adds new constant suffixes for the existing types, but this patch
      does not do anything regarding that extension.
      
      This patch does nothing regarding built-in functions, although
      type-generic functions such as __builtin_isinf work for the new types
      and associated tests are included.  There are at least two levels of
      built-in function support possible for these types.  The minimal
      level, implemented in
      <https://gcc.gnu.org/ml/gcc-patches/2016-06/msg01702.html> (which
      needs updating to use dg-add-options), adds built-in functions similar
      to those x86 has for __float128: __builtin_inf* __builtin_huge_val*,
      __builtin_nan*, __builtin_nans*, __builtin_fabs*, __builtin_copysign*.
      That would be sufficient for glibc to use the *f128 names for built-in
      functions by default with *q used only for backwards compatibility
      when using older GCC versions.  That would also allow c_cpp_builtins's
      flag_building_libgcc code, defining __LIBGCC_%s_FUNC_EXT__, to use
      such suffixes rather than the present code hardcoding logic about
      target-specific constant suffixes and how those relate to function
      suffixes.
      
      Full built-in function support would cover the full range of built-in
      functions for existing floating-point types, adding variants for all
      the new types, except for a few obsolescent functions and
      non-type-generic variants of type-generic functions.  Some but not all
      references to such functions in GCC use macros such as CASE_FLT_FN to
      be type-generic; a fair amount of work would be needed to identify all
      places to update.  Adding all those functions would enable
      optimizations (for constant arguments and otherwise) for TS 18661-3
      functions, but it would also substantially expand the enum listing
      built-in functions (and we've had problems with the size of that enum
      in the past), and increase the amount of built-in function
      initialization to do - I don't know what the startup cost involved in
      built-in function initialization is, but it would be something to
      consider when adding such a large set of functions.
      
      There are also a range of optimizations, in match.pd and elsewhere,
      that only operate on the three standard floating-point types.  Ideally
      those would be made generic to all floating-point types, but this
      patch does nothing in that regard.  Special care would be needed
      regarding making sure library functions to which calls are generated
      actually exist.  For example, if sqrt is called on an argument of type
      _Float32, and the result converted to _Float32, this is equivalent to
      doing a square root operation directly on _Float32.  But if the user's
      libm does not have the sqrtf32 function, or the name is not reserved
      because __STDC_WANT_IEC_60559_TYPES_EXT__ was not defined before
      including <math.h>, you can only do that optimization if you convert
      to a call to sqrtf instead.
      
      DECIMAL_DIG now relates to all supported floating-point formats, not
      just float, double and long double; I've raised the question with WG14
      of how this relates to the formula for DECIMAL_DIG in C11 not
      considering this.  TS 18661-3 says it also covers non-arithmetic
      formats only supported by library conversion functions; this patch
      does not add any target hooks to allow for the case where there are
      such formats wider than any supported for arithmetic types (where
      e.g. libc supports conversions involving the binary128 representation,
      but the _Float128 type is not supported).
      
      GCC provides its own <tgmath.h> for some targets.  No attempt is made
      to adapt this to handle the new types.
      
      Nothing is done regarding debug info for the new types (see the
      "Debugger support for __float128 type?" thread on gcc@, Sep/Oct 2015).
      
      No __SIZEOF_*__ macros are added for the new types.
      
      Nothing is done with do_warn_double_promotion.
      
      Nothing is done to include the new types in those determining
      max_align_t, although properly it should be sufficiently aligned for
      any of those types.
      
      The logic for usual arithmetic conversions in c_common_type relies on
      TYPE_PRECISION for floating-point types, which is less than ideal
      (doesn't necessarily correspond to whether one type's values are
      subset of another); looking in more detail at the formats might be
      better.  But since I included code in build_common_tree_nodes to work
      around rs6000 KFmode having precision 113 not 128, I think it should
      work.  Ideally one might have errors in generic code for the case
      where the two types do not have one type's values a subset of the
      other (which is undefined behavior).  But the only case where this can
      actually occur is mixing IBM long double with binary128 on powerpc,
      and rs6000_invalid_binary_op deals with that at present.  TS 18661-3
      does not fully specify the type resulting from the usual arithmetic
      conversions in the case where two _FloatNx types have the same set of
      values; I arranged the code to prefer the greater value of N in that
      case.
      
      The __FP_FAST_FMA* macros are not extended to cover the new types,
      since there are no corresponding built-in functions (if built-in
      fmafN, fmafNx are added, the macros should be extended, and the new
      macros documented).  Also, only a limited set of modes is handled in
      mode_has_fma.
      
      Diagnostics relating to the use of the new types with -pedantic do not
      try to distinguish them from purely nonstandard types such as __int128
      and constant suffixes such as *q.
      
      If you use an unsupported _FloatN / _FloatNx type you get a warning
      about the type defaulting to int after the warning about the type not
      being supported.  That's less than ideal, but it's also a pre-existing
      condition if you use __int128 on a 32-bit system where it's
      unsupported.
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.  Other
      back-end changes minimally tested by building cc1 for ia64-linux-gnu,
      powerpc64le-linux-gnu, pdp11-none (the last failed for unrelated
      reasons).
      
      	PR c/32187
      gcc:
      	* tree-core.h (TI_COMPLEX_FLOAT16_TYPE)
      	(TI_COMPLEX_FLOATN_NX_TYPE_FIRST, TI_COMPLEX_FLOAT32_TYPE)
      	(TI_COMPLEX_FLOAT64_TYPE, TI_COMPLEX_FLOAT128_TYPE)
      	(TI_COMPLEX_FLOAT32X_TYPE, TI_COMPLEX_FLOAT64X_TYPE)
      	(TI_COMPLEX_FLOAT128X_TYPE, TI_FLOAT16_TYPE, TI_FLOATN_TYPE_FIRST)
      	(TI_FLOATN_NX_TYPE_FIRST, TI_FLOAT32_TYPE, TI_FLOAT64_TYPE)
      	(TI_FLOAT128_TYPE, TI_FLOATN_TYPE_LAST, TI_FLOAT32X_TYPE)
      	(TI_FLOATNX_TYPE_FIRST, TI_FLOAT64X_TYPE, TI_FLOAT128X_TYPE)
      	(TI_FLOATNX_TYPE_LAST, TI_FLOATN_NX_TYPE_LAST): New enum
      	tree_index values.
      	(NUM_FLOATN_TYPES, NUM_FLOATNX_TYPES, NUM_FLOATN_NX_TYPES): New
      	macros.
      	(struct floatn_type_info): New structure type.
      	(floatn_nx_types): New variable declaration.
      	* tree.h (FLOATN_TYPE_NODE, FLOATN_NX_TYPE_NODE)
      	(FLOATNX_TYPE_NODE, float128_type_node, float64x_type_node)
      	(COMPLEX_FLOATN_NX_TYPE_NODE): New macros.
      	* tree.c (floatn_nx_types): New variable.
      	(build_common_tree_nodes): Initialize _FloatN, _FloatNx and
      	corresponding complex types.
      	* target.def (floatn_mode): New hook.
      	* targhooks.c: Include "real.h".
      	(default_floatn_mode): New function.
      	* targhooks.h (default_floatn_mode): New prototype.
      	* doc/extend.texi (Floating Types): Document _FloatN and _FloatNx
      	types.
      	* doc/sourcebuild.texi (float@var{n}, float@var{n}x): Document new
      	effective-target and dg-add-options keywords.
      	(float@var{n}_runtime, float@var{n}x_runtime, floatn_nx_runtime):
      	Document new effective-target keywords.
      	* doc/tm.texi.in (TARGET_FLOATN_MODE): New @hook.
      	* doc/tm.texi: Regenerate.
      	* ginclude/float.h (LDBL_DECIMAL_DIG): Define to
      	__LDBL_DECIMAL_DIG__, not __DECIMAL_DIG__.
      	[__STDC_WANT_IEC_60559_TYPES_EXT__]: Define macros from TS
      	18661-3.
      	* real.h (struct real_format): Add field ieee_bits.
      	* real.c (ieee_single_format, mips_single_format)
      	(motorola_single_format, spu_single_format, ieee_double_format)
      	(mips_double_format, motorola_double_format)
      	(ieee_extended_motorola_format, ieee_extended_intel_96_format)
      	(ieee_extended_intel_128_format)
      	(ieee_extended_intel_96_round_53_format, ibm_extended_format)
      	(mips_extended_format, ieee_quad_format, mips_quad_format)
      	(vax_f_format, vax_d_format, vax_g_format, decimal_single_format)
      	(decimal_double_format, decimal_quad_format, ieee_half_format)
      	(arm_half_format, real_internal_format: Initialize ieee_bits
      	field.
      	* config/i386/i386.c (ix86_init_builtin_types): Do not initialize
      	float128_type_node.  Set float80_type_node to float64x_type_node
      	if appropriate and long_double_type_node not appropriate.
      	* config/ia64/ia64.c (ia64_init_builtins): Likewise.
      	* config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format):
      	Initialize ieee_bits field.
      	* config/rs6000/rs6000.c (TARGET_FLOATN_MODE): New macro.
      	(rs6000_init_builtins): Set ieee128_float_type_node to
      	float128_type_node.
      	(rs6000_floatn_mode): New function.
      
      gcc/c:
      	* c-tree.h (cts_floatn_nx): New enum c_typespec_keyword value.
      	(struct c_declspecs): Add field floatn_nx_idx.
      	* c-decl.c (declspecs_add_type, finish_declspecs): Handle _FloatN
      	and _FloatNx type specifiers.
      	* c-parser.c (c_keyword_starts_typename, c_token_starts_declspecs)
      	(c_parser_declspecs, c_parser_attribute_any_word)
      	(c_parser_objc_selector): Use CASE_RID_FLOATN_NX.
      	* c-typeck.c (c_common_type): Handle _FloatN and _FloatNx types.
      	(convert_arguments): Avoid promoting _FloatN and _FloatNx types
      	narrower than double.
      
      gcc/c-family:
      	* c-common.h (RID_FLOAT16, RID_FLOATN_NX_FIRST, RID_FLOAT32)
      	(RID_FLOAT64, RID_FLOAT128, RID_FLOAT32X, RID_FLOAT64X)
      	(RID_FLOAT128X): New enum rid values.
      	(CASE_RID_FLOATN_NX): New macro.
      	* c-common.c (c_common_reswords): Add _FloatN and _FloatNx
      	keywords.
      	(c_common_type_for_mode): Check for _FloatN and _FloatNx and
      	corresponding complex types.
      	(c_common_nodes_and_builtins): For non-C++, register _FloatN and
      	_FloatNx and corresponding complex types.
      	(keyword_begins_type_specifier): Use CASE_RID_FLOATN_NX.
      	* c-cppbuiltin.c (builtin_define_float_constants): Check _FloatN
      	and _FloatNx types for the widest type for determining
      	DECIMAL_DIG.  Define __LDBL_DECIMAL_DIG__ as well as
      	__DECIMAL_DIG__ for long double.  Handle FMA_SUFFIX being NULL.
      	(c_cpp_builtins): Call builtin_define_float_constants for _FloatN
      	and _FloatNx types.
      	* c-lex.c (interpret_float): Handle _FloatN and _FloatNx
      	constants.
      	* c-pretty-print.c (pp_c_floating_constant): Handle _FloatN and
      	_FloatNx types.
      
      gcc/fortran:
      	* trans-types.h (float128_type_node): Rename to
      	gfc_float128_type_node.
      	(complex_float128_type_node): Rename to
      	gfc_complex_float128_type_node.
      	* iso-c-binding.def, trans-intrinsic.c, trans-types.c: All users
      	changed.
      
      gcc/testsuite:
      	* lib/target-supports.exp (check_effective_target_float16)
      	(check_effective_target_float32, check_effective_target_float64)
      	(check_effective_target_float128, check_effective_target_float32x)
      	(check_effective_target_float64x)
      	(check_effective_target_float128x)
      	(check_effective_target_float16_runtime)
      	(check_effective_target_float32_runtime)
      	(check_effective_target_float64_runtime)
      	(check_effective_target_float128_runtime)
      	(check_effective_target_float32x_runtime)
      	(check_effective_target_float64x_runtime)
      	(check_effective_target_float128x_runtime)
      	(check_effective_target_floatn_nx_runtime)
      	(add_options_for_float16, add_options_for_float32)
      	(add_options_for_float64, add_options_for_float128)
      	(add_options_for_float32x, add_options_for_float64x)
      	(add_options_for_float128x): New procedures.
      	* gcc.dg/dfp/floatn.c, gcc.dg/float128-typeof.c,
      	gcc.dg/float128x-typeof.c, gcc.dg/float16-typeof.c,
      	gcc.dg/float32-typeof.c, gcc.dg/float32x-typeof.c,
      	gcc.dg/float64-typeof.c, gcc.dg/float64x-typeof.c,
      	gcc.dg/floatn-arithconv.c, gcc.dg/floatn-errs.c,
      	gcc.dg/floatn-typeof.h, gcc.dg/torture/float128-basic.c,
      	gcc.dg/torture/float128-complex.c,
      	gcc.dg/torture/float128-floath.c, gcc.dg/torture/float128-tg.c,
      	gcc.dg/torture/float128x-basic.c,
      	gcc.dg/torture/float128x-complex.c,
      	gcc.dg/torture/float128x-floath.c, gcc.dg/torture/float128x-tg.c,
      	gcc.dg/torture/float16-basic.c, gcc.dg/torture/float16-complex.c,
      	gcc.dg/torture/float16-floath.c, gcc.dg/torture/float16-tg.c,
      	gcc.dg/torture/float32-basic.c, gcc.dg/torture/float32-complex.c,
      	gcc.dg/torture/float32-floath.c, gcc.dg/torture/float32-tg.c,
      	gcc.dg/torture/float32x-basic.c,
      	gcc.dg/torture/float32x-complex.c,
      	gcc.dg/torture/float32x-floath.c, gcc.dg/torture/float32x-tg.c,
      	gcc.dg/torture/float64-basic.c, gcc.dg/torture/float64-complex.c,
      	gcc.dg/torture/float64-floath.c, gcc.dg/torture/float64-tg.c,
      	gcc.dg/torture/float64x-basic.c,
      	gcc.dg/torture/float64x-complex.c,
      	gcc.dg/torture/float64x-floath.c, gcc.dg/torture/float64x-tg.c,
      	gcc.dg/torture/floatn-basic.h, gcc.dg/torture/floatn-complex.h,
      	gcc.dg/torture/floatn-convert.c, gcc.dg/torture/floatn-floath.h,
      	gcc.dg/torture/floatn-tg.h,
      	gcc.dg/torture/fp-int-convert-float128-ieee-timode.c,
      	gcc.dg/torture/fp-int-convert-float128-ieee.c,
      	gcc.dg/torture/fp-int-convert-float128x-timode.c,
      	gcc.dg/torture/fp-int-convert-float128x.c,
      	gcc.dg/torture/fp-int-convert-float16-timode.c,
      	gcc.dg/torture/fp-int-convert-float16.c,
      	gcc.dg/torture/fp-int-convert-float32-timode.c,
      	gcc.dg/torture/fp-int-convert-float32.c,
      	gcc.dg/torture/fp-int-convert-float32x-timode.c,
      	gcc.dg/torture/fp-int-convert-float32x.c,
      	gcc.dg/torture/fp-int-convert-float64-timode.c,
      	gcc.dg/torture/fp-int-convert-float64.c,
      	gcc.dg/torture/fp-int-convert-float64x-timode.c,
      	gcc.dg/torture/fp-int-convert-float64x.c: New tests.
      	* gcc.dg/torture/fp-int-convert.h (TEST_I_F): Add argument for
      	maximum exponent of floating-point type.  Use it in testing
      	whether 0x8...0 fits in the floating-point type.  Always treat -1
      	(signed 0xf...f) as fitting in the floating-point type.
      	(M_OK1): New macro.
      	* gcc.dg/torture/fp-int-convert-double.c,
      	gcc.dg/torture/fp-int-convert-float.c,
      	gcc.dg/torture/fp-int-convert-float128-timode.c,
      	gcc.dg/torture/fp-int-convert-float128.c,
      	gcc.dg/torture/fp-int-convert-float80-timode.c,
      	gcc.dg/torture/fp-int-convert-float80.c,
      	gcc.dg/torture/fp-int-convert-long-double.c,
      	gcc.dg/torture/fp-int-convert-timode.c: Update calls to TEST_I_F.
      
      libcpp:
      	* include/cpplib.h (CPP_N_FLOATN, CPP_N_FLOATNX)
      	(CPP_N_WIDTH_FLOATN_NX, CPP_FLOATN_SHIFT, CPP_FLOATN_MAX): New
      	macros.
      	* expr.c (interpret_float_suffix): Handle fN, fNx, FN and FNx
      	suffixes.
      
      From-SVN: r239625
      Joseph Myers committed
  2. 04 Jan, 2016 1 commit
  3. 19 Dec, 2015 1 commit
  4. 30 Oct, 2015 2 commits
    • Allow real_format to be passed to more real.h functions · f16e6077
      Most real.h routines used machine modes to specify the format of
      an operation and converted that to a float_format * internally.
      Some also had alternative versions that accepted a float_format *.
      
      In an upcoming patch it seemed more convenient for the callers
      I was adding to use float_format directly, since the callers need
      to examine the format themselves for other reasons.  This patch
      therefore replaces the machine_mode arguments with a new class that
      allows both machine modes and float_format pointers to be used.
      
      Tested on x86_64-linux-gnu, arm-linux-gnueabi and aarch64-linux-gnu.
      
      gcc/
      	* real.h (format_helper): New.
      	(real_convert, exact_real_truncate, real_from_string3, real_to_target)
      	(real_from_target, real_nan, real_2expN, real_value_truncate)
      	(significand_size, real_from_string2, exact_real_inverse)
      	(exact_real_inverse, real_powi, real_trunc, real_floor, real_ceil)
      	(real_round, real_isinteger, real_from_integer): Replace
      	machine_mode arguments with format_helper arguments.
      	* real.c (exact_real_inverse, real_from_string2, real_from_string3)
      	(real_from_integer, real_nan, real_2expN, real_convert)
      	(real_value_truncate, exact_real_truncate, real_to_target)
      	(real_from_target, significand_size, real_powi, real_trunc)
      	(real_floor, real_ceil, real_round, real_isinteger): Replace
      	machine_mode arguments with format_helper arguments.
      	(real_to_target_fmt, real_from_target_fmt): Delete.
      	* dfp.h (decimal_real_convert): Replace mode argument with real_format.
      	* dfp.c (decimal_to_binary, decimal_real_convert): Replace mode
      	argument with real_format.
      	* builtins.c (do_real_to_int_conversion): Update type of fn argument.
      
      gcc/java/
      	* jcf-parse.c (get_constant): Use real_from_target rather than
      	real_from_target_fmt.
      
      From-SVN: r229581
      Richard Sandiford committed
    • Robustify REAL_MODE_FORMAT · d5e09aa0
      Make sure that REAL_MODE_FORMAT aborts if it is passed an invalid mode,
      rather than stepping beyond the bounds of an array.  It turned out that
      some code was passing non-float modes to the real.h routines.
      
      Tested on x86_64-linux-gnu, arm-linux-gnueabi and aarch64-linux-gnu.
      
      gcc/
      	* real.h (REAL_MODE_FORMAT): Abort if the mode isn't a
      	SCALAR_FLOAT_MODE_P.
      
      From-SVN: r229579
      Richard Sandiford committed
  5. 13 Oct, 2015 1 commit
    • To... · 9b054b08
      To: gcc-patches@gcc.gnu.org
      Subject: Add an extra pow rule to match.pd
      From: Richard Sandiford <richard.sandiford@arm.com>
      Gcc: private.sent
      --text follows this line--
      Simplify pow(|x|,y) and pow(-x,y) to pow(x,y) if y is an even integer.
      At the moment this duplicates a case in fold_builtin_pow, but an
      upcoming patch will move all the fold_builtin_pow rules to match.pd.
      I'm doing this one early to fix a regression in builtin-10.c for
      soft-float ARM.
      
      gcc/
      	* real.h (real_isinteger): Declare.
      	* real.c (real_isinteger): New function.
      	* match.pd: Simplify pow(|x|,y) and pow(-x,y) to pow(x,y)
      	if y is an even integer.
      
      From-SVN: r228750
      Richard Sandiford committed
  6. 07 Oct, 2015 1 commit
    • Cache reals for 1/4, 1/6 and 1/9 · d01db77a
      We have a global 1/2 and a cached 1/3, but recalculate 1/4, 1/6 and 1/9
      each time we need them.  That seems a bit arbitrary and makes the folding
      code more noisy (especially once it's moved to match.pd).
      
      This patch caches the other three constants too.  Bootstrapped &
      regression-tested on x86_64-linux-gnu.
      
      gcc/
      	* real.h (dconst_quarter, dconst_sixth, dconst_ninth): New macros.
      	(dconst_quarter_ptr, dconst_sixth_ptr, dconst_ninth_ptr): Declare.
      	* real.c (CACHED_FRACTION): New helper macro.
      	(dconst_third_ptr): Use it.
      	(dconst_quarter_ptr, dconst_sixth_ptr, dconst_ninth_ptr): New.
      	* builtins.c (fold_builtin_sqrt): Use dconst_quarter and
      	dconst_sixth.
      	(fold_builtin_cbrt): Use dconst_sixth and dconst_ninth.
      
      From-SVN: r228561
      Richard Sandiford committed
  7. 05 Oct, 2015 7 commits
    • Add a build_real_truncate helper function · 73463c5e
      ...which simplifies the match.pd patterns I'm about to add.
      
      Bootstrapped & regression-tested on x86_64-linux-gnu.
      
      gcc/
      	* real.h (build_real_truncate): Declare.
      	* tree.c (build_real_truncate): New function.
      	(strip_float_extensions): Use it.
      	* builtins.c (fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_cbrt)
      	(fold_builtin_hypot, fold_builtin_pow): Likewise.
      	* match.pd: Likewise.
      
      From-SVN: r228483
      Richard Sandiford committed
    • Remove REAL_VALUE_FROM_CONST_DOUBLE · 34a72c33
      To maintain symmetry after the previous removal of
      CONST_DOUBLE_FROM_REAL_VALUE, this patch also gets rid of
      REAL_VALUE_FROM_CONST_DOUBLE.  All the macro did was copy the
      contents of CONST_DOUBLE_REAL_VALUE into a temporary real_value
      structure.  In many cases there was no need for this temporary
      and we could simply use the CONST_DOUBLE_REAL_VALUE directly.
      For that reason this patch is less automatic than the others.
      
      Bootstrapped & regression-tested on x86_64-linux-gnu.  Also tested by
      building one target per CPU directory and checking that there were
      no new warnings and no changes in testsuite output at -O2.
      
      gcc/
      	* real.h (REAL_VALUE_FROM_CONST_DOUBLE): Delete.
      	* config/aarch64/aarch64.c (aarch64_float_const_zero_rtx_p)
      	(aarch64_print_operand, aarch64_float_const_representable_p)
      	(aarch64_output_simd_mov_immediate): Use CONST_DOUBLE_REAL_VALUE
      	instead of REAL_VALUE_FROM_CONST_DOUBLE.
      	* config/arc/arc.c (arc_print_operand): Likewise.
      	* config/arm/arm.c (arm_const_double_rtx, vfp3_const_double_index)
      	(neon_valid_immediate, arm_print_operand, arm_emit_fp16_const)
      	(vfp3_const_double_for_fract_bits, vfp3_const_double_for_bits):
      	Likewise.
      	* config/arm/arm.md (*arm32_movhf, consttable_4, consttable_8)
      	(consttable_16): Likewise.
      	* config/arm/vfp.md (*movhf_vfp_neon, *movhf_vfp): Likewise.
      	* config/avr/avr.c (avr_print_operand): Likewise.
      	* config/bfin/bfin.md: Likewise (in a define_split).
      	* config/c6x/c6x.md: Likewise (in a define_split).
      	* config/cr16/cr16.c (cr16_const_double_ok): Likewise.
      	(cr16_print_operand): Likewise.
      	* config/cris/cris.c (cris_print_operand): Likewise.
      	* config/epiphany/epiphany.c (epiphany_print_operand): Likewise.
      	* config/fr30/fr30.c (fr30_print_operand): Likewise.
      	(fr30_const_double_is_zero): Likewise.
      	* config/frv/frv.c (frv_print_operand, output_move_single): Likewise.
      	* config/frv/frv.md: Likewise (in a define_split).
      	* config/frv/predicates.md (int_2word_operand): Likewise.
      	* config/h8300/h8300.c (h8300_print_operand): Likewise.
      	* config/i386/i386.c (standard_80387_constant_p): Likewise.
      	(ix86_print_operand, ix86_split_to_parts): Likewise.
      	* config/i386/i386.md: Likewise (in a define_split).
      	* config/ia64/ia64.c (ia64_split_tmode, ia64_print_operand): Likewise.
      	* config/iq2000/iq2000.md (movsf_lo_sum, movsf_high): Likewise.
      	* config/m32r/m32r.c (easy_df_const, m32r_print_operand): Likewise.
      	* config/m68k/m68k.c (handle_move_double, standard_68881_constant_p)
      	(print_operand): Likewise.
      	* config/m68k/m68k.md (movsf_cf_hard, movdf_cf_hard): Likewise.
      	* config/mep/mep.md: Likewise (in define_split).
      	* config/microblaze/microblaze.c (microblaze_const_double_ok)
      	(print_operand): Likewise.
      	* config/mips/mips.md (consttable_float): Likewise.
      	* config/mmix/mmix.c (mmix_intval): Likewise.
      	* config/mn10300/mn10300.c (mn10300_print_operand): Likewise.
      	* config/nvptx/nvptx.c (nvptx_print_operand): Likewise.
      	* config/pa/pa.c (pa_singlemove_string): Likewise.
      	* config/pdp11/pdp11.c (pdp11_expand_operands): Likewise.
      	(pdp11_asm_print_operand, legitimate_const_double_p): Likewise.
      	* config/rs6000/rs6000.c (num_insns_constant, rs6000_emit_cmove)
      	(output_toc): Likewise.
      	* config/rs6000/rs6000.md: Likewise (in define_splits).
      	* config/rx/rx.c (rx_print_operand): Likewise.
      	* config/s390/s390.c (s390_output_pool_entry): Likewise.
      	* config/sh/sh.c (fp_zero_operand, fp_one_operand): Likewise.
      	* config/sh/sh.md (consttable_sf, consttable_df): Likewise
      	(and also in define_splits).
      	* config/sparc/sparc.c (fp_sethi_p, fp_mov_p): Likewise.
      	(fp_high_losum_p): Likewise.
      	* config/sparc/sparc.md (*movsf_insn, *movsf_lo_sum): Likewise.
      	(*movsf_high): Likewise.
      	* config/spu/spu.c (const_double_to_hwint): Likewise.
      	* config/v850/v850.c (const_double_split): Likewise.
      	* config/vax/vax.c (vax_float_literal): Likewise.
      	* config/visium/visium.c (visium_expand_copysign): Likewise.
      	* config/visium/visium.md: Likewise (in define_split).
      	* config/xtensa/predicates.md (const_float_1_operand): Likewise.
      	* config/xtensa/xtensa.c (print_operand): Likewise.
      	(xtensa_output_literal): Likewise.
      	* cprop.c (implicit_set_cond_p): Likewise.
      	* dwarf2out.c (insert_float): Likewise.
      	* expmed.c (expand_mult, make_tree): Likewise.
      	* expr.c (compress_float_constant): Likewise.
      	* rtlanal.c (split_double): Likewise.
      	* simplify-rtx.c (avoid_constant_pool_reference): Likewise.
      	(simplify_const_unary_operation, simplify_binary_operation_1)
      	(simplify_const_binary_operation): Likewise.
      	(simplify_const_relational_operation): Likewise.
      	* varasm.c (output_constant_pool_2): Likewise.
      
      From-SVN: r228478
      Richard Sandiford committed
    • Remove remaining uses of CONST_DOUBLE_FROM_REAL_VALUE · 555affd7
      This patch replaces all uses of CONST_DOUBLE_FROM_REAL_VALUE
      with the already-existing const_double_from_real_value.
      
      Bootstrapped & regression-tested on x86_64-linux-gnu.  Also tested by
      building one target per CPU directory and checking that there were
      no new warnings and no changes in testsuite output at -O2.
      
      gcc/
      	* real.h (CONST_DOUBLE_ATOF): Use const_double_from_real_value
      	instead of CONST_DOUBLE_FROM_REAL_VALUE.
      	(CONST_DOUBLE_FROM_REAL_VALUE): Delete.
      	* config/c6x/c6x.md (divsf3, divdf3): Use const_double_from_real_value
      	instead of CONST_DOUBLE_FROM_REAL_VALUE.
      	* config/epiphany/epiphany.md (fixuns_truncsfsi2): Likewise.
      	* config/i386/i386.c (standard_80387_constant_rtx): Likewise.
      	(ix86_expand_builtin, ix86_emit_i387_log1p, ix86_emit_i387_round)
      	(ix86_emit_swsqrtsf): Likewise.
      	* config/ia64/ia64.c (ia64_expand_builtin): Likewise.
      	* config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
      	(fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
      	* config/pa/pa.c (pa_expand_builtin): Likewise.
      	* config/rs6000/rs6000.c (rs6000_load_constant_and_splat): Likewise.
      	(rs6000_scale_v2df): Likewise.
      	* config/rs6000/rs6000.md (*cmptf_internal2): Likewise.
      	* config/s390/s390.md (fixuns_truncdddi2, fixuns_trunctddi2)
      	(fixuns_trunc<BFP:mode><GPR:mode>2): Likewise.
      	* config/s390/vx-builtins.md (vec_ctd_s64, vec_ctd_u64, vec_ctsl)
      	(vec_ctul): Likewise.
      	* config/sparc/sparc.c (sparc_emit_fixunsdi): Likewise.
      	* config/spu/spu.c (hwint_to_const_double, spu_float_const): Likewise.
      	* config/spu/spu.md (floatunsdisf2, floatunstisf2): Likewise.
      	* cse.c (fold_rtx): Likewise.
      	* emit-rtl.c (immed_double_const): Likewise (in comments).
      	(init_emit_once): Likewise.
      	* expr.c (compress_float_constant, expand_expr_real_1)
      	(const_vector_from_tree): Likewise.
      	* optabs.c (expand_float, expand_fix): Likewise.
      	* reg-stack.c (reg_to_stack): Likewise.
      	* simplify-rtx.c (avoid_constant_pool_reference): Likewise.
      	(simplify_const_unary_operation, simplify_binary_operation_1)
      	(simplify_const_binary_operation, simplify_relational_operation)
      	(simplify_immed_subreg): Likewise.
      
      From-SVN: r228477
      Richard Sandiford committed
    • Remove remaining uses of REAL_ARITHMETIC · 5c88ea94
      This patch replaces all remaining uses of the old target macro
      REAL_ARITHMETIC with calls to the (now generic) real_arithmetic
      function.
      
      Bootstrapped & regression-tested on x86_64-linux-gnu.  Also tested by
      building one target per CPU directory and checking that there were
      no new warnings and no changes in testsuite output at -O2.
      
      gcc/ada/
      	* gcc-interface/trans.c (convert_with_check): Use real_arithmetic
      	instead of REAL_ARITHMETIC.
      
      gcc/
      	* doc/tm.texi.in (REAL_ARITHMETIC): Delete.
      	* doc/tm.texi: Regenerate.
      	* real.h (REAL_ARITHMETIC): Delete.
      	* config/i386/i386.c (ix86_expand_lround, ix86_expand_round)
      	(ix86_expand_round_sse4): Use real_arithmetic instead of
      	REAL_ARITHMETIC.
      	* config/i386/sse.md (round<mode>2): Likewise.
      	* rtl.h (rtx_to_tree_code): Likewise (in comment).
      	* explow.c (rtx_to_tree_code): Likewise (in comment).
      	* match.pd: Likewise.
      	* simplify-rtx.c (simplify_binary_operation_1): Likewise.
      	* tree-ssa-math-opts.c (representable_as_half_series_p): Likewise.
      	(expand_pow_as_sqrts): Likewise.
      	* tree-pretty-print.c (dump_generic_node): Remove code that
      	was conditional on REAL_ARITHMETIC being undefined.
      
      From-SVN: r228476
      Richard Sandiford committed
    • Replace REAL_VALUES_LESS with real_less · 8cb41028
      This patch continues the removal of real-related macros by
      replacing REAL_VALUES_LESS with real_less.
      
      Bootstrapped & regression-tested on x86_64-linux-gnu.  Also tested by
      building one target per CPU directory and checking that there were
      no new warnings and no changes in testsuite output at -O2.
      
      gcc/ada/
      	* gcc-interface/trans.c (convert_with_check): Use real_less instead
      	of REAL_VALUES_LESS.
      
      gcc/
      	* doc/tm.texi.in (REAL_VALUES_LESS): Delete.
      	* doc/tm.texi: Regenerate.
      	* real.h (real_less): Declare.
      	(REAL_VALUES_LESS): Delete.
      	* real.c (real_less): New function.
      	(real_compare): Use it.
      	* config/m68k/m68k.c (floating_exact_log2): Use real_less instead
      	of REAL_VALUES_LESS.
      	* config/microblaze/microblaze.c (microblaze_const_double_ok):
      	Likewise.
      	* fold-const.c (fold_convert_const_int_from_real): Likewise.
      	* simplify-rtx.c (simplify_const_unary_operation): Likewise.
      	(simplify_const_relational_operation): Likewise.
      	* tree-call-cdce.c (check_pow): Likewise.
      	(gen_conditions_for_pow_cst_base): Likewise.
      
      From-SVN: r228475
      Richard Sandiford committed
    • Remove remaining uses of REAL_VALUES_IDENTICAL · 1a25c6b1
      This patch continues the removal of real-related macros.
      We already had both the old-style REAL_VALUES_IDENTICAL and the
      new-style real_identical, so this patch replaces all remaining
      uses of the former with the latter.
      
      Bootstrapped & regression-tested on x86_64-linux-gnu.  Also tested by
      building one target per CPU directory and checking that there were
      no new warnings and no changes in testsuite output at -O2.
      
      gcc/
      	* real.h (REAL_VALUES_IDENTICAL): Delete.
      	* config/m68k/m68k.c (standard_68881_constant_p): Use real_identical
      	instead of REAL_VALUES_IDENTICAL.
      	* fold-const.c (operand_equal_p): Likewise.
      	* ipa-icf.c (sem_variable::equals): Likewise.
      	* tree-complex.c (some_nonzerop): Likewise.
      	(expand_complex_multiplication): Likewise.
      	* tree.c (simple_cst_equal): Likewise.
      	* varasm.c (compare_constant): Likewise.
      ---
       gcc/config/m68k/m68k.c | 5 ++---
       gcc/fold-const.c       | 3 +--
       gcc/ipa-icf.c          | 4 ++--
       gcc/real.h             | 1 -
       gcc/tree-complex.c     | 4 ++--
       gcc/tree.c             | 2 +-
       gcc/varasm.c           | 2 +-
       7 files changed, 9 insertions(+), 12 deletions(-)
      
      From-SVN: r228474
      Richard Sandiford committed
    • Replace REAL_VALUES_EQUAL with real_equal · 624d31fe
      Richard B suggested we should replace dconsthalf etc. with
      dconst<1, 2> ().  When I tried that, the extra comma caused problems
      with some lingering uses of the old target macros for handling reals
      (e.g. REAL_ARITHMETIC instead of real_arithmetic), since the constant
      was then treated as two macro parameters.  It would have been possible
      to add an extra level of brackets to avoid this, but I thought I might
      as well take the opportunity to remove the macros instead.  (Note that
      I'm only removing macros that caused a problem directly, or are closely
      related to ones that did.)
      
      This first patch replaces REAL_VALUES_EQUAL with a real_equal function.
      The prototype is the same as for real_identical, which has already
      undergone a half-transition in this direction.
      
      Bootstrapped & regression-tested on x86_64-linux-gnu.  Also tested by
      building one target per CPU directory and checking that there were
      no new warnings and no changes in testsuite output at -O2.
      
      gcc/c-family/
      	* c-lex.c (interpret_float): Use real_equal instead of
      	REAL_VALUES_EQUAL.
      
      gcc/c/
      	* c-typeck.c (c_tree_equal): Use real_equal instead of
      	REAL_VALUES_EQUAL.
      
      gcc/cp/
      	* tree.c (cp_tree_equal): Use real_equal instead of
      	REAL_VALUES_EQUAL.
      
      gcc/
      	* real.h (real_equal): Declare.
      	(REAL_VALUES_EQUAL): Delete.
      	* real.c (real_equal): New function.
      	(real_compare): Use it.
      	* doc/tm.texi.in (REAL_VALUES_EQUAL): Delete.
      	* doc/tm.texi: Regenerate.
      	* builtins.c (fold_builtin_pow, fold_builtin_load_exponent): Use
      	real_equal instead of REAL_VALUES_EQUAL.
      	* config/aarch64/aarch64.c (aarch64_float_const_zero_rtx_p): Likewise.
      	* config/arm/arm.c (arm_const_double_rtx, neon_valid_immediate)
      	(fp_const_from_val): Likewise.
      	* config/fr30/fr30.c (fr30_const_double_is_zero): Likewise.
      	* config/m68k/m68k.c (standard_68881_constant_p): Likewise.
      	(floating_exact_log2): Likewise.
      	* config/sh/sh.c (fp_zero_operand, fp_one_operand): Likewise.
      	* config/vax/vax.c (vax_float_literal): Likewise.
      	* config/xtensa/predicates.md (const_float_1_operand): Likewise.
      	* cprop.c (implicit_set_cond_p): Likewise.
      	* expmed.c (expand_mult): Likewise.
      	* fold-const.c (const_binop): Likewise.
      	* simplify-rtx.c (simplify_binary_operation_1): Likewise.
      	(simplify_const_binary_operation): Likewise.
      	(simplify_const_relational_operation): Likewise.
      	* tree-call-cdce.c (check_pow): Likewise.
      	(gen_conditions_for_pow_cst_base): Likewise.
      	* tree-inline.c (estimate_num_insns): Likewise.
      	* tree-ssa-dom.c (record_equality): Likewise.
      	* tree-ssa-math-opts.c (representable_as_half_series_p): Likewise.
      	(gimple_expand_builtin_pow): Likewise.
      	(pass_optimize_widening_mul::execute): Likewise.
      	* tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise.
      	* tree-vect-patterns.c (vect_recog_pow_pattern): Likewise.
      	* tree.c (real_zerop, real_onep, real_minus_onep): Likewise.
      ---
       gcc/builtins.c                  | 14 +++++++-------
       gcc/c-family/c-lex.c            |  6 +++---
       gcc/c/c-typeck.c                |  2 +-
       gcc/config/aarch64/aarch64.c    |  2 +-
       gcc/config/arm/arm.c            |  6 +++---
       gcc/config/fr30/fr30.c          |  2 +-
       gcc/config/m68k/m68k.c          |  6 +++---
       gcc/config/sh/sh.c              |  4 ++--
       gcc/config/vax/vax.c            |  4 ++--
       gcc/config/xtensa/predicates.md |  2 +-
       gcc/cp/tree.c                   |  2 +-
       gcc/cprop.c                     |  2 +-
       gcc/doc/tm.texi                 |  7 -------
       gcc/doc/tm.texi.in              |  7 -------
       gcc/expmed.c                    |  2 +-
       gcc/fold-const.c                |  2 +-
       gcc/real.c                      | 10 +++++++++-
       gcc/real.h                      |  4 ++--
       gcc/simplify-rtx.c              | 16 ++++++++--------
       gcc/tree-call-cdce.c            |  4 ++--
       gcc/tree-inline.c               |  5 +++--
       gcc/tree-ssa-dom.c              |  2 +-
       gcc/tree-ssa-math-opts.c        | 16 ++++++++--------
       gcc/tree-ssa-uncprop.c          |  2 +-
       gcc/tree-vect-patterns.c        |  4 ++--
       gcc/tree.c                      |  6 +++---
       26 files changed, 67 insertions(+), 72 deletions(-)
      
      From-SVN: r228473
      Richard Sandiford committed
  8. 04 Jun, 2015 1 commit
    • coretypes.h: Include machmode.h... · ecb9f223
      2015-06-04  Andrew MacLeod  <amacleod@redhat.com>
      
      	* coretypes.h: Include machmode.h, signop.h, wide-int.h, double-int.h,
      	real.h, and fixed-value.h when included in host source files.
      	* double-int.h: Remove redundant #includes listed above.
      	* fixed-value.h: Likewise.
      	* real.h: Likewise.
      	* wide-int.h: Likewise.
      	* inchash.h: Likewise.
      	* rtl.h: Add some include files When included from a generator file.
      	* target.h: Remove wide-int.h and insn-modes.h from the include list.
      	* internal-fn.h: Don't include coretypes.h.
      	* alias.c: Adjust includes for restructured coretypes.h.
      	* asan.c: Likewise.
      	* attribs.c: Likewise.
      	* auto-inc-dec.c: Likewise.
      	* auto-profile.c: Likewise.
      	* bb-reorder.c: Likewise.
      	* bt-load.c: Likewise.
      	* builtins.c: Likewise.
      	* caller-save.c: Likewise.
      	* calls.c: Likewise.
      	* ccmp.c: Likewise.
      	* cfg.c: Likewise.
      	* cfganal.c: Likewise.
      	* cfgbuild.c: Likewise.
      	* cfgcleanup.c: Likewise.
      	* cfgexpand.c: Likewise.
      	* cfghooks.c: Likewise.
      	* cfgloop.c: Likewise.
      	* cfgloop.h: Likewise.
      	* cfgloopanal.c: Likewise.
      	* cfgloopmanip.c: Likewise.
      	* cfgrtl.c: Likewise.
      	* cgraph.c: Likewise.
      	* cgraphbuild.c: Likewise.
      	* cgraphclones.c: Likewise.
      	* cgraphunit.c: Likewise.
      	* cilk-common.c: Likewise.
      	* combine-stack-adj.c: Likewise.
      	* combine.c: Likewise.
      	* compare-elim.c: Likewise.
      	* convert.c: Likewise.
      	* coverage.c: Likewise.
      	* cppbuiltin.c: Likewise.
      	* cprop.c: Likewise.
      	* cse.c: Likewise.
      	* cselib.c: Likewise.
      	* data-streamer-in.c: Likewise.
      	* data-streamer-out.c: Likewise.
      	* data-streamer.c: Likewise.
      	* dbxout.c: Likewise.
      	* dce.c: Likewise.
      	* ddg.c: Likewise.
      	* debug.c: Likewise.
      	* df-core.c: Likewise.
      	* df-problems.c: Likewise.
      	* df-scan.c: Likewise.
      	* df.h: Likewise.
      	* dfp.c: Likewise.
      	* dojump.c: Likewise.
      	* dominance.c: Likewise.
      	* domwalk.c: Likewise.
      	* double-int.c: Likewise.
      	* dse.c: Likewise.
      	* dumpfile.c: Likewise.
      	* dwarf2asm.c: Likewise.
      	* dwarf2cfi.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* dwarf2out.h: Likewise.
      	* emit-rtl.c: Likewise.
      	* et-forest.c: Likewise.
      	* except.c: Likewise.
      	* explow.c: Likewise.
      	* expmed.c: Likewise.
      	* expr.c: Likewise.
      	* final.c: Likewise.
      	* fixed-value.c: Likewise.
      	* fold-const.c: Likewise.
      	* function.c: Likewise.
      	* fwprop.c: Likewise.
      	* gcc-plugin.h: Likewise.
      	* gcse.c: Likewise.
      	* generic-match-head.c: Likewise.
      	* ggc-page.c: Likewise.
      	* gimple-builder.c: Likewise.
      	* gimple-expr.c: Likewise.
      	* gimple-fold.c: Likewise.
      	* gimple-iterator.c: Likewise.
      	* gimple-low.c: Likewise.
      	* gimple-match-head.c: Likewise.
      	* gimple-pretty-print.c: Likewise.
      	* gimple-ssa-isolate-paths.c: Likewise.
      	* gimple-ssa-strength-reduction.c: Likewise.
      	* gimple-streamer-in.c: Likewise.
      	* gimple-streamer-out.c: Likewise.
      	* gimple-streamer.h: Likewise.
      	* gimple-walk.c: Likewise.
      	* gimple.c: Likewise.
      	* gimplify-me.c: Likewise.
      	* gimplify.c: Likewise.
      	* godump.c: Likewise.
      	* graph.c: Likewise.
      	* graphite-blocking.c: Likewise.
      	* graphite-dependences.c: Likewise.
      	* graphite-interchange.c: Likewise.
      	* graphite-isl-ast-to-gimple.c: Likewise.
      	* graphite-optimize-isl.c: Likewise.
      	* graphite-poly.c: Likewise.
      	* graphite-scop-detection.c: Likewise.
      	* graphite-sese-to-poly.c: Likewise.
      	* graphite.c: Likewise.
      	* haifa-sched.c: Likewise.
      	* hooks.h: Likewise.
      	* hw-doloop.c: Likewise.
      	* ifcvt.c: Likewise.
      	* incpath.c: Likewise.
      	* init-regs.c: Likewise.
      	* internal-fn.c: Likewise.
      	* ipa-chkp.c: Likewise.
      	* ipa-comdats.c: Likewise.
      	* ipa-cp.c: Likewise.
      	* ipa-devirt.c: Likewise.
      	* ipa-icf-gimple.c: Likewise.
      	* ipa-icf.c: Likewise.
      	* ipa-inline-analysis.c: Likewise.
      	* ipa-inline-transform.c: Likewise.
      	* ipa-inline.c: Likewise.
      	* ipa-polymorphic-call.c: Likewise.
      	* ipa-profile.c: Likewise.
      	* ipa-prop.c: Likewise.
      	* ipa-pure-const.c: Likewise.
      	* ipa-ref.c: Likewise.
      	* ipa-reference.c: Likewise.
      	* ipa-split.c: Likewise.
      	* ipa-utils.c: Likewise.
      	* ipa-visibility.c: Likewise.
      	* ipa.c: Likewise.
      	* ira-build.c: Likewise.
      	* ira-color.c: Likewise.
      	* ira-conflicts.c: Likewise.
      	* ira-costs.c: Likewise.
      	* ira-emit.c: Likewise.
      	* ira-lives.c: Likewise.
      	* ira.c: Likewise.
      	* jump.c: Likewise.
      	* langhooks.c: Likewise.
      	* lcm.c: Likewise.
      	* loop-doloop.c: Likewise.
      	* loop-init.c: Likewise.
      	* loop-invariant.c: Likewise.
      	* loop-iv.c: Likewise.
      	* loop-unroll.c: Likewise.
      	* lower-subreg.c: Likewise.
      	* lra-assigns.c: Likewise.
      	* lra-coalesce.c: Likewise.
      	* lra-constraints.c: Likewise.
      	* lra-eliminations.c: Likewise.
      	* lra-lives.c: Likewise.
      	* lra-remat.c: Likewise.
      	* lra-spills.c: Likewise.
      	* lra.c: Likewise.
      	* lto-cgraph.c: Likewise.
      	* lto-compress.c: Likewise.
      	* lto-opts.c: Likewise.
      	* lto-section-in.c: Likewise.
      	* lto-section-out.c: Likewise.
      	* lto-streamer-in.c: Likewise.
      	* lto-streamer-out.c: Likewise.
      	* lto-streamer.c: Likewise.
      	* mcf.c: Likewise.
      	* mode-switching.c: Likewise.
      	* modulo-sched.c: Likewise.
      	* omega.c: Likewise.
      	* omp-low.c: Likewise.
      	* optabs.c: Likewise.
      	* opts-global.c: Likewise.
      	* passes.c: Likewise.
      	* plugin.c: Likewise.
      	* postreload-gcse.c: Likewise.
      	* postreload.c: Likewise.
      	* predict.c: Likewise.
      	* print-rtl.c: Likewise.
      	* print-tree.c: Likewise.
      	* profile.c: Likewise.
      	* real.c: Likewise.
      	* realmpfr.c: Likewise.
      	* realmpfr.h: Likewise.
      	* recog.c: Likewise.
      	* ree.c: Likewise.
      	* reg-stack.c: Likewise.
      	* regcprop.c: Likewise.
      	* reginfo.c: Likewise.
      	* regrename.c: Likewise.
      	* regs.h: Likewise.
      	* regstat.c: Likewise.
      	* reload.c: Likewise.
      	* reload1.c: Likewise.
      	* reorg.c: Likewise.
      	* resource.c: Likewise.
      	* rtl-chkp.c: Likewise.
      	* rtlanal.c: Likewise.
      	* rtlhooks.c: Likewise.
      	* sanopt.c: Likewise.
      	* sched-deps.c: Likewise.
      	* sched-ebb.c: Likewise.
      	* sched-rgn.c: Likewise.
      	* sched-vis.c: Likewise.
      	* sdbout.c: Likewise.
      	* sel-sched-dump.c: Likewise.
      	* sel-sched-ir.c: Likewise.
      	* sel-sched.c: Likewise.
      	* sese.c: Likewise.
      	* shrink-wrap.c: Likewise.
      	* shrink-wrap.h: Likewise.
      	* simplify-rtx.c: Likewise.
      	* stack-ptr-mod.c: Likewise.
      	* statistics.c: Likewise.
      	* stmt.c: Likewise.
      	* stor-layout.c: Likewise.
      	* store-motion.c: Likewise.
      	* stringpool.c: Likewise.
      	* symtab.c: Likewise.
      	* target-globals.c: Likewise.
      	* targhooks.c: Likewise.
      	* toplev.c: Likewise.
      	* tracer.c: Likewise.
      	* trans-mem.c: Likewise.
      	* tree-affine.c: Likewise.
      	* tree-affine.h: Likewise.
      	* tree-browser.c: Likewise.
      	* tree-call-cdce.c: Likewise.
      	* tree-cfg.c: Likewise.
      	* tree-cfgcleanup.c: Likewise.
      	* tree-chkp-opt.c: Likewise.
      	* tree-chkp.c: Likewise.
      	* tree-chrec.c: Likewise.
      	* tree-complex.c: Likewise.
      	* tree-data-ref.c: Likewise.
      	* tree-dfa.c: Likewise.
      	* tree-diagnostic.c: Likewise.
      	* tree-dump.c: Likewise.
      	* tree-eh.c: Likewise.
      	* tree-emutls.c: Likewise.
      	* tree-if-conv.c: Likewise.
      	* tree-inline.c: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-iterator.c: Likewise.
      	* tree-loop-distribution.c: Likewise.
      	* tree-nested.c: Likewise.
      	* tree-nrv.c: Likewise.
      	* tree-object-size.c: Likewise.
      	* tree-outof-ssa.c: Likewise.
      	* tree-parloops.c: Likewise.
      	* tree-phinodes.c: Likewise.
      	* tree-predcom.c: Likewise.
      	* tree-pretty-print.c: Likewise.
      	* tree-pretty-print.h: Likewise.
      	* tree-profile.c: Likewise.
      	* tree-scalar-evolution.c: Likewise.
      	* tree-sra.c: Likewise.
      	* tree-ssa-address.c: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-coalesce.c: Likewise.
      	* tree-ssa-copy.c: Likewise.
      	* tree-ssa-copyrename.c: Likewise.
      	* tree-ssa-dce.c: Likewise.
      	* tree-ssa-dom.c: Likewise.
      	* tree-ssa-dse.c: Likewise.
      	* tree-ssa-forwprop.c: Likewise.
      	* tree-ssa-ifcombine.c: Likewise.
      	* tree-ssa-live.c: Likewise.
      	* tree-ssa-loop-ch.c: Likewise.
      	* tree-ssa-loop-im.c: Likewise.
      	* tree-ssa-loop-ivcanon.c: Likewise.
      	* tree-ssa-loop-ivopts.c: Likewise.
      	* tree-ssa-loop-manip.c: Likewise.
      	* tree-ssa-loop-niter.c: Likewise.
      	* tree-ssa-loop-prefetch.c: Likewise.
      	* tree-ssa-loop-unswitch.c: Likewise.
      	* tree-ssa-loop.c: Likewise.
      	* tree-ssa-loop.h: Likewise.
      	* tree-ssa-math-opts.c: Likewise.
      	* tree-ssa-operands.c: Likewise.
      	* tree-ssa-phiopt.c: Likewise.
      	* tree-ssa-phiprop.c: Likewise.
      	* tree-ssa-pre.c: Likewise.
      	* tree-ssa-propagate.c: Likewise.
      	* tree-ssa-reassoc.c: Likewise.
      	* tree-ssa-sccvn.c: Likewise.
      	* tree-ssa-scopedtables.c: Likewise.
      	* tree-ssa-sink.c: Likewise.
      	* tree-ssa-strlen.c: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-ssa-tail-merge.c: Likewise.
      	* tree-ssa-ter.c: Likewise.
      	* tree-ssa-threadedge.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa-uncprop.c: Likewise.
      	* tree-ssa-uninit.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-ssanames.c: Likewise.
      	* tree-stdarg.c: Likewise.
      	* tree-streamer-in.c: Likewise.
      	* tree-streamer-out.c: Likewise.
      	* tree-streamer.c: Likewise.
      	* tree-switch-conversion.c: Likewise.
      	* tree-tailcall.c: Likewise.
      	* tree-vect-data-refs.c: Likewise.
      	* tree-vect-generic.c: Likewise.
      	* tree-vect-loop-manip.c: Likewise.
      	* tree-vect-loop.c: Likewise.
      	* tree-vect-patterns.c: Likewise.
      	* tree-vect-slp.c: Likewise.
      	* tree-vect-stmts.c: Likewise.
      	* tree-vectorizer.c: Likewise.
      	* tree-vrp.c: Likewise.
      	* tree.c: Likewise.
      	* tsan.c: Likewise.
      	* ubsan.c: Likewise.
      	* valtrack.c: Likewise.
      	* value-prof.c: Likewise.
      	* var-tracking.c: Likewise.
      	* varasm.c: Likewise.
      	* varpool.c: Likewise.
      	* vmsdbgout.c: Likewise.
      	* vtable-verify.c: Likewise.
      	* web.c: Likewise.
      	* wide-int-print.cc: Likewise.
      	* wide-int-print.h: Likewise.
      	* wide-int.cc: Likewise.
      	* xcoffout.c: Likewise.
      	* config/aarch64/aarch64-builtins.c: Likewise.
      	* config/aarch64/aarch64.c: Likewise.
      	* config/aarch64/cortex-a57-fma-steering.c: Likewise.
      	* config/alpha/alpha.c: Likewise.
      	* config/arc/arc.c: Likewise.
      	* config/arm/aarch-common.c: Likewise.
      	* config/arm/arm-builtins.c: Likewise.
      	* config/arm/arm-c.c: Likewise.
      	* config/arm/arm.c: Likewise.
      	* config/avr/avr-c.c: Likewise.
      	* config/avr/avr-log.c: Likewise.
      	* config/avr/avr.c: Likewise.
      	* config/bfin/bfin.c: Likewise.
      	* config/c6x/c6x.c: Likewise.
      	* config/cr16/cr16.c: Likewise.
      	* config/cris/cris.c: Likewise.
      	* config/darwin-c.c: Likewise.
      	* config/darwin.c: Likewise.
      	* config/default-c.c: Likewise.
      	* config/epiphany/epiphany.c: Likewise.
      	* config/epiphany/mode-switch-use.c: Likewise.
      	* config/epiphany/resolve-sw-modes.c: Likewise.
      	* config/fr30/fr30.c: Likewise.
      	* config/frv/frv.c: Likewise.
      	* config/ft32/ft32.c: Likewise.
      	* config/glibc-c.c: Likewise.
      	* config/h8300/h8300.c: Likewise.
      	* config/i386/i386-c.c: Likewise.
      	* config/i386/i386.c: Likewise.
      	* config/i386/msformat-c.c: Likewise.
      	* config/i386/winnt-cxx.c: Likewise.
      	* config/i386/winnt-stubs.c: Likewise.
      	* config/i386/winnt.c: Likewise.
      	* config/ia64/ia64-c.c: Likewise.
      	* config/ia64/ia64.c: Likewise.
      	* config/iq2000/iq2000.c: Likewise.
      	* config/lm32/lm32.c: Likewise.
      	* config/m32c/m32c-pragma.c: Likewise.
      	* config/m32c/m32c.c: Likewise.
      	* config/m32r/m32r.c: Likewise.
      	* config/m68k/m68k.c: Likewise.
      	* config/mcore/mcore.c: Likewise.
      	* config/mep/mep-pragma.c: Likewise.
      	* config/mep/mep.c: Likewise.
      	* config/microblaze/microblaze-c.c: Likewise.
      	* config/microblaze/microblaze.c: Likewise.
      	* config/mips/mips.c: Likewise.
      	* config/mmix/mmix.c: Likewise.
      	* config/mn10300/mn10300.c: Likewise.
      	* config/moxie/moxie.c: Likewise.
      	* config/msp430/msp430-c.c: Likewise.
      	* config/msp430/msp430.c: Likewise.
      	* config/nds32/nds32-cost.c: Likewise.
      	* config/nds32/nds32-fp-as-gp.c: Likewise.
      	* config/nds32/nds32-intrinsic.c: Likewise.
      	* config/nds32/nds32-isr.c: Likewise.
      	* config/nds32/nds32-md-auxiliary.c: Likewise.
      	* config/nds32/nds32-memory-manipulation.c: Likewise.
      	* config/nds32/nds32-pipelines-auxiliary.c: Likewise.
      	* config/nds32/nds32-predicates.c: Likewise.
      	* config/nds32/nds32.c: Likewise.
      	* config/nios2/nios2.c: Likewise.
      	* config/nvptx/nvptx.c: Likewise.
      	* config/pa/pa.c: Likewise.
      	* config/pdp11/pdp11.c: Likewise.
      	* config/rl78/rl78-c.c: Likewise.
      	* config/rl78/rl78.c: Likewise.
      	* config/rs6000/rs6000-c.c: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/rx/rx.c: Likewise.
      	* config/s390/s390-c.c: Likewise.
      	* config/s390/s390.c: Likewise.
      	* config/sh/sh-c.c: Likewise.
      	* config/sh/sh-mem.cc: Likewise.
      	* config/sh/sh.c: Likewise.
      	* config/sh/sh_optimize_sett_clrt.cc: Likewise.
      	* config/sh/sh_treg_combine.cc: Likewise.
      	* config/sol2-c.c: Likewise.
      	* config/sol2-cxx.c: Likewise.
      	* config/sol2-stubs.c: Likewise.
      	* config/sol2.c: Likewise.
      	* config/sparc/sparc-c.c: Likewise.
      	* config/sparc/sparc.c: Likewise.
      	* config/spu/spu-c.c: Likewise.
      	* config/spu/spu.c: Likewise.
      	* config/stormy16/stormy16.c: Likewise.
      	* config/tilegx/mul-tables.c: Likewise.
      	* config/tilegx/tilegx-c.c: Likewise.
      	* config/tilegx/tilegx.c: Likewise.
      	* config/tilepro/mul-tables.c: Likewise.
      	* config/tilepro/tilepro-c.c: Likewise.
      	* config/tilepro/tilepro.c: Likewise.
      	* config/v850/v850-c.c: Likewise.
      	* config/v850/v850.c: Likewise.
      	* config/vax/vax.c: Likewise.
      	* config/visium/visium.c: Likewise.
      	* config/vms/vms-c.c: Likewise.
      	* config/vms/vms.c: Likewise.
      	* config/vxworks.c: Likewise.
      	* config/winnt-c.c: Likewise.
      	* config/xtensa/xtensa.c: Likewise.
      	* common/config/bfin/bfin-common.c: Likewise.
      ada
      2015-06-04  Andrew MacLeod  <amacleod@redhat.com>
      
      	* gcc-interface/cuintp.c: Adjust includes for restructured coretypes.h.
      	* gcc-interface/decl.c: Likewise.
      	* gcc-interface/misc.c: Likewise.
      	* gcc-interface/targtyps.c: Likewise.
      	* gcc-interface/trans.c: Likewise.
      	* gcc-interface/utils.c: Likewise.
      	* gcc-interface/utils2.c: Likewise.
      
      
      c
      2015-06-04  Andrew MacLeod  <amacleod@redhat.com>
      
      	* c-array-notation.c: Adjust includes for restructured coretypes.h.
      	* c-aux-info.c: Likewise.
      	* c-convert.c: Likewise.
      	* c-decl.c: Likewise.
      	* c-errors.c: Likewise.
      	* c-lang.c: Likewise.
      	* c-objc-common.c: Likewise.
      	* c-parser.c: Likewise.
      	* c-typeck.c: Likewise.
      
      
      c-family
      2015-06-04  Andrew MacLeod  <amacleod@redhat.com>
      
      	* array-notation-common.c: Adjust includes for restructured coretypes.h.
      	* c-ada-spec.c: Likewise.
      	* c-cilkplus.c: Likewise.
      	* c-common.c: Likewise.
      	* c-common.h: Likewise.
      	* c-cppbuiltin.c: Likewise.
      	* c-dump.c: Likewise.
      	* c-format.c: Likewise.
      	* c-gimplify.c: Likewise.
      	* c-indentation.c: Likewise.
      	* c-lex.c: Likewise.
      	* c-omp.c: Likewise.
      	* c-opts.c: Likewise.
      	* c-pch.c: Likewise.
      	* c-ppoutput.c: Likewise.
      	* c-pragma.c: Likewise.
      	* c-pretty-print.c: Likewise.
      	* c-semantics.c: Likewise.
      	* c-ubsan.c: Likewise.
      	* cilk.c: Likewise.
      	* stub-objc.c: Likewise.
      
      
      cp
      2015-06-04  Andrew MacLeod  <amacleod@redhat.com>
      
      	* call.c: Adjust includes for restructured coretypes.h.
      	* class.c: Likewise.
      	* constexpr.c: Likewise.
      	* cp-array-notation.c: Likewise.
      	* cp-gimplify.c: Likewise.
      	* cp-lang.c: Likewise.
      	* cp-objcp-common.c: Likewise.
      	* cp-tree.h: Likewise.
      	* cp-ubsan.c: Likewise.
      	* cvt.c: Likewise.
      	* decl.c: Likewise.
      	* decl2.c: Likewise.
      	* dump.c: Likewise.
      	* error.c: Likewise.
      	* except.c: Likewise.
      	* expr.c: Likewise.
      	* friend.c: Likewise.
      	* init.c: Likewise.
      	* lambda.c: Likewise.
      	* lex.c: Likewise.
      	* mangle.c: Likewise.
      	* method.c: Likewise.
      	* name-lookup.c: Likewise.
      	* optimize.c: Likewise.
      	* parser.c: Likewise.
      	* pt.c: Likewise.
      	* ptree.c: Likewise.
      	* repo.c: Likewise.
      	* rtti.c: Likewise.
      	* search.c: Likewise.
      	* semantics.c: Likewise.
      	* tree.c: Likewise.
      	* typeck.c: Likewise.
      	* typeck2.c: Likewise.
      	* vtable-class-hierarchy.c: Likewise.
      
      
      fortran
      2015-06-04  Andrew MacLeod  <amacleod@redhat.com>
      
      	* convert.c: Adjust includes for restructured coretypes.h.
      	* cpp.c: Likewise.
      	* decl.c: Likewise.
      	* f95-lang.c: Likewise.
      	* iresolve.c: Likewise.
      	* match.c: Likewise.
      	* module.c: Likewise.
      	* options.c: Likewise.
      	* target-memory.c: Likewise.
      	* trans-array.c: Likewise.
      	* trans-common.c: Likewise.
      	* trans-const.c: Likewise.
      	* trans-decl.c: Likewise.
      	* trans-expr.c: Likewise.
      	* trans-intrinsic.c: Likewise.
      	* trans-io.c: Likewise.
      	* trans-openmp.c: Likewise.
      	* trans-stmt.c: Likewise.
      	* trans-types.c: Likewise.
      	* trans.c: Likewise.
      
      
      go
      2015-06-04  Andrew MacLeod  <amacleod@redhat.com>
      
      	* go-backend.c: Adjust includes for restructured coretypes.h.
      	* go-c.h: Likewise.
      	* go-gcc.cc: Likewise.
      	* go-lang.c: Likewise.
      
      
      java
      2015-06-04  Andrew MacLeod  <amacleod@redhat.com>
      
      	* boehm.c: Adjust includes for restructured coretypes.h.
      	* builtins.c: Likewise.
      	* class.c: Likewise.
      	* constants.c: Likewise.
      	* decl.c: Likewise.
      	* except.c: Likewise.
      	* expr.c: Likewise.
      	* java-gimplify.c: Likewise.
      	* jcf-dump.c: Likewise.
      	* jcf-io.c: Likewise.
      	* jcf-parse.c: Likewise.
      	* jvgenmain.c: Likewise.
      	* lang.c: Likewise.
      	* mangle.c: Likewise.
      	* mangle_name.c: Likewise.
      	* resource.c: Likewise.
      	* typeck.c: Likewise.
      	* verify-glue.c: Likewise.
      	* verify-impl.c: Likewise.
      
      
      jit
      2015-06-04  Andrew MacLeod  <amacleod@redhat.com>
      
      	* dummy-frontend.c: Adjust includes for restructured coretypes.h.
      	* jit-common.h: Likewise.
      	* jit-playback.c: Likewise.
      
      
      lto
      2015-06-04  Andrew MacLeod  <amacleod@redhat.com>
      
      	* lto-lang.c: Adjust includes for restructured coretypes.h.
      	* lto-object.c: Likewise.
      	* lto-partition.c: Likewise.
      	* lto-symtab.c: Likewise.
      	* lto.c: Likewise.
      
      
      objc
      2015-06-04  Andrew MacLeod  <amacleod@redhat.com>
      
      	* objc-act.c: Adjust includes for restructured coretypes.h.
      	* objc-encoding.c: Likewise.
      	* objc-gnu-runtime-abi-01.c: Likewise.
      	* objc-lang.c: Likewise.
      	* objc-map.c: Likewise.
      	* objc-next-runtime-abi-01.c: Likewise.
      	* objc-next-runtime-abi-02.c: Likewise.
      	* objc-runtime-shared-support.c: Likewise.
      
      
      objcp
      2015-06-04  Andrew MacLeod  <amacleod@redhat.com>
      
      	* objcp-decl.c: Adjust includes for restructured coretypes.h.
      	* objcp-lang.c: Likewise.
      
      From-SVN: r224136
      Andrew MacLeod committed
  9. 26 Feb, 2015 1 commit
    • passes.c (ipa_write_summaries_1): Call lto_output_init_mode_table. · db847fa8
      	* passes.c (ipa_write_summaries_1): Call lto_output_init_mode_table.
      	(ipa_write_optimization_summaries): Likewise.
      	* tree-streamer.h: Include data-streamer.h.
      	(streamer_mode_table): Declare extern variable.
      	(bp_pack_machine_mode, bp_unpack_machine_mode): New inline functions.
      	* lto-streamer-out.c (lto_output_init_mode_table,
      	lto_write_mode_table): New functions.
      	(produce_asm_for_decls): Call lto_write_mode_table when streaming
      	offloading LTO.
      	* lto-section-in.c (lto_section_name): Add "mode_table" entry.
      	(lto_create_simple_input_block): Add mode_table argument to the
      	lto_input_block constructors.
      	* ipa-prop.c (ipa_prop_read_section, read_replacements_section):
      	Likewise.
      	* data-streamer-in.c (string_for_index): Likewise.
      	* ipa-inline-analysis.c (inline_read_section): Likewise.
      	* ipa-icf.c (sem_item_optimizer::read_section): Likewise.
      	* lto-cgraph.c (input_cgraph_opt_section): Likewise.
      	* lto-streamer-in.c (lto_read_body_or_constructor,
      	lto_input_toplevel_asms): Likewise.
      	(lto_input_mode_table): New function.
      	* tree-streamer-out.c (pack_ts_fixed_cst_value_fields,
      	pack_ts_decl_common_value_fields, pack_ts_type_common_value_fields):
      	Use bp_pack_machine_mode.
      	* real.h (struct real_format): Add name field.
      	* lto-streamer.h (enum lto_section_type): Add LTO_section_mode_table.
      	(class lto_input_block): Add mode_table member.
      	(lto_input_block::lto_input_block): Add mode_table_ argument,
      	initialize mode_table.
      	(struct lto_file_decl_data): Add mode_table field.
      	(lto_input_mode_table, lto_output_init_mode_table): New prototypes.
      	* tree-streamer-in.c (unpack_ts_fixed_cst_value_fields,
      	unpack_ts_decl_common_value_fields,
      	unpack_ts_type_common_value_fields): Call bp_unpack_machine_mode.
      	* tree-streamer.c (streamer_mode_table): New variable.
      	* real.c (ieee_single_format, mips_single_format,
      	motorola_single_format, spu_single_format, ieee_double_format,
      	mips_double_format, motorola_double_format,
      	ieee_extended_motorola_format, ieee_extended_intel_96_format,
      	ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
      	ibm_extended_format, mips_extended_format, ieee_quad_format,
      	mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
      	decimal_single_format, decimal_double_format, decimal_quad_format,
      	ieee_half_format, arm_half_format, real_internal_format): Add name
      	field.
      	* config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
      lto/
      	* lto.c (lto_mode_identity_table): New variable.
      	(lto_read_decls): Add mode_table argument to the lto_input_block
      	constructor.
      	(lto_file_finalize): Initialize mode_table.
      	(lto_init): Initialize lto_mode_identity_table.
      
      From-SVN: r221005
      Jakub Jelinek committed
  10. 05 Jan, 2015 1 commit
  11. 12 Dec, 2014 1 commit
    • real.h (HONOR_SNANS, [...]): Replace macros with 3 overloaded declarations. · 3d3dbadd
      2014-12-12  Marc Glisse  <marc.glisse@inria.fr>
      
      	* real.h (HONOR_SNANS, HONOR_INFINITIES, HONOR_SIGNED_ZEROS,
      	HONOR_SIGN_DEPENDENT_ROUNDING): Replace macros with 3 overloaded
      	declarations.
      	* real.c (HONOR_NANS): Fix indentation.
      	(HONOR_SNANS, HONOR_INFINITIES, HONOR_SIGNED_ZEROS,
      	HONOR_SIGN_DEPENDENT_ROUNDING): Define three overloads.
      	* builtins.c (fold_builtin_cproj, fold_builtin_signbit,
      	fold_builtin_fmin_fmax, fold_builtin_classify): Simplify argument
      	of HONOR_*.
      	* fold-const.c (operand_equal_p, fold_comparison, fold_binary_loc):
      	Likewise.
      	* gimple-fold.c (gimple_val_nonnegative_real_p): Likewise.
      	* ifcvt.c (noce_try_move, noce_try_minmax, noce_try_abs): Likewise.
      	* omp-low.c (omp_reduction_init): Likewise.
      	* rtlanal.c (may_trap_p_1): Likewise.
      	* simplify-rtx.c (simplify_const_relational_operation): Likewise.
      	* tree-ssa-dom.c (record_equality, record_edge_info): Likewise.
      	* tree-ssa-phiopt.c (value_replacement, abs_replacement): Likewise.
      	* tree-ssa-reassoc.c (eliminate_using_constants): Likewise.
      	* tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise.
      
      From-SVN: r218663
      Marc Glisse committed
  12. 10 Dec, 2014 1 commit
    • real.h (HONOR_NANS): Replace macro with 3 overloaded declarations. · 1b457aa4
      2014-12-10  Marc Glisse  <marc.glisse@inria.fr>
      
      	* real.h (HONOR_NANS): Replace macro with 3 overloaded declarations.
      	* real.c: Include rtl.h and options.h.
      	(HONOR_NANS): Define three overloads.
      	* builtins.c (fold_builtin_classify, fold_builtin_unordered_cmp):
      	Simplify argument of HONOR_NANS.
      	* fold-const.c (combine_comparisons, fold_truth_not_expr,
      	fold_cond_expr_with_comparison, merge_truthop_with_opposite_arm,
      	fold_comparison, fold_binary_loc): Likewise.
      	* ifcvt.c (noce_try_move, noce_try_minmax): Likewise.
      	* ipa-inline-analysis.c (add_clause,
      	set_cond_stmt_execution_predicate): Likewise.
      	* match.pd: Likewise.
      	* rtlanal.c (may_trap_p_1): Likewise.
      	* simplify-rtx.c (simplify_const_relational_operation): Likewise.
      	* tree-if-conv.c (parse_predicate): Likewise.
      	* tree-ssa-ccp.c (valid_lattice_transition): Likewise.
      	* tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
      	* tree-ssa-phiopt.c (minmax_replacement, neg_replacement): Likewise.
      	* tree-ssa-reassoc.c (eliminate_using_constants): Likewise.
      	* tree-ssa-tail-merge.c (gimple_equal_p): Likewise.
      
      From-SVN: r218605
      Marc Glisse committed
  13. 29 Oct, 2014 1 commit
    • decl.c, [...]: Remove redundant enum from machine_mode. · ef4bddc2
      gcc/ada/
      	* gcc-interface/decl.c, gcc-interface/gigi.h, gcc-interface/misc.c,
      	gcc-interface/trans.c, gcc-interface/utils.c, gcc-interface/utils2.c:
      	Remove redundant enum from machine_mode.
      
      gcc/c-family/
      	* c-common.c, c-common.h, c-cppbuiltin.c, c-lex.c: Remove redundant
      	enum from machine_mode.
      
      gcc/c/
      	* c-decl.c, c-tree.h, c-typeck.c: Remove redundant enum from
      	machine_mode.
      
      gcc/cp/
      	* constexpr.c: Remove redundant enum from machine_mode.
      
      gcc/fortran/
      	* trans-types.c, trans-types.h: Remove redundant enum from
      	machine_mode.
      
      gcc/go/
      	* go-lang.c: Remove redundant enum from machine_mode.
      
      gcc/java/
      	* builtins.c, java-tree.h, typeck.c: Remove redundant enum from
      	machine_mode.
      
      gcc/lto/
      	* lto-lang.c: Remove redundant enum from machine_mode.
      
      gcc/
      	* addresses.h, alias.c, asan.c, auto-inc-dec.c, bt-load.c, builtins.c,
      	builtins.h, caller-save.c, calls.c, calls.h, cfgexpand.c, cfgloop.h,
      	cfgrtl.c, combine.c, compare-elim.c, config/aarch64/aarch64-builtins.c,
      	config/aarch64/aarch64-protos.h, config/aarch64/aarch64-simd.md,
      	config/aarch64/aarch64.c, config/aarch64/aarch64.h,
      	config/aarch64/aarch64.md, config/alpha/alpha-protos.h,
      	config/alpha/alpha.c, config/arc/arc-protos.h, config/arc/arc.c,
      	config/arc/arc.h, config/arc/predicates.md,
      	config/arm/aarch-common-protos.h, config/arm/aarch-common.c,
      	config/arm/arm-protos.h, config/arm/arm.c, config/arm/arm.h,
      	config/arm/arm.md, config/arm/neon.md, config/arm/thumb2.md,
      	config/avr/avr-log.c, config/avr/avr-protos.h, config/avr/avr.c,
      	config/avr/avr.md, config/bfin/bfin-protos.h, config/bfin/bfin.c,
      	config/c6x/c6x-protos.h, config/c6x/c6x.c, config/c6x/c6x.md,
      	config/cr16/cr16-protos.h, config/cr16/cr16.c,
      	config/cris/cris-protos.h, config/cris/cris.c, config/cris/cris.md,
      	config/darwin-protos.h, config/darwin.c,
      	config/epiphany/epiphany-protos.h, config/epiphany/epiphany.c,
      	config/epiphany/epiphany.md, config/fr30/fr30.c,
      	config/frv/frv-protos.h, config/frv/frv.c, config/frv/predicates.md,
      	config/h8300/h8300-protos.h, config/h8300/h8300.c,
      	config/i386/i386-builtin-types.awk, config/i386/i386-protos.h,
      	config/i386/i386.c, config/i386/i386.md, config/i386/predicates.md,
      	config/i386/sse.md, config/i386/sync.md, config/ia64/ia64-protos.h,
      	config/ia64/ia64.c, config/iq2000/iq2000-protos.h,
      	config/iq2000/iq2000.c, config/iq2000/iq2000.md,
      	config/lm32/lm32-protos.h, config/lm32/lm32.c,
      	config/m32c/m32c-protos.h, config/m32c/m32c.c,
      	config/m32r/m32r-protos.h, config/m32r/m32r.c,
      	config/m68k/m68k-protos.h, config/m68k/m68k.c,
      	config/mcore/mcore-protos.h, config/mcore/mcore.c,
      	config/mcore/mcore.md, config/mep/mep-protos.h, config/mep/mep.c,
      	config/microblaze/microblaze-protos.h, config/microblaze/microblaze.c,
      	config/mips/mips-protos.h, config/mips/mips.c,
      	config/mmix/mmix-protos.h, config/mmix/mmix.c,
      	config/mn10300/mn10300-protos.h, config/mn10300/mn10300.c,
      	config/moxie/moxie.c, config/msp430/msp430-protos.h,
      	config/msp430/msp430.c, config/nds32/nds32-cost.c,
      	config/nds32/nds32-intrinsic.c, config/nds32/nds32-md-auxiliary.c,
      	config/nds32/nds32-protos.h, config/nds32/nds32.c,
      	config/nios2/nios2-protos.h, config/nios2/nios2.c,
      	config/pa/pa-protos.h, config/pa/pa.c, config/pdp11/pdp11-protos.h,
      	config/pdp11/pdp11.c, config/rl78/rl78-protos.h, config/rl78/rl78.c,
      	config/rs6000/altivec.md, config/rs6000/rs6000-c.c,
      	config/rs6000/rs6000-protos.h, config/rs6000/rs6000.c,
      	config/rs6000/rs6000.h, config/rx/rx-protos.h, config/rx/rx.c,
      	config/s390/predicates.md, config/s390/s390-protos.h,
      	config/s390/s390.c, config/s390/s390.h, config/s390/s390.md,
      	config/sh/predicates.md, config/sh/sh-protos.h, config/sh/sh.c,
      	config/sh/sh.md, config/sparc/predicates.md,
      	config/sparc/sparc-protos.h, config/sparc/sparc.c,
      	config/sparc/sparc.md, config/spu/spu-protos.h, config/spu/spu.c,
      	config/stormy16/stormy16-protos.h, config/stormy16/stormy16.c,
      	config/tilegx/tilegx-protos.h, config/tilegx/tilegx.c,
      	config/tilegx/tilegx.md, config/tilepro/tilepro-protos.h,
      	config/tilepro/tilepro.c, config/v850/v850-protos.h,
      	config/v850/v850.c, config/v850/v850.md, config/vax/vax-protos.h,
      	config/vax/vax.c, config/vms/vms-c.c, config/xtensa/xtensa-protos.h,
      	config/xtensa/xtensa.c, coverage.c, cprop.c, cse.c, cselib.c, cselib.h,
      	dbxout.c, ddg.c, df-problems.c, dfp.c, dfp.h, doc/md.texi,
      	doc/rtl.texi, doc/tm.texi, doc/tm.texi.in, dojump.c, dse.c,
      	dwarf2cfi.c, dwarf2out.c, dwarf2out.h, emit-rtl.c, emit-rtl.h,
      	except.c, explow.c, expmed.c, expmed.h, expr.c, expr.h, final.c,
      	fixed-value.c, fixed-value.h, fold-const.c, function.c, function.h,
      	fwprop.c, gcse.c, gengenrtl.c, genmodes.c, genopinit.c, genoutput.c,
      	genpreds.c, genrecog.c, gensupport.c, gimple-ssa-strength-reduction.c,
      	graphite-clast-to-gimple.c, haifa-sched.c, hooks.c, hooks.h, ifcvt.c,
      	internal-fn.c, ira-build.c, ira-color.c, ira-conflicts.c, ira-costs.c,
      	ira-emit.c, ira-int.h, ira-lives.c, ira.c, ira.h, jump.c, langhooks.h,
      	libfuncs.h, lists.c, loop-doloop.c, loop-invariant.c, loop-iv.c,
      	loop-unroll.c, lower-subreg.c, lower-subreg.h, lra-assigns.c,
      	lra-constraints.c, lra-eliminations.c, lra-int.h, lra-lives.c,
      	lra-spills.c, lra.c, lra.h, machmode.h, omp-low.c, optabs.c, optabs.h,
      	output.h, postreload.c, print-tree.c, read-rtl.c, real.c, real.h,
      	recog.c, recog.h, ree.c, reg-stack.c, regcprop.c, reginfo.c,
      	regrename.c, regs.h, reload.c, reload.h, reload1.c, rtl.c, rtl.h,
      	rtlanal.c, rtlhash.c, rtlhooks-def.h, rtlhooks.c, sched-deps.c,
      	sel-sched-dump.c, sel-sched-ir.c, sel-sched-ir.h, sel-sched.c,
      	simplify-rtx.c, stmt.c, stor-layout.c, stor-layout.h, target.def,
      	targhooks.c, targhooks.h, tree-affine.c, tree-call-cdce.c,
      	tree-complex.c, tree-data-ref.c, tree-dfa.c, tree-if-conv.c,
      	tree-inline.c, tree-outof-ssa.c, tree-scalar-evolution.c,
      	tree-ssa-address.c, tree-ssa-ccp.c, tree-ssa-loop-ivopts.c,
      	tree-ssa-loop-ivopts.h, tree-ssa-loop-manip.c,
      	tree-ssa-loop-prefetch.c, tree-ssa-math-opts.c, tree-ssa-reassoc.c,
      	tree-ssa-sccvn.c, tree-streamer-in.c, tree-switch-conversion.c,
      	tree-vect-data-refs.c, tree-vect-generic.c, tree-vect-loop.c,
      	tree-vect-patterns.c, tree-vect-slp.c, tree-vect-stmts.c,
      	tree-vrp.c, tree.c, tree.h, tsan.c, ubsan.c, valtrack.c,
      	var-tracking.c, varasm.c: Remove redundant enum from
      	machine_mode.
      gcc/
      	* gengtype.c (main): Treat machine_mode as a scalar typedef.
      	* genmodes.c (emit_insn_modes_h): Hide inline functions if
      	USED_FOR_TARGET.
      
      From-SVN: r216834
      Richard Sandiford committed
  14. 06 May, 2014 1 commit
  15. 02 Jan, 2014 1 commit
  16. 21 Nov, 2013 1 commit
  17. 28 Sep, 2013 1 commit
    • alloc-pool.c, [...]: Add missing whitespace before "(". · c3284718
      gcc/
      	* alloc-pool.c, asan.c, auto-inc-dec.c, basic-block.h, bb-reorder.c,
      	bitmap.c, bitmap.h, bt-load.c, builtins.c, calls.c, cfgcleanup.c,
      	cfgexpand.c, cfghooks.c, cfgloop.c, cfgloopmanip.c, cfgrtl.c, cgraph.c,
      	cgraph.h, cgraphbuild.c, cgraphclones.c, cgraphunit.c, collect2.c,
      	combine-stack-adj.c, combine.c, compare-elim.c, context.c, context.h,
      	cprop.c, cse.c, cselib.c, dbxout.c, dce.c, defaults.h, df-core.c,
      	df-problems.c, df-scan.c, df.h, diagnostic.c, double-int.c, dse.c,
      	dumpfile.c, dwarf2asm.c, dwarf2cfi.c, dwarf2out.c, emit-rtl.c,
      	errors.c, except.c, expmed.c, expr.c, file-find.c, final.c,
      	fixed-value.c, fold-const.c, function.c, fwprop.c, gcc-ar.c, gcc.c,
      	gcov-io.c, gcov-io.h, gcov.c, gcse.c, genattr-common.c, genattr.c,
      	genattrtab.c, genautomata.c, genconfig.c, genemit.c, genextract.c,
      	genflags.c, gengenrtl.c, gengtype-state.c, gengtype.c, genmodes.c,
      	genopinit.c, genoutput.c, genpeep.c, genpreds.c, genrecog.c,
      	gensupport.c, ggc-common.c, ggc-page.c, gimple-fold.c, gimple-low.c,
      	gimple-pretty-print.c, gimple-ssa-strength-reduction.c, gimple.c,
      	gimple.h, godump.c, graphite-clast-to-gimple.c,
      	graphite-optimize-isl.c, graphite-poly.h, graphite-sese-to-poly.c,
      	graphite.c, haifa-sched.c, hash-table.c, hash-table.h, hwint.c,
      	hwint.h, ifcvt.c, incpath.c, init-regs.c, input.h, intl.c, intl.h,
      	ipa-cp.c, ipa-devirt.c, ipa-inline-analysis.c, ipa-inline.c,
      	ipa-profile.c, ipa-pure-const.c, ipa-reference.c, ipa-split.c,
      	ipa-utils.c, ipa.c, ira-build.c, ira.c, jump.c, loop-doloop.c,
      	loop-init.c, loop-invariant.c, loop-iv.c, lower-subreg.c, lto-cgraph.c,
      	lto-streamer-in.c, lto-streamer-out.c, lto-wrapper.c, mcf.c,
      	mode-switching.c, modulo-sched.c, omp-low.c, optabs.c, opts.c,
      	pass_manager.h, passes.c, plugin.c, postreload-gcse.c, postreload.c,
      	predict.c, prefix.c, pretty-print.c, print-rtl.c, print-tree.c,
      	profile.c, read-md.c, real.c, real.h, recog.c, ree.c, reg-stack.c,
      	regcprop.c, reginfo.c, regmove.c, regrename.c, regs.h, regstat.c,
      	reload1.c, reorg.c, rtl.c, rtl.h, rtlanal.c, sbitmap.c, sched-rgn.c,
      	sdbout.c, sel-sched-ir.c, sel-sched.c, sparseset.c, stack-ptr-mod.c,
      	statistics.c, stmt.c, stor-layout.c, store-motion.c, streamer-hooks.h,
      	system.h, target-hooks-macros.h, targhooks.c, targhooks.h, toplev.c,
      	tracer.c, trans-mem.c, tree-browser.c, tree-call-cdce.c, tree-cfg.c,
      	tree-cfgcleanup.c, tree-complex.c, tree-data-ref.c, tree-data-ref.h,
      	tree-eh.c, tree-emutls.c, tree-flow.h, tree-if-conv.c, tree-into-ssa.c,
      	tree-iterator.c, tree-loop-distribution.c, tree-mudflap.c,
      	tree-nested.c, tree-nomudflap.c, tree-nrv.c, tree-object-size.c,
      	tree-optimize.c, tree-pass.h, tree-pretty-print.c, tree-profile.c,
      	tree-scalar-evolution.c, tree-sra.c, tree-ssa-ccp.c,
      	tree-ssa-coalesce.c, tree-ssa-copy.c, tree-ssa-copyrename.c,
      	tree-ssa-dce.c, tree-ssa-dom.c, tree-ssa-dse.c, tree-ssa-forwprop.c,
      	tree-ssa-ifcombine.c, tree-ssa-live.c, tree-ssa-loop-ch.c,
      	tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c, tree-ssa-loop-prefetch.c,
      	tree-ssa-loop.c, tree-ssa-math-opts.c, tree-ssa-operands.c,
      	tree-ssa-phiopt.c, tree-ssa-phiprop.c, tree-ssa-pre.c,
      	tree-ssa-reassoc.c, tree-ssa-sink.c, tree-ssa-strlen.c,
      	tree-ssa-structalias.c, tree-ssa-threadedge.c, tree-ssa-threadupdate.c,
      	tree-ssa-uncprop.c, tree-ssa-uninit.c, tree-ssa.c, tree-ssanames.c,
      	tree-stdarg.c, tree-switch-conversion.c, tree-tailcall.c,
      	tree-vect-data-refs.c, tree-vect-generic.c, tree-vect-loop-manip.c,
      	tree-vect-stmts.c, tree-vectorizer.c, tree-vectorizer.h, tree-vrp.c,
      	tree.c, tree.h, tsan.c, tsystem.h, value-prof.c, var-tracking.c,
      	varasm.c, vec.h, vmsdbgout.c, vtable-verify.c, web.c: Add missing
      	whitespace before "(".
      
      From-SVN: r203004
      Richard Sandiford committed
  18. 10 Jan, 2013 1 commit
  19. 21 May, 2010 1 commit
    • real: Do not include gmp.h, mpfr.h, and mpc.h. · d49b6e1e
      gcc/ChangeLog:
      	* real: Do not include gmp.h, mpfr.h, and mpc.h.
      	(REAL_VALUE_NEGATE, REAL_VALUE_ABS, real_arithmetic2): Remove.
      	(real_value_negate, real_value_abs): New prototypes.
      	(do_mpc_arg2, real_from_mpfr, mpfr_from_real): Move from here...
      	* realmpfr.h (do_mpc_arg2, real_from_mpfr, mpfr_from_real): ...to here,
      	new include file for interface between MPFR and REAL_VALUE_TYPE.
      	* real.c: Include realmpfr.h.
      	(real_arithmetic2): Remove legacy function.
      	(real_value_negate): New.
      	(real_value_abs): New.
      	(mfpr_from_real, real_from_mpfr): Move from here...
      	* realmpfr.c (mpfr_from_real, real_from_mpfr): ...to here, new file.
      	* builtins.c: Include realmpfr.h.
      	* fold-const.c: Include realmpfr.h.
      	(fold_comparison): Use real_value_negate instead of REAL_VALUE_NEGATE.
      	(fold_negate_const): Likewise.
      	(fold_abs_const): Use real_value_abs instead of REAL_VALUE_ABS.
      	* toplev.c: Include realmpfr.h.
      	* simplify-rtx.c (simplify_const_unary_operation): Use real_value_abs
      	and real_value_negate.
      	* fixed-value.c (check_real_for_fixed_mode): Likewise.
      	* config/arm/arm.c (neg_const_double_rtx_ok_for_fpa): Likewise.
      	(vfp3_const_double_index): Likewise.
      	(arm_print_operand): Likewise.
      	* Makefile.in: Update dependencies.
      
      fortran/ChangeLog:
      	* trans-const.c: Include realmpfr.h.
      	* Make-lang.in: Update dependencies.
      
      From-SVN: r159679
      Steven Bosscher committed
  20. 05 Jan, 2010 1 commit
    • re PR bootstrap/41771 (Bootstrap with Sun Studio 12.1 fails) · 6a4d4e8a
      	gcc:
      	PR bootstrap/41771
      	* flags.h: Don't include real.h.
      	(HONOR_NANS, HONOR_SNANS, HONOR_INFINITIES, HONOR_SIGNED_ZEROS,
      	HONOR_SIGN_DEPENDENT_ROUNDING): Move ...
      	* real.h (HONOR_NANS, HONOR_SNANS, HONOR_INFINITIES,
      	HONOR_SIGNED_ZEROS, HONOR_SIGN_DEPENDENT_ROUNDING): ... here.
      	* dominance.c: Update copyright.
      	* gimple.c (walk_gimple_op): Remove inline.
      	* tree-ssa-reassoc.c: Include real.h.
      	* Makefile.in (FLAGS_H): Remove $(REAL_H).
      	(tree-ssa-reassoc.o): Depend on $(REAL_H).
      
      	include:
      	PR bootstrap/41771
      	* ansidecl.h: Fix inline test for C99 and Sun Studio cc.
      
      From-SVN: r155654
      Rainer Orth committed
  21. 07 Dec, 2009 1 commit
  22. 14 Oct, 2009 1 commit
  23. 20 Sep, 2009 1 commit
    • re PR middle-end/30789 (complex folding inexact) · ca75b926
      	PR middle-end/30789
      	* builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
      	(do_mpc_ckconv): Accept FORCE_CONVERT parameter.
      	(fold_builtin_2, do_mpc_arg1): Update accordingly.
      	* fold-const.c (const_binop): Likewise.
      	* real.h (do_mpc_arg2): Update prototype.
      
      testsuite:
      	* gcc.dg/torture/builtin-math-7.c: Update for testing Annex G
      	cases in static initializers.
      
      From-SVN: r151904
      Kaveh R. Ghazi committed
  24. 14 Aug, 2009 1 commit
    • re PR middle-end/30789 (complex folding inexact) · 2f440f6a
      	PR middle-end/30789
      
      	* builtins.c (do_mpc_arg2): Make extern, define for any MPC
      	version.  Move declaration...
      	* real.h (do_mpc_arg2): ... here.
      	* fold-const.c (const_binop): Use MPC for complex MULT_EXPR
      	and RDIV_EXPR.
      
      testsuite:
      	* gcc.dg/torture/builtin-math-7.c: New.
      
      From-SVN: r150760
      Kaveh R. Ghazi committed
  25. 16 Jul, 2009 1 commit
    • builtins.c (do_mpc_arg2): New. · a41d064d
      	* builtins.c (do_mpc_arg2): New.
      	(fold_builtin_2): Fold builtin cpow.
      	* real.h (HAVE_mpc_pow): New.
      
      testsuite:
      	* gcc.dg/torture/builtin-math-5.c: Add more cases.
      	* gcc.dg/torture/builtin-math-6.c: Likewise.  Depend on
      	effective target "mpc_pow".
      	* lib/target-supports.exp (check_effective_target_mpc_pow): New.
      
      From-SVN: r149716
      Kaveh R. Ghazi committed
  26. 15 May, 2009 2 commits
    • builtins.c (do_mpc_arg1, [...]): New. · c128599a
      	* builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
      	(fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
      	Evaluate constant arguments.
      	(fold_builtin_carg): Ensure we get a complex REAL_TYPE.
      	(fold_builtin_1): Likewise, also evaluate constant arguments.
      	Remove superfluous break.
      	(do_mpc_ckconv): New.
      	* real.h: Include mpc.h.
      	* toplev.c (print_version): Output MPC version info if available.
      
      From-SVN: r147591
      Kaveh R. Ghazi committed
    • real.c (encode_ieee_half): Define. · ae63687c
      2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
      
      	gcc/
      	* real.c (encode_ieee_half): Define.
      	(decode_ieee_half): Define.
      	(ieee_half_format): Define.
      	(arm_half_format): Define.
      	* real.h (ieee_half_format): Declare.
      	(arm_half_format): Declare.
      
      From-SVN: r147579
      Sandra Loosemore committed
  27. 22 Apr, 2009 1 commit
    • hashtab.h: Update GTY annotations to new syntax · d1b38208
      2009-04-21  Taras Glek <tglek@mozilla.com>
      
      	* include/hashtab.h: Update GTY annotations to new syntax
      	* include/splay-tree.h: Likewise
      
      
      gcc/ChangeLog
      
      2009-04-21  Taras Glek <tglek@mozilla.com>
      
      	* alias.c: Update GTY annotations to new syntax
      	* basic-block.h: Likewise
      	* bitmap.h: Likewise
      	* c-common.h: Likewise
      	* c-decl.c: Likewise
      	* c-parser.c: Likewise
      	* c-pragma.c: Likewise
      	* c-tree.h: Likewise
      	* cfgloop.h: Likewise
      	* cgraph.h: Likewise
      	* config/alpha/alpha.c: Likewise
      	* config/arm/arm.h: Likewise
      	* config/avr/avr.h: Likewise
      	* config/bfin/bfin.c: Likewise
      	* config/cris/cris.c: Likewise
      	* config/darwin.c: Likewise
      	* config/frv/frv.c: Likewise
      	* config/i386/i386.c: Likewise
      	* config/i386/i386.h: Likewise
      	* config/i386/winnt.c: Likewise
      	* config/ia64/ia64.h: Likewise
      	* config/iq2000/iq2000.c: Likewise
      	* config/mips/mips.c: Likewise
      	* config/mmix/mmix.h: Likewise
      	* config/pa/pa.c: Likewise
      	* config/pa/pa.h: Likewise
      	* config/rs6000/rs6000.c: Likewise
      	* config/s390/s390.c: Likewise
      	* config/sparc/sparc.c: Likewise
      	* config/xtensa/xtensa.c: Likewise
      	* cselib.h: Likewise
      	* dbxout.c: Likewise
      	* dwarf2out.c: Likewise
      	* except.c: Likewise
      	* except.h: Likewise
      	* fixed-value.h: Likewise
      	* function.c: Likewise
      	* function.h: Likewise
      	* gimple.h: Likewise
      	* integrate.c: Likewise
      	* optabs.c: Likewise
      	* output.h: Likewise
      	* real.h: Likewise
      	* rtl.h: Likewise
      	* stringpool.c: Likewise
      	* tree-data-ref.c: Likewise
      	* tree-flow.h: Likewise
      	* tree-scalar-evolution.c: Likewise
      	* tree-ssa-address.c: Likewise
      	* tree-ssa-alias.h: Likewise
      	* tree-ssa-operands.h: Likewise
      	* tree.c: Likewise
      	* tree.h: Likewise
      	* varasm.c: Likewise
      	* varray.h: Likewise
      	* vec.h: Likewise
      	* coretypes.h: Do not define GTY macro if it is already defined
      	* doc/gty.texi: Update GTY documentation to new syntax
      	* gengtype-lex.l: Enforce attribute-like syntax for GTY annotations on structs
      	* gengtype-parse.c: Likewise
      
      
      gcc/ada/ChangeLog
      
      2009-04-21  Taras Glek <tglek@mozilla.com>
      
      	* gcc-interface/ada-tree.h: Update GTY annotations to new syntax
      	* gcc-interface/trans.c: Likewise
      	* gcc-interface/utils.c: Likewise
      
      
      gcc/cp/ChangeLog
      
      2009-04-21  Taras Glek <tglek@mozilla.com>
      
      	* cp-tree.h: Update GTY annotations to new syntax
      	* decl.c: Likewise
      	* mangle.c: Likewise
      	* name-lookup.c: Likewise
      	* name-lookup.h: Likewise
      	* parser.c: Likewise
      	* pt.c: Likewise
      	* rtti.c: Likewise
      	* semantics.c: Likewise
      	* typeck2.c: Likewise
      
      
      gcc/fortran/ChangeLog
      
      2009-04-21  Taras Glek <tglek@mozilla.com>
      
      	* f95-lang.c: Update GTY annotations to new syntax
      	* trans-intrinsic.c: Likewise
      	* trans-io.c: Likewise
      	* trans.h: Likewise
      
      
      gcc/java/ChangeLog
      
      2009-04-21  Taras Glek <tglek@mozilla.com>
      
      	* builtins.c: Update GTY annotations to new syntax
      	* decl.c: Likewise
      	* java-tree.h: Likewise
      	* jcf.h: Likewise
      	* lang.c: Likewise
      
      
      gcc/objc/ChangeLog
      
      2009-04-21  Taras Glek <tglek@mozilla.com>
      
      	* objc-act.c: Update GTY annotations to new syntax
      	* objc-act.h: Likewise
      
      
      libcpp/ChangeLog
      
      2009-04-21  Taras Glek <tglek@mozilla.com>
      
      	* include/cpp-id-data.h: Update GTY annotations to new syntax
      	* include/cpplib.h: Likewise
      	* include/line-map.h: Likewise
      	* include/symtab.h: Likewise
      
      From-SVN: r146607
      Taras Glek committed
  28. 29 Oct, 2008 1 commit
    • re PR middle-end/36578 (cast to long double not taken into account when result stored to a double) · 20ded7a6
      	PR middle-end/36578
      	* convert.c (convert_to_real): Do not optimize conversions of
      	binary arithmetic operations between binary and decimal
      	floating-point types.  Consider mode of target type in determining
      	decimal type for arithmetic.  Unless
      	flag_unsafe_math_optimizations, do not optimize binary conversions
      	where this may change rounding behavior.
      	* real.c (real_can_shorten_arithmetic): New.
      	* real.h (real_can_shorten_arithmetic): Declare.
      
      testsuite:
      	* gcc.dg/dfp/convert-bfp-13.c, gcc.dg/dfp/convert-bfp-14.c,
      	gcc.dg/dfp/convert-dfp-fold-2.c, gcc.target/i386/pr36578-1.c,
      	gcc.target/i386/pr36578-2.c: New tests.
      
      From-SVN: r141432
      Joseph Myers committed
  29. 18 Aug, 2008 1 commit
    • real.h (dconst_e, [...]): Declare. · 9c02cf68
      2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
      
      	* real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
      	dconst_third_ptr, dconst_sqrt2_ptr): Declare.
      	(enum real_value_const): Delete.
      	(get_real_const): Delete.
      	* real.c (get_real_const): Delete.
      	(dconst_e_ptr): Define.
      	(dconst_third_ptr): Define.
      	(dconst_sqrt2_ptr): Define.
      	* builtins.c: Update all callers.
      
      From-SVN: r139202
      Manuel López-Ibáñez committed
  30. 12 Aug, 2008 3 commits
    • real.h (struct real_format): New member has_sign_dependent_rounding. · 4099e2c2
      	* real.h (struct real_format): New member has_sign_dependent_rounding.
      	* real.c (ieee_single_format, mips_single_format, motorola_single_format,
      	spu_single_format, ieee_double_format, mips_double_format,
      	motorola_double_format, ieee_extended_motorola_format,
      	ieee_extended_intel_96_format, ieee_extended_intel_128_format,
      	ieee_extended_intel_96_round_53_format, ibm_extended_format,
      	mips_extended_format, ieee_quad_format, mips_quad_format,
      	vax_f_format, vax_d_format, vax_g_format): Initialize it.
      	* config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
      
      	* defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
      	MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
      	* config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
      	MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
      	(ROUND_TOWARDS_ZERO): Likewise.
      
      	* real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
      	(FLOAT_MODE_FORMAT): New macro.
      	(REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
      	(MODE_COMPOSITE_P): ... this new macro.
      	(MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
      	MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
      	* machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
      
      	* flags.h: Include "real.h".
      
      	* fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
      	REAL_MODE_FORMAT_COMPOSITE_P.
      	* simplify-rtx.c (simplify_const_binary_operation): Likewise.
      
      	* doc/tm.texi (Storage Layout): Remove documentation of
      	MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
      	MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
      	ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
      	they only apply to libgcc2.a.
      
      From-SVN: r139016
      Ulrich Weigand committed
    • real.h (struct real_format): New member round_towards_zero. · 3e479de3
      ChangeLog:
      
      	* real.h (struct real_format): New member round_towards_zero.
      	* real.c (round_for_format): Respect fmt->round_towards_zero.
      	(ieee_single_format, mips_single_format, motorola_single_format,
      	spu_single_format, ieee_double_format, mips_double_format,
      	motorola_double_format, ieee_extended_motorola_format,
      	ieee_extended_intel_96_format, ieee_extended_intel_128_format,
      	ieee_extended_intel_96_round_53_format, ibm_extended_format,
      	mips_extended_format, ieee_quad_format, mips_quad_format,
      	vax_f_format, vax_d_format, vax_g_format): Initialize it.
      	* config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
      
      	* builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
      	real_format to choose rounding mode when calling MPFR functions.
      	(do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
      	(do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
      
      	* real.h (real_to_decimal_for_mode): Add prototype.
      	* real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
      	Respect target rounding mode when generating decimal representation.
      	(real_to_decimal): New stub for backwards compatibility.
      	* c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
      	real_to_decimal_for_mode instead of real_to_decimal.
      
      	* config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
      
      
      testsuite/ChangeLog:
      
      	* gcc.c-torture/execute/20031003-1.c (main): Update test to
      	accommodate SPU single-precision rounding mode.
      	* gcc.c-torture/execute/conversion.c (test_float_to_integer,
      	test_float_to_longlong_integer): Likewise.
      	* gcc.c-torture/execute/ieee/rbug.c (main): Likewise.
      	* gcc.dg/hex-round-1.c: Skip test on SPU.
      	* gcc.dg/hex-round-2.c: Likewise.
      
      Co-Authored-By: Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
      
      From-SVN: r139014
      Ulrich Weigand committed
    • real.c (spu_single_format): New variable. · 88f091f5
      ChangeLog:
      
      	* real.c (spu_single_format): New variable.
      	* real.h (spu_single_format): Declare.
      
      	* config/spu/spu.c (spu_override_options): Install SFmode format.
      	(spu_split_immediate): Use integer mode to operate on pieces of
      	floating-point values in all cases.
      
      	* config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
      	("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
      	("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
      
      testsuite/ChangeLog:
      
      	* gcc.c-torture/execute/ieee/inf-2.c (testf): Skip on the SPU.
      
      Co-Authored-By: Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
      
      From-SVN: r139013
      Ulrich Weigand committed