]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
6 years ago[21/77] Replace SCALAR_INT_MODE_P checks with is_a <scalar_int_mode>
rsandifo [Wed, 30 Aug 2017 11:11:02 +0000 (11:11 +0000)] 
[21/77] Replace SCALAR_INT_MODE_P checks with is_a <scalar_int_mode>

This patch replaces checks of "SCALAR_INT_MODE_P (...)" with
"is_a <scalar_int_mode> (..., &var)" in cases where it becomes
useful to refer to the mode as a scalar_int_mode.  It also
replaces some checks for the two constituent classes (MODE_INT
and MODE_PARTIAL_INT).

The patch also introduces is_a <scalar_int_mode> checks for some
uses of HWI_COMPUTABLE_MODE_P, which is a subcondition of
SCALAR_INT_MODE_P.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* wide-int.h (int_traits<unsigned char>) New class.
(int_traits<unsigned short>) Likewise.
* cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>.
Use GET_MODE_UNIT_PRECISION and remove redundant test for
SCALAR_INT_MODE_P.
* combine.c (set_nonzero_bits_and_sign_copies): Use
is_a <scalar_int_mode>.
(find_split_point): Likewise.
(combine_simplify_rtx): Likewise.
(simplify_logical): Likewise.
(expand_compound_operation): Likewise.
(expand_field_assignment): Likewise.
(make_compound_operation): Likewise.
(extended_count): Likewise.
(change_zero_ext): Likewise.
(simplify_comparison): Likewise.
* dwarf2out.c (scompare_loc_descriptor): Likewise.
(ucompare_loc_descriptor): Likewise.
(minmax_loc_descriptor): Likewise.
(mem_loc_descriptor): Likewise.
(loc_descriptor): Likewise.
* expmed.c (init_expmed_one_mode): Likewise.
* lra-constraints.c (lra_constraint_offset): Likewise.
* optabs.c (prepare_libcall_arg): Likewise.
* postreload.c (move2add_note_store): Likewise.
* reload.c (operands_match_p): Likewise.
* rtl.h (load_extend_op): Likewise.
* rtlhooks.c (gen_lowpart_general): Likewise.
* simplify-rtx.c (simplify_truncation): Likewise.
(simplify_unary_operation_1): Likewise.
(simplify_binary_operation_1): Likewise.
(simplify_const_binary_operation): Likewise.
(simplify_const_relational_operation): Likewise.
(simplify_subreg): Likewise.
* stor-layout.c (bitwise_mode_for_mode): Likewise.
* var-tracking.c (adjust_mems): Likewise.
(prepare_call_arguments): Likewise.

gcc/ada/
* gcc-interface/decl.c (check_ok_for_atomic_type): Use
is_a <scalar_int_mode>.
* gcc-interface/trans.c (Pragma_to_gnu): Likewise.
* gcc-interface/utils.c (gnat_type_for_mode): Likewise.

gcc/fortran/
* trans-types.c (gfc_type_for_mode): Use is_a <scalar_int_mode>.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251473 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[20/77] Replace MODE_INT checks with is_int_mode
rsandifo [Wed, 30 Aug 2017 11:10:53 +0000 (11:10 +0000)] 
[20/77] Replace MODE_INT checks with is_int_mode

Replace checks of "GET_MODE_CLASS (...) == MODE_INT" with
"is_int_mode (..., &var)", in cases where it becomes useful
to refer to the mode as a scalar_int_mode.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* machmode.h (is_int_mode): New fuction.
* combine.c (find_split_point): Use it.
(combine_simplify_rtx): Likewise.
(simplify_if_then_else): Likewise.
(simplify_set): Likewise.
(simplify_shift_const_1): Likewise.
(simplify_comparison): Likewise.
* config/aarch64/aarch64.c (aarch64_rtx_costs): Likewise.
* cse.c (notreg_cost): Likewise.
(cse_insn): Likewise.
* cselib.c (cselib_lookup_1): Likewise.
* dojump.c (do_jump_1): Likewise.
(do_compare_rtx_and_jump): Likewise.
* dse.c (get_call_args): Likewise.
* dwarf2out.c (rtl_for_decl_init): Likewise.
(native_encode_initializer): Likewise.
* expmed.c (emit_store_flag_1): Likewise.
(emit_store_flag): Likewise.
* expr.c (convert_modes): Likewise.
(store_field): Likewise.
(expand_expr_real_1): Likewise.
* fold-const.c (fold_read_from_constant_string): Likewise.
* gimple-ssa-sprintf.c (get_format_string): Likewise.
* optabs-libfuncs.c (gen_int_libfunc): Likewise.
* optabs.c (expand_binop): Likewise.
(expand_unop): Likewise.
(expand_abs_nojump): Likewise.
(expand_one_cmpl_abs_nojump): Likewise.
* simplify-rtx.c (mode_signbit_p): Likewise.
(val_signbit_p): Likewise.
(val_signbit_known_set_p): Likewise.
(val_signbit_known_clear_p): Likewise.
(simplify_relational_operation_1): Likewise.
* tree.c (vector_type_mode): Likewise.

gcc/go/
* go-lang.c (go_langhook_type_for_mode): Use is_int_mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251472 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[19/77] Add a smallest_int_mode_for_size helper function
rsandifo [Wed, 30 Aug 2017 11:10:44 +0000 (11:10 +0000)] 
[19/77] Add a smallest_int_mode_for_size helper function

This patch adds a wrapper around smallest_mode_for_size
for cases in which the mode class is MODE_INT.  Unlike
(int_)mode_for_size, smallest_mode_for_size always returns
a mode of the specified class, asserting if no such mode exists.
smallest_int_mode_for_size therefore returns a scalar_int_mode
rather than an opt_scalar_int_mode.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* machmode.h (smallest_mode_for_size): Fix formatting.
(smallest_int_mode_for_size): New function.
* cfgexpand.c (expand_debug_expr): Use smallest_int_mode_for_size
instead of smallest_mode_for_size.
* combine.c (make_extraction): Likewise.
* config/arc/arc.c (arc_expand_movmem): Likewise.
* config/arm/arm.c (arm_expand_divmod_libfunc): Likewise.
* config/i386/i386.c (ix86_get_mask_mode): Likewise.
* config/s390/s390.c (s390_expand_insv): Likewise.
* config/sparc/sparc.c (assign_int_registers): Likewise.
* config/spu/spu.c (spu_function_value): Likewise.
(spu_function_arg): Likewise.
* coverage.c (get_gcov_type): Likewise.
(get_gcov_unsigned_t): Likewise.
* dse.c (find_shift_sequence): Likewise.
* expmed.c (store_bit_field_1): Likewise.
* expr.c (convert_move): Likewise.
(store_field): Likewise.
* internal-fn.c (expand_arith_overflow): Likewise.
* optabs-query.c (get_best_extraction_insn): Likewise.
* optabs.c (expand_twoval_binop_libfunc): Likewise.
* stor-layout.c (layout_type): Likewise.
(initialize_sizetypes): Likewise.
* targhooks.c (default_get_mask_mode): Likewise.
* tree-ssa-loop-manip.c (canonicalize_loop_ivs): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251471 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[18/77] Make int_mode_for_mode return an opt_scalar_int_mode
rsandifo [Wed, 30 Aug 2017 11:10:36 +0000 (11:10 +0000)] 
[18/77] Make int_mode_for_mode return an opt_scalar_int_mode

Also use int_mode_for_mode instead of (int_)mode_for_size
in cases where the requested size was the bitsize of an
existing mode.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
            Alan Hayward  <alan.hayward@arm.com>
            David Sherwood  <david.sherwood@arm.com>

gcc/
* machmode.h (opt_mode::else_blk): New function.
(int_mode_for_mode): Declare.
* stor-layout.c (int_mode_for_mode): Return an opt_scalar_int_mode.
* builtins.c (expand_builtin_signbit): Adjust for new int_mode_for_mode
return type.
* cfgexpand.c (expand_debug_expr): Likewise.
* combine.c (gen_lowpart_or_truncate): Likewise.
(gen_lowpart_for_combine): Likewise.
* config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Likewise.
* config/avr/avr.c (avr_to_int_mode): Likewise.
(avr_out_plus_1): Likewise.
(avr_out_plus): Likewise.
(avr_out_round): Likewise.
* config/i386/i386.c (ix86_split_to_parts): Likewise.
* config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
(s390_expand_vcond): Likewise.
* config/spu/spu.c (spu_split_immediate): Likewise.
(spu_expand_mov): Likewise.
* dse.c (get_stored_val): Likewise.
* expmed.c (store_bit_field_1): Likewise.
(convert_extracted_bit_field): Use int_mode_for_mode instead of
int_mode_for_size.
(extract_bit_field_1): Adjust for new int_mode_for_mode return type.
(extract_low_bits): Likewise.
* expr.c (emit_group_load_1): Likewise.  Separate out the BLKmode
handling rather than repeating the check.
(emit_group_store): Likewise.
(emit_move_via_integer): Adjust for new int_mode_for_mode return type.
* optabs.c (expand_absneg_bit): Likewise.
(expand_copysign_absneg): Likewise.
(expand_copysign_bit): Likewise.
* tree-if-conv.c (ifcvt_can_use_mask_load_store): Likewise.
* tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
* tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
* var-tracking.c (prepare_call_arguments):  Likewise.
* config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Use
int_mode_for_mode instead of mode_for_size.
* config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251470 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[17/77] Add an int_mode_for_size helper function
rsandifo [Wed, 30 Aug 2017 11:10:28 +0000 (11:10 +0000)] 
[17/77] Add an int_mode_for_size helper function

This patch adds a wrapper around mode_for_size for cases in which
the mode class is MODE_INT (the commonest case).  The return type
can then be an opt_scalar_int_mode instead of a machine_mode.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* machmode.h (int_mode_for_size): New function.
* builtins.c (set_builtin_user_assembler_name): Use int_mode_for_size
instead of mode_for_size.
* calls.c (save_fixed_argument_area): Likewise.  Make use of BLKmode
explicit.
* combine.c (expand_field_assignment): Use int_mode_for_size
instead of mode_for_size.
(make_extraction): Likewise.
(simplify_shift_const_1): Likewise.
(simplify_comparison): Likewise.
* dojump.c (do_jump): Likewise.
* dwarf2out.c (mem_loc_descriptor): Likewise.
* emit-rtl.c (init_derived_machine_modes): Likewise.
* expmed.c (flip_storage_order): Likewise.
(convert_extracted_bit_field): Likewise.
* expr.c (copy_blkmode_from_reg): Likewise.
* graphite-isl-ast-to-gimple.c (max_mode_int_precision): Likewise.
* internal-fn.c (expand_mul_overflow): Likewise.
* lower-subreg.c (simple_move): Likewise.
* optabs-libfuncs.c (init_optabs): Likewise.
* simplify-rtx.c (simplify_unary_operation_1): Likewise.
* tree.c (vector_type_mode): Likewise.
* tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
* tree-vect-data-refs.c (vect_lanes_optab_supported_p): Likewise.
* tree-vect-generic.c (expand_vector_parallel): Likewise.
* tree-vect-stmts.c (vectorizable_load): Likewise.
(vectorizable_store): Likewise.

gcc/ada/
* gcc-interface/decl.c (gnat_to_gnu_entity): Use int_mode_for_size
instead of mode_for_size.
(gnat_to_gnu_subprog_type): Likewise.
* gcc-interface/utils.c (make_type_from_size): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251469 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[16/77] Add scalar_int_mode_pod
rsandifo [Wed, 30 Aug 2017 11:10:18 +0000 (11:10 +0000)] 
[16/77] Add scalar_int_mode_pod

This patch adds a POD class for scalar integers, as an instance
of a new pod_mode template.  Later patches will use pod_mode in
situations that really do need to be POD; this patch is simply
using PODs to remove load-time initialisation.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* coretypes.h (pod_mode): New type.
(scalar_int_mode_pod): New typedef.
* machmode.h (pod_mode): New class.
(int_n_data_t::m): Change type to scalar_int_mode_pod.
* genmodes.c (emit_mode_int_n): Update accordingly.
* lower-subreg.h (target_lower_subreg): Change type to
scalar_int_mode_pod.
* gdbhooks.py (build_pretty_printer): Handle pod_mode and
scalar_int_mode_pod.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251468 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[15/77] Add scalar_int_mode
rsandifo [Wed, 30 Aug 2017 11:10:11 +0000 (11:10 +0000)] 
[15/77] Add scalar_int_mode

Similar to the previous scalar_float_mode patch, but for modes that
satisfy SCALAR_INT_MODE_P.  There are very many uses of scalar integers,
so this patch only makes a token change to the types of byte_mode,
word_mode, ptr_mode and rs6000_pmode.  The next patches in the series
gradually replace more uses.

The patch also removes and adds casts to some target-specific code
due to the new types of SImode, DImode and Pmode.

The as_a <scalar_int_mode> goes away in a later patch.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* config/powerpcspe/powerpcspe.h (rs6000_pmode): Change type from
machine_mode to scalar_int_mode.
* config/powerpcspe/powerpcspe.c (rs6000_pmode): Likewise.
(rs6000_option_override_internal): Remove cast to int.
* config/rs6000/rs6000.h (rs6000_pmode): Change type from
machine_mode to scalar_int_mode.
* config/rs6000/rs6000.c (rs6000_pmode): Likewise.
(rs6000_option_override_internal): Remove cast to int.
* config/s390/s390.h (Pmode): Remove cast to machine_mode.
* config/epiphany/epiphany.h (RTX_OK_FOR_OFFSET_P): Add cast
to machine_mode.
* config/s390/s390.c (s390_expand_builtin): Likewise.
* coretypes.h (scalar_int_mode): New type.
(opt_scalar_int_mode): New typedef.
* machmode.h (scalar_int_mode): New class.
(scalar_int_mode::includes_p): New function.
(byte_mode): Change type to scalar_int_mode.
(word_mode): Likewise.
(ptr_mode): Likewise.
* emit-rtl.c (byte_mode): Likewise.
(word_mode): Likewise.
(ptr_mode): Likewise.
(init_derived_machine_modes): Update accordingly.
* genmodes.c (get_mode_class): Return scalar_int_mode for MODE_INT
and MODE_PARTIAL_INT.
* gdbhooks.py (build_pretty_printer): Handle scalar_int_mode and
opt_scalar_int_mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251467 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[14/77] Make libgcc_floating_mode_supported_p take a scalar_float_mode
rsandifo [Wed, 30 Aug 2017 11:10:03 +0000 (11:10 +0000)] 
[14/77] Make libgcc_floating_mode_supported_p take a scalar_float_mode

As per subject.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* target.def (libgcc_floating_mode_supported_p): Take a
scalar_float_mode.
* doc/tm.texi: Regenerate.
* targhooks.h (default_libgcc_floating_mode_supported_p): Take a
scalar_float_mode.
* targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.
* config/aarch64/aarch64.c (aarch64_libgcc_floating_mode_supported_p):
Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251466 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[13/77] Make floatn_mode return an opt_scalar_float_mode
rsandifo [Wed, 30 Aug 2017 11:09:56 +0000 (11:09 +0000)] 
[13/77] Make floatn_mode return an opt_scalar_float_mode

As per subject.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* target.def (default_floatn_mode): Return an opt_scalar_float_mode.
* doc/tm.texi: Regenerate.
* config/arm/arm.c (arm_floatn_mode): Return an opt_scalar_float_mode.
* config/powerpcspe/powerpcspe.c (rs6000_floatn_mode): Likewise.
* config/rs6000/rs6000.c (rs6000_floatn_mode): Likewise.
* targhooks.h (default_floatn_mode): Likewise.
* targhooks.c (default_floatn_mode): Likewise.
* tree.c (build_common_tree_nodes): Update accordingly.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251465 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[12/77] Use opt_scalar_float_mode when iterating over float modes
rsandifo [Wed, 30 Aug 2017 11:09:48 +0000 (11:09 +0000)] 
[12/77] Use opt_scalar_float_mode when iterating over float modes

This means that we know when accessing the modes that the size is
a compile-time constant, even for SVE.  It also enables stricter
type safety in later patches.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* machmode.h (mode_iterator::start): Provide overload for opt_modes.
(mode_iterator::iterate_p): Likewise.
(mode_iterator::get_wider): Likewise.
* expr.c (init_expr_target): Use opt_scalar_float_mode.

gcc/ada/
* gcc-interface/misc.c (fp_prec_to_size): Use opt_scalar_float_mode.
(fp_size_to_prec): Likewise.

gcc/c-family/
* c-cppbuiltin.c (c_cpp_builtins): Use opt_scalar_float_mode.

gcc/fortran/
* trans-types.c (gfc_init_kinds): Use opt_scalar_float_mode
and FOR_EACH_MODE_IN_CLASS.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251464 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[11/77] Add a float_mode_for_size helper function
rsandifo [Wed, 30 Aug 2017 11:09:41 +0000 (11:09 +0000)] 
[11/77] Add a float_mode_for_size helper function

This provides a type-safe way to ask for a float mode and get it as a
scalar_float_mode.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* coretypes.h (opt_scalar_float_mode): New typedef.
* machmode.h (float_mode_for_size): New function.
* emit-rtl.c (double_mode): Delete.
(init_emit_once): Use float_mode_for_size.
* stor-layout.c (layout_type): Likewise.
* gdbhooks.py (build_pretty_printer): Handle opt_scalar_float_mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251463 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix test-case vrp104.c.
marxin [Wed, 30 Aug 2017 11:09:39 +0000 (11:09 +0000)] 
Fix test-case vrp104.c.

2017-08-30  Martin Liska  <mliska@suse.cz>

* gcc.dg/tree-ssa/vrp104.c: Change dump file name.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251462 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[10/77] Make assemble_real take a scalar_float_mode
rsandifo [Wed, 30 Aug 2017 11:09:34 +0000 (11:09 +0000)] 
[10/77] Make assemble_real take a scalar_float_mode

As per subject.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* output.h (assemble_real): Take a scalar_float_mode.
* config/arm/arm.c (arm_assemble_integer): Update accordingly.
* config/arm/arm.md (consttable_4): Likewise.
(consttable_8): Likewise.
(consttable_16): Likewise.
* config/mips/mips.md (consttable_float): Likewise.
* config/s390/s390.c (s390_output_pool_entry): Likewise.
* varasm.c (assemble_real): Take a scalar_float_mode.
(output_constant_pool_2): Update accordingly.
(output_constant): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251461 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[9/77] Add SCALAR_FLOAT_TYPE_MODE
rsandifo [Wed, 30 Aug 2017 11:09:27 +0000 (11:09 +0000)] 
[9/77] Add SCALAR_FLOAT_TYPE_MODE

This patch adds a macro that extracts the TYPE_MODE and forcibly
converts it to a scalar_float_mode.  The forcible conversion
includes a gcc_checking_assert that the mode is a SCALAR_FLOAT_MODE_P.

This becomes important as more static type checking is added by
later patches.  It has the additional benefit of bypassing the
VECTOR_TYPE_P (...) ? vector_type_mode (...) : ... condition
in TYPE_MODE; in release builds the new macro is a simple
field access.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* tree.h (SCALAR_FLOAT_TYPE_MODE): New macro.
* builtins.c (expand_builtin_signbit): Use it instead of TYPE_MODE.
* fold-const.c (fold_convert_const_real_from_fixed): Likewise.
(native_encode_real): Likewise.
(native_interpret_real): Likewise.
* hsa-brig.c (emit_immediate_scalar_to_buffer): Likewise.
* tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.

gcc/cp/
* mangle.c (write_real_cst): Use SCALAR_FLOAT_TYPE_MODE
instead of TYPE_MODE.

gcc/fortran/
* target-memory.c (size_float): Use SCALAR_FLOAT_TYPE_MODE
instead of TYPE_MODE.

gcc/objc/
* objc-encoding.c (encode_type): Use SCALAR_FLOAT_TYPE_MODE
instead of TYPE_MODE.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251460 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[8/77] Simplify gen_trunc/extend_conv_libfunc
rsandifo [Wed, 30 Aug 2017 11:09:17 +0000 (11:09 +0000)] 
[8/77] Simplify gen_trunc/extend_conv_libfunc

Replace checks of:

  GET_MODE_CLASS (fmode) != MODE_FLOAT && !DECIMAL_FLOAT_MODE_P (fmode)

with !is_a <scalar_float_mode> and use MODE_CLASS equality/inequality
instead of:

  (GET_MODE_CLASS (tmode) == MODE_FLOAT && DECIMAL_FLOAT_MODE_P (fmode))
  || (GET_MODE_CLASS (fmode) == MODE_FLOAT && DECIMAL_FLOAT_MODE_P (tmode))

and:

  (GET_MODE_CLASS (tmode) == MODE_FLOAT
   && GET_MODE_CLASS (fmode) == MODE_FLOAT)
  || (DECIMAL_FLOAT_MODE_P (fmode) && DECIMAL_FLOAT_MODE_P (tmode))

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* optabs-libfuncs.c (gen_trunc_conv_libfunc): Use is_a
<scalar_float_mode>.  Simplify.
(gen_extend_conv_libfunc): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251459 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[7/77] Add scalar_float_mode
rsandifo [Wed, 30 Aug 2017 11:09:10 +0000 (11:09 +0000)] 
[7/77] Add scalar_float_mode

This patch adds a scalar_float_mode class, which wraps a mode enum
that is known to satisfy SCALAR_FLOAT_MODE_P.  Things like "SFmode"
now give a scalar_float_mode object instead of a machine_mode.
This in turn needs a change to the real.h format_helper, so that
it can accept both machine_modes and scalar_float_modes.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* coretypes.h (scalar_float_mode): New type.
* machmode.h (mode_traits::from_int): Use machine_mode if
USE_ENUM_MODES is defined.
(is_a): New function.
(as_a): Likewise.
(dyn_cast): Likewise.
(scalar_float_mode): New class.
(scalar_float_mode::includes_p): New function.
(is_float_mode): Likewise.
* gdbhooks.py (MachineModePrinter): New class.
(build_pretty_printer): Use it for scalar_float_mode.
* real.h (FLOAT_MODE_FORMAT): Use as_a <scalar_float_mode>.
(format_helper::format_helper): Turn into a template.
* genmodes.c (get_mode_class): New function.
(emit_insn_modes_h): Give modes the class returned by get_mode_class,
or machine_mode if none.
* config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Use
as_a <scalar_float_mode>.
* dwarf2out.c (mem_loc_descriptor): Likewise.
(insert_float): Likewise.
(add_const_value_attribute): Likewise.
* simplify-rtx.c (simplify_immed_subreg): Likewise.
* optabs.c (expand_absneg_bit): Take a scalar_float_mode.
(expand_unop): Update accordingly.
(expand_abs_nojump): Likewise.
(expand_copysign_absneg): Take a scalar_float_mode.
(expand_copysign_bit): Likewise.
(expand_copysign): Update accordingly.

gcc/ada/
* gcc-interface/utils.c (gnat_type_for_mode): Use is_a
<scalar_float_mode> instead of SCALAR_FLOAT_MODE_P.

gcc/go/
* go-lang.c (go_langhook_type_for_mode): Use is_float_mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251458 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[6/77] Make GET_MODE_WIDER return an opt_mode
rsandifo [Wed, 30 Aug 2017 11:09:01 +0000 (11:09 +0000)] 
[6/77] Make GET_MODE_WIDER return an opt_mode

GET_MODE_WIDER previously returned VOIDmode if no wider mode existed.
That would cause problems with stricter mode classes, since VOIDmode
isn't for example a valid scalar integer or floating-point mode.
This patch instead makes it return a new opt_mode<T> class, which
holds either a T or nothing.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* coretypes.h (opt_mode): New class.
* machmode.h (opt_mode): Likewise.
(opt_mode::else_void): New function.
(opt_mode::require): Likewise.
(opt_mode::exists): Likewise.
(GET_MODE_WIDER_MODE): Turn into a function and return an opt_mode.
(GET_MODE_2XWIDER_MODE): Likewise.
(mode_iterator::get_wider): Update accordingly.
(mode_iterator::get_2xwider): Likewise.
(mode_iterator::get_known_wider): Likewise, turning into a template.
* combine.c (make_extraction): Update use of GET_MODE_WIDER_MODE,
forcing a wider mode to exist.
* config/cr16/cr16.h (LONG_REG_P): Likewise.
* rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
* config/c6x/c6x.c (c6x_rtx_costs): Update use of
GET_MODE_2XWIDER_MODE, forcing a wider mode to exist.
* lower-subreg.c (init_lower_subreg): Likewise.
* optabs-libfuncs.c (init_sync_libfuncs_1): Likewise, but not
on the final iteration.
* config/i386/i386.c (ix86_expand_set_or_movmem): Check whether
a wider mode exists before asking for a move pattern.
(get_mode_wider_vector): Update use of GET_MODE_WIDER_MODE,
forcing a wider mode to exist.
(expand_vselect_vconcat): Update use of GET_MODE_2XWIDER_MODE,
returning false if no such mode exists.
* config/ia64/ia64.c (expand_vselect_vconcat): Likewise.
* config/mips/mips.c (mips_expand_vselect_vconcat): Likewise.
* expmed.c (init_expmed_one_mode): Update use of GET_MODE_WIDER_MODE.
Avoid checking for a MODE_INT if we already know the mode is not a
SCALAR_INT_MODE_P.
(extract_high_half): Update use of GET_MODE_WIDER_MODE,
forcing a wider mode to exist.
(expmed_mult_highpart_optab): Likewise.
(expmed_mult_highpart): Likewise.
* expr.c (expand_expr_real_2): Update use of GET_MODE_WIDER_MODE,
using else_void.
* lto-streamer-in.c (lto_input_mode_table): Likewise.
* optabs-query.c (find_widening_optab_handler_and_mode): Likewise.
* stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
* internal-fn.c (expand_mul_overflow): Update use of
GET_MODE_2XWIDER_MODE.
* omp-low.c (omp_clause_aligned_alignment): Likewise.
* tree-ssa-math-opts.c (convert_mult_to_widen): Update use of
GET_MODE_WIDER_MODE.
(convert_plusminus_to_widen): Likewise.
* tree-switch-conversion.c (array_value_type): Likewise.
* var-tracking.c (emit_note_insn_var_location): Likewise.
* tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
Return false inside rather than outside the loop if no wider mode
exists
* optabs.c (expand_binop): Update use of GET_MODE_WIDER_MODE
and GET_MODE_2XWIDER_MODE
(can_compare_p): Use else_void.
* gdbhooks.py (OptMachineModePrinter): New class.
(build_pretty_printer): Use it for opt_mode.

gcc/ada/
* gcc-interface/decl.c (validate_size): Update use of
GET_MODE_WIDER_MODE, forcing a wider mode to exist.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251457 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[5/77] Small tweak to array_value_type
rsandifo [Wed, 30 Aug 2017 11:08:53 +0000 (11:08 +0000)] 
[5/77] Small tweak to array_value_type

Store the type mode in a variable so that a later,
more mechanical patch can change its type.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* tree-switch-conversion.c (array_value_type): Only read TYPE_MODE
once.  Use get_narrowest_mode instead of GET_CLASS_NARROWEST_MODE.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251456 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[4/77] Add FOR_EACH iterators for modes
rsandifo [Wed, 30 Aug 2017 11:08:44 +0000 (11:08 +0000)] 
[4/77] Add FOR_EACH iterators for modes

The new iterators are:

- FOR_EACH_MODE_IN_CLASS: iterate over all the modes in a mode class.

- FOR_EACH_MODE_FROM: iterate over all the modes in a class,
  starting at a given mode.

- FOR_EACH_WIDER_MODE: iterate over all the modes in a class,
  starting at the next widest mode after a given mode.

- FOR_EACH_2XWIDER_MODE: same, but considering only modes that
  are two times wider than the previous mode.

- FOR_EACH_MODE_UNTIL: iterate over all the modes in a class until
  a given mode is reached.

- FOR_EACH_MODE: iterate over all the modes in a class between
  two given modes, inclusive of the first but not the second.

These help with the stronger type checking added by later patches,
since every new mode will be in the same class as the previous one.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
            Alan Hayward  <alan.hayward@arm.com>
            David Sherwood  <david.sherwood@arm.com>

gcc/
* machmode.h (mode_traits): New structure.
(get_narrowest_mode): New function.
(mode_iterator::start): Likewise.
(mode_iterator::iterate_p): Likewise.
(mode_iterator::get_wider): Likewise.
(mode_iterator::get_known_wider): Likewise.
(mode_iterator::get_2xwider): Likewise.
(FOR_EACH_MODE_IN_CLASS): New mode iterator.
(FOR_EACH_MODE): Likewise.
(FOR_EACH_MODE_FROM): Likewise.
(FOR_EACH_MODE_UNTIL): Likewise.
(FOR_EACH_WIDER_MODE): Likewise.
(FOR_EACH_2XWIDER_MODE): Likewise.
* builtins.c (expand_builtin_strlen): Use new mode iterators.
* combine.c (simplify_comparison): Likewise
* config/i386/i386.c (type_natural_mode): Likewise.
* cse.c (cse_insn): Likewise.
* dse.c (find_shift_sequence): Likewise.
* emit-rtl.c (init_derived_machine_modes): Likewise.
(init_emit_once): Likewise.
* explow.c (hard_function_value): Likewise.
* expmed.c (extract_fixed_bit_field_1): Likewise.
(extract_bit_field_1): Likewise.
(expand_divmod): Likewise.
(emit_store_flag_1): Likewise.
* expr.c (init_expr_target): Likewise.
(convert_move): Likewise.
(alignment_for_piecewise_move): Likewise.
(widest_int_mode_for_size): Likewise.
(emit_block_move_via_movmem): Likewise.
(copy_blkmode_to_reg): Likewise.
(set_storage_via_setmem): Likewise.
(compress_float_constant): Likewise.
* omp-low.c (omp_clause_aligned_alignment): Likewise.
* optabs-query.c (get_best_extraction_insn): Likewise.
* optabs.c (expand_binop): Likewise.
(expand_twoval_unop): Likewise.
(expand_twoval_binop): Likewise.
(widen_leading): Likewise.
(widen_bswap): Likewise.
(expand_parity): Likewise.
(expand_unop): Likewise.
(prepare_cmp_insn): Likewise.
(prepare_float_lib_cmp): Likewise.
(expand_float): Likewise.
(expand_fix): Likewise.
(expand_sfix_optab): Likewise.
* postreload.c (move2add_use_add2_insn): Likewise.
* reg-stack.c (reg_to_stack): Likewise.
* reginfo.c (choose_hard_reg_mode): Likewise.
* rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
* stor-layout.c (mode_for_size): Likewise.
(smallest_mode_for_size): Likewise.
(mode_for_vector): Likewise.
(finish_bitfield_representative): Likewise.
* tree-ssa-math-opts.c (target_supports_divmod_p): Likewise.
* tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
* tree-vect-stmts.c (vectorizable_conversion): Likewise.
* var-tracking.c (prepare_call_arguments): Likewise.

gcc/ada/
* gcc-interface/misc.c (fp_prec_to_size): Use new mode iterators.
(fp_size_to_prec): Likewise.

gcc/c-family/
* c-common.c (c_common_fixed_point_type_for_size): Use new mode
iterators.
* c-cppbuiltin.c (c_cpp_builtins): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251455 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[3/77] Allow machine modes to be classes
rsandifo [Wed, 30 Aug 2017 11:08:36 +0000 (11:08 +0000)] 
[3/77] Allow machine modes to be classes

This patch makes various changes that allow modes like SImode to be
classes rather than enums.

Firstly, it adds inline functions for all mode size properties,
with the macros being simple wrappers around them.  This is necessary
for the __builtin_constant_p trick to continue working effectively when
the mode arguments are slightly more complex (but still foldable at
compile time).

These inline functions are trivial and heavily used.  There's not much
point keeping them out-of-line at -O0: if anything it would make
debugging harder rather than easier, and it would also slow things down.
The patch therefore marks them as "always_inline", if that's available.
Later patches use this approach too.

Using inline functions means that it's no longer possible to pass
an int to GET_MODE_PRECISION etc.  The Fortran and powerpcspe-c.c
parts are needed to avoid instances of that.

The patch continues to use enums for gencondmd.c, so that more
mode comparisons are integer constant expressions when checking
for always-true or always-false conditions.  This is the only
intended use of USE_ENUM_MODES.

The patch also enforces the previous replacement of case statements
by defining modes as:

  #define FOOmode ((void) 0, E_FOOmode)

This adds no overhead but makes sure that new uses of "case FOOmode:"
don't accidentally creep in when FOOmode has no specific class associated
with it.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* genconditions.c (write_header): Add a "#define USE_ENUM_MODES".
* genmodes.c (emit_insn_modes_h): Define FOOmode to E_FOOmode if
USE_ENUM_MODES is defined and to ((void) 0, E_FOOmode) otherwise.
* machmode.h (mode_size): Move earlier in file.
(mode_precision): Likewise.
(mode_inner): Likewise.
(mode_nunits): Likewise.
(mode_unit_size): Likewise.
(unit_unit_precision): Likewise.
(mode_wider): Likewise.
(mode_2xwider): Likewise.
(machine_mode): New class.
(mode_to_bytes): New function.
(mode_to_bits): Likewise.
(mode_to_precision): Likewise.
(mode_to_inner): Likewise.
(mode_to_unit_size): Likewise.
(mode_to_unit_precision): Likewise.
(mode_to_nunits): Likewise.
(GET_MODE_SIZE): Use mode_to_bytes.
(GET_MODE_BITSIZE): Use mode_to_bits.
(GET_MODE_PRECISION): Use mode_to_precision.
(GET_MODE_INNER): Use mode_to_inner.
(GET_MODE_UNIT_SIZE): Use mode_to_unit_size.
(GET_MODE_UNIT_PRECISION): Use mode_to_unit_precision.
(GET_MODE_NUNITS): Use mode_to_nunits.
* system.h (ALWAYS_INLINE): New macro.
* config/powerpcspe/powerpcspe-c.c
(altivec_resolve_overloaded_builtin): Use machine_mode instead of
int for arg1_mode and arg2_mode.

gcc/fortran/
* trans-types.c (gfc_init_kinds): Use machine_mode instead of int
for "mode".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251454 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[2/77] Add an E_ prefix to case statements
rsandifo [Wed, 30 Aug 2017 11:08:28 +0000 (11:08 +0000)] 
[2/77] Add an E_ prefix to case statements

All case statements need to be updated to use the prefixed names,
since the unprefixed names will eventually not be integer constant
expressions.  This patch does a mechanical substitution over the whole
codebase.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
Prefix mode names with E_ in case statements.
* config/aarch64/aarch64-elf.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
* config/aarch64/aarch64.c (aarch64_split_simd_combine): Likewise.
(aarch64_split_simd_move): Likewise.
(aarch64_gen_storewb_pair): Likewise.
(aarch64_gen_loadwb_pair): Likewise.
(aarch64_gen_store_pair): Likewise.
(aarch64_gen_load_pair): Likewise.
(aarch64_get_condition_code_1): Likewise.
(aarch64_constant_pool_reload_icode): Likewise.
(get_rsqrte_type): Likewise.
(get_rsqrts_type): Likewise.
(get_recpe_type): Likewise.
(get_recps_type): Likewise.
(aarch64_gimplify_va_arg_expr): Likewise.
(aarch64_simd_container_mode): Likewise.
(aarch64_emit_load_exclusive): Likewise.
(aarch64_emit_store_exclusive): Likewise.
(aarch64_expand_compare_and_swap): Likewise.
(aarch64_gen_atomic_cas): Likewise.
(aarch64_emit_bic): Likewise.
(aarch64_emit_atomic_swap): Likewise.
(aarch64_emit_atomic_load_op): Likewise.
(aarch64_evpc_trn): Likewise.
(aarch64_evpc_uzp): Likewise.
(aarch64_evpc_zip): Likewise.
(aarch64_evpc_ext): Likewise.
(aarch64_evpc_rev): Likewise.
(aarch64_evpc_dup): Likewise.
(aarch64_gen_ccmp_first): Likewise.
(aarch64_gen_ccmp_next): Likewise.
* config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise.
(alpha_emit_xfloating_libcall): Likewise.
(emit_insxl): Likewise.
(alpha_arg_type): Likewise.
* config/arc/arc.c (arc_vector_mode_supported_p): Likewise.
(arc_preferred_simd_mode): Likewise.
(arc_secondary_reload): Likewise.
(get_arc_condition_code): Likewise.
(arc_print_operand): Likewise.
(arc_legitimate_constant_p): Likewise.
* config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
* config/arc/arc.md (casesi_load): Likewise.
(casesi_compact_jump): Likewise.
* config/arc/predicates.md (proper_comparison_operator): Likewise.
(cc_use_register): Likewise.
* config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
* config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
(arm_init_iwmmxt_builtins): Likewise.
* config/arm/arm.c (thumb1_size_rtx_costs): Likewise.
(neon_expand_vector_init): Likewise.
(arm_attr_length_move_neon): Likewise.
(maybe_get_arm_condition_code): Likewise.
(arm_emit_vector_const): Likewise.
(arm_preferred_simd_mode): Likewise.
(arm_output_iwmmxt_tinsr): Likewise.
(thumb1_output_casesi): Likewise.
(thumb2_output_casesi): Likewise.
(arm_emit_load_exclusive): Likewise.
(arm_emit_store_exclusive): Likewise.
(arm_expand_compare_and_swap): Likewise.
(arm_evpc_neon_vuzp): Likewise.
(arm_evpc_neon_vzip): Likewise.
(arm_evpc_neon_vrev): Likewise.
(arm_evpc_neon_vtrn): Likewise.
(arm_evpc_neon_vext): Likewise.
(arm_validize_comparison): Likewise.
* config/arm/neon.md (neon_vc<cmp_op><mode>): Likewise.
* config/avr/avr-c.c (avr_resolve_overloaded_builtin): Likewise.
* config/avr/avr.c (avr_rtx_costs_1): Likewise.
* config/c6x/c6x.c (c6x_vector_mode_supported_p): Likewise.
(c6x_preferred_simd_mode): Likewise.
* config/epiphany/epiphany.c (get_epiphany_condition_code): Likewise.
(epiphany_rtx_costs): Likewise.
* config/epiphany/predicates.md (proper_comparison_operator):
Likewise.
* config/frv/frv.c (condexec_memory_operand): Likewise.
(frv_emit_move): Likewise.
(output_move_single): Likewise.
(output_condmove_single): Likewise.
(frv_hard_regno_mode_ok): Likewise.
(frv_matching_accg_mode): Likewise.
* config/h8300/h8300.c (split_adds_subs): Likewise.
(h8300_rtx_costs): Likewise.
(h8300_print_operand): Likewise.
(compute_mov_length): Likewise.
(output_logical_op): Likewise.
(compute_logical_op_length): Likewise.
(compute_logical_op_cc): Likewise.
(h8300_shift_needs_scratch_p): Likewise.
(output_a_shift): Likewise.
(compute_a_shift_length): Likewise.
(compute_a_shift_cc): Likewise.
(expand_a_rotate): Likewise.
(output_a_rotate): Likewise.
* config/i386/i386.c (classify_argument): Likewise.
(function_arg_advance_32): Likewise.
(function_arg_32): Likewise.
(function_arg_64): Likewise.
(function_value_64): Likewise.
(ix86_gimplify_va_arg): Likewise.
(ix86_legitimate_constant_p): Likewise.
(put_condition_code): Likewise.
(split_double_mode): Likewise.
(ix86_avx256_split_vector_move_misalign): Likewise.
(ix86_expand_vector_logical_operator): Likewise.
(ix86_split_idivmod): Likewise.
(ix86_expand_adjust_ufix_to_sfix_si): Likewise.
(ix86_build_const_vector): Likewise.
(ix86_build_signbit_mask): Likewise.
(ix86_match_ccmode): Likewise.
(ix86_cc_modes_compatible): Likewise.
(ix86_expand_branch): Likewise.
(ix86_expand_sse_cmp): Likewise.
(ix86_expand_sse_movcc): Likewise.
(ix86_expand_int_sse_cmp): Likewise.
(ix86_expand_vec_perm_vpermi2): Likewise.
(ix86_expand_vec_perm): Likewise.
(ix86_expand_sse_unpack): Likewise.
(ix86_expand_int_addcc): Likewise.
(ix86_split_to_parts): Likewise.
(ix86_vectorize_builtin_gather): Likewise.
(ix86_vectorize_builtin_scatter): Likewise.
(avx_vpermilp_parallel): Likewise.
(inline_memory_move_cost): Likewise.
(ix86_tieable_integer_mode_p): Likewise.
(x86_maybe_negate_const_int): Likewise.
(ix86_expand_vector_init_duplicate): Likewise.
(ix86_expand_vector_init_one_nonzero): Likewise.
(ix86_expand_vector_init_one_var): Likewise.
(ix86_expand_vector_init_concat): Likewise.
(ix86_expand_vector_init_interleave): Likewise.
(ix86_expand_vector_init_general): Likewise.
(ix86_expand_vector_set): Likewise.
(ix86_expand_vector_extract): Likewise.
(emit_reduc_half): Likewise.
(ix86_emit_i387_round): Likewise.
(ix86_mangle_type): Likewise.
(ix86_expand_round_sse4): Likewise.
(expand_vec_perm_blend): Likewise.
(canonicalize_vector_int_perm): Likewise.
(ix86_expand_vec_one_operand_perm_avx512): Likewise.
(expand_vec_perm_1): Likewise.
(expand_vec_perm_interleave3): Likewise.
(expand_vec_perm_even_odd_pack): Likewise.
(expand_vec_perm_even_odd_1): Likewise.
(expand_vec_perm_broadcast_1): Likewise.
(ix86_vectorize_vec_perm_const_ok): Likewise.
(ix86_expand_vecop_qihi): Likewise.
(ix86_expand_mul_widen_hilo): Likewise.
(ix86_expand_sse2_abs): Likewise.
(ix86_expand_pextr): Likewise.
(ix86_expand_pinsr): Likewise.
(ix86_preferred_simd_mode): Likewise.
(ix86_simd_clone_compute_vecsize_and_simdlen): Likewise.
* config/i386/sse.md (*andnot<mode>3): Likewise.
(<mask_codefor><code><mode>3<mask_name>): Likewise.
(*<code><mode>3): Likewise.
* config/ia64/ia64.c (ia64_expand_vecint_compare): Likewise.
(ia64_expand_atomic_op): Likewise.
(ia64_arg_type): Likewise.
(ia64_mode_to_int): Likewise.
(ia64_scalar_mode_supported_p): Likewise.
(ia64_vector_mode_supported_p): Likewise.
(expand_vec_perm_broadcast): Likewise.
* config/iq2000/iq2000.c (iq2000_move_1word): Likewise.
(iq2000_function_arg_advance): Likewise.
(iq2000_function_arg): Likewise.
* config/m32c/m32c.c (m32c_preferred_reload_class): Likewise.
* config/m68k/m68k.c (output_dbcc_and_branch): Likewise.
(m68k_libcall_value): Likewise.
(m68k_function_value): Likewise.
(sched_attr_op_type): Likewise.
* config/mcore/mcore.c (mcore_output_move): Likewise.
* config/microblaze/microblaze.c (microblaze_function_arg_advance):
Likewise.
(microblaze_function_arg): Likewise.
* config/mips/mips.c (mips16_build_call_stub): Likewise.
(mips_print_operand): Likewise.
(mips_mode_ok_for_mov_fmt_p): Likewise.
(mips_vector_mode_supported_p): Likewise.
(mips_preferred_simd_mode): Likewise.
(mips_expand_vpc_loongson_even_odd): Likewise.
(mips_expand_vec_unpack): Likewise.
(mips_expand_vi_broadcast): Likewise.
(mips_expand_vector_init): Likewise.
(mips_expand_vec_reduc): Likewise.
(mips_expand_msa_cmp): Likewise.
* config/mips/mips.md (casesi_internal_mips16_<mode>): Likewise.
* config/mn10300/mn10300.c (mn10300_print_operand): Likewise.
(cc_flags_for_mode): Likewise.
* config/msp430/msp430.c (msp430_print_operand): Likewise.
* config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Likewise.
(nds32_output_casesi_pc_relative): Likewise.
* config/nds32/nds32.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
* config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Likewise.
(nvptx_gen_unpack): Likewise.
(nvptx_gen_pack): Likewise.
(nvptx_gen_shuffle): Likewise.
(nvptx_gen_wcast): Likewise.
(nvptx_preferred_simd_mode): Likewise.
* config/pa/pa.c (pa_secondary_reload): Likewise.
* config/pa/predicates.md (base14_operand): Likewise.
* config/powerpcspe/powerpcspe-c.c
(altivec_resolve_overloaded_builtin): Likewise.
* config/powerpcspe/powerpcspe.c (rs6000_setup_reg_addr_masks):
Likewise.
(rs6000_preferred_simd_mode): Likewise.
(output_vec_const_move): Likewise.
(rs6000_expand_vector_extract): Likewise.
(rs6000_split_vec_extract_var): Likewise.
(reg_offset_addressing_ok_p): Likewise.
(rs6000_legitimate_offset_address_p): Likewise.
(rs6000_legitimize_address): Likewise.
(rs6000_emit_set_const): Likewise.
(rs6000_const_vec): Likewise.
(rs6000_emit_move): Likewise.
(spe_build_register_parallel): Likewise.
(rs6000_darwin64_record_arg_recurse): Likewise.
(swap_selector_for_mode): Likewise.
(spe_init_builtins): Likewise.
(paired_init_builtins): Likewise.
(altivec_init_builtins): Likewise.
(do_load_for_compare): Likewise.
(rs6000_generate_compare): Likewise.
(rs6000_expand_float128_convert): Likewise.
(emit_load_locked): Likewise.
(emit_store_conditional): Likewise.
(rs6000_output_function_epilogue): Likewise.
(rs6000_handle_altivec_attribute): Likewise.
(rs6000_function_value): Likewise.
(emit_fusion_gpr_load): Likewise.
(emit_fusion_p9_load): Likewise.
(emit_fusion_p9_store): Likewise.
* config/powerpcspe/predicates.md (easy_fp_constant): Likewise.
(fusion_gpr_mem_load): Likewise.
(fusion_addis_mem_combo_load): Likewise.
(fusion_addis_mem_combo_store): Likewise.
* config/rs6000/predicates.md (easy_fp_constant): Likewise.
(fusion_gpr_mem_load): Likewise.
(fusion_addis_mem_combo_load): Likewise.
(fusion_addis_mem_combo_store): Likewise.
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
Likewise.
* config/rs6000/rs6000-string.c (do_load_for_compare): Likewise.
* config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise.
(rs6000_preferred_simd_mode): Likewise.
(output_vec_const_move): Likewise.
(rs6000_expand_vector_extract): Likewise.
(rs6000_split_vec_extract_var): Likewise.
(reg_offset_addressing_ok_p): Likewise.
(rs6000_legitimate_offset_address_p): Likewise.
(rs6000_legitimize_address): Likewise.
(rs6000_emit_set_const): Likewise.
(rs6000_const_vec): Likewise.
(rs6000_emit_move): Likewise.
(rs6000_darwin64_record_arg_recurse): Likewise.
(swap_selector_for_mode): Likewise.
(paired_init_builtins): Likewise.
(altivec_init_builtins): Likewise.
(rs6000_expand_float128_convert): Likewise.
(emit_load_locked): Likewise.
(emit_store_conditional): Likewise.
(rs6000_output_function_epilogue): Likewise.
(rs6000_handle_altivec_attribute): Likewise.
(rs6000_function_value): Likewise.
(emit_fusion_gpr_load): Likewise.
(emit_fusion_p9_load): Likewise.
(emit_fusion_p9_store): Likewise.
* config/rx/rx.c (rx_gen_move_template): Likewise.
(flags_from_mode): Likewise.
* config/s390/predicates.md (s390_alc_comparison): Likewise.
(s390_slb_comparison): Likewise.
* config/s390/s390.c (s390_handle_vectorbool_attribute): Likewise.
(s390_vector_mode_supported_p): Likewise.
(s390_cc_modes_compatible): Likewise.
(s390_match_ccmode_set): Likewise.
(s390_canonicalize_comparison): Likewise.
(s390_emit_compare_and_swap): Likewise.
(s390_branch_condition_mask): Likewise.
(s390_rtx_costs): Likewise.
(s390_secondary_reload): Likewise.
(__SECONDARY_RELOAD_CASE): Likewise.
(s390_expand_cs): Likewise.
(s390_preferred_simd_mode): Likewise.
* config/s390/vx-builtins.md (vec_packsu_u<mode>): Likewise.
* config/sh/sh.c (sh_print_operand): Likewise.
(dump_table): Likewise.
(sh_secondary_reload): Likewise.
* config/sh/sh.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
* config/sh/sh.md (casesi_worker_1): Likewise.
(casesi_worker_2): Likewise.
* config/sparc/predicates.md (icc_comparison_operator): Likewise.
(fcc_comparison_operator): Likewise.
* config/sparc/sparc.c (sparc_expand_move): Likewise.
(emit_soft_tfmode_cvt): Likewise.
(sparc_preferred_simd_mode): Likewise.
(output_cbranch): Likewise.
(sparc_print_operand): Likewise.
(sparc_expand_vec_perm_bmask): Likewise.
(vector_init_bshuffle): Likewise.
* config/spu/spu.c (spu_scalar_mode_supported_p): Likewise.
(spu_vector_mode_supported_p): Likewise.
(spu_expand_insv): Likewise.
(spu_emit_branch_or_set): Likewise.
(spu_handle_vector_attribute): Likewise.
(spu_builtin_splats): Likewise.
(spu_builtin_extract): Likewise.
(spu_builtin_promote): Likewise.
(spu_expand_sign_extend): Likewise.
* config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise.
(tilegx_simd_int): Likewise.
* config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p): Likewise.
(tilepro_simd_int): Likewise.
* config/v850/v850.c (const_double_split): Likewise.
(v850_print_operand): Likewise.
(ep_memory_offset): Likewise.
* config/vax/vax.c (vax_rtx_costs): Likewise.
(vax_output_int_move): Likewise.
(vax_output_int_add): Likewise.
(vax_output_int_subtract): Likewise.
* config/visium/predicates.md (visium_branch_operator): Likewise.
* config/visium/visium.c (rtx_ok_for_offset_p): Likewise.
(visium_print_operand_address): Likewise.
* config/visium/visium.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
* config/xtensa/xtensa.c (xtensa_mem_offset): Likewise.
(xtensa_expand_conditional_branch): Likewise.
(xtensa_copy_incoming_a7): Likewise.
(xtensa_output_literal): Likewise.
* dfp.c (decimal_real_maxval): Likewise.
* targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.

gcc/c-family/
* c-cppbuiltin.c (mode_has_fma): Prefix mode names with E_ in
case statements.

gcc/objc/
* objc-encoding.c (encode_gnu_bitfield): Prefix mode names with E_ in
case statements.

libobjc/
* encoding.c (_darwin_rs6000_special_round_type_align): Prefix mode
names with E_ in case statements.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251453 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[1/77] Add an E_ prefix to mode names
rsandifo [Wed, 30 Aug 2017 11:08:14 +0000 (11:08 +0000)] 
[1/77] Add an E_ prefix to mode names

Later patches will add wrapper types for specific classes
of mode.  E.g. SImode will be a scalar_int_mode, SFmode will be a
scalar_float_mode, etc.  This patch prepares for that change by adding
an E_ prefix to the mode enum values.  It also adds #defines that map
the unprefixed names to the prefixed names; e.g:

  #define QImode E_QImode

Later patches will change this to use things like scalar_int_mode
where appropriate.

The patch continues to use enum values to initialise static data.
This isn't necessary for correctness, but it cuts down on the amount
of load-time initialisation and shouldn't have any downsides.

The patch also changes things like:

  cmp_mode == DImode ? DFmode : DImode

to:

  cmp_mode == DImode ? E_DFmode : E_DImode

This is because DImode and DFmode will eventually be different
classes, so the original ?: wouldn't be well-formed.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* genmodes.c (mode_size_inline): Add an E_ prefix to mode names.
(mode_nunits_inline): Likewise.
(mode_inner_inline): Likewise.
(mode_unit_size_inline): Likewise.
(mode_unit_precision_inline): Likewise.
(emit_insn_modes_h): Likewise.  Also emit a #define of the
unprefixed name.
(emit_mode_wider): Add an E_ prefix to mode names.
(emit_mode_complex): Likewise.
(emit_mode_inner): Likewise.
(emit_mode_adjustments): Likewise.
(emit_mode_int_n): Likewise.
* config/aarch64/aarch64-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP)
(v2si_UP, v2sf_UP, v1df_UP, di_UP, df_UP, v16qi_UP, v8hi_UP, v8hf_UP)
(v4si_UP, v4sf_UP, v2di_UP, v2df_UP, ti_UP, oi_UP, ci_UP, xi_UP)
(si_UP, sf_UP, hi_UP, hf_UP, qi_UP): Likewise.
(CRC32_BUILTIN, ENTRY): Likewise.
* config/aarch64/aarch64.c (aarch64_push_regs): Likewise.
(aarch64_pop_regs): Likewise.
(aarch64_process_components): Likewise.
* config/alpha/alpha.c (alpha_emit_conditional_move): Likewise.
* config/arm/arm-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP, v2si_UP)
(v2sf_UP, di_UP, v16qi_UP, v8hi_UP, v8hf_UP, v4si_UP, v4sf_UP)
(v2di_UP, ti_UP, ei_UP, oi_UP, hf_UP, si_UP, void_UP): Likewise.
* config/arm/arm.c (arm_init_libfuncs): Likewise.
* config/i386/i386-builtin-types.awk (ix86_builtin_type_vect_mode):
Likewise.
* config/i386/i386-builtin.def (pcmpestr): Likewise.
(pcmpistr): Likewise.
* config/microblaze/microblaze.c (double_memory_operand): Likewise.
* config/mmix/mmix.c (mmix_output_condition): Likewise.
* config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
Likewise.
* config/rl78/rl78.c (mduc_regs): Likewise.
* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
(htm_expand_builtin): Likewise.
* config/sh/sh.h (REGISTER_NATURAL_MODE): Likewise.
* config/sparc/sparc.c (emit_save_or_restore_regs): Likewise.
* config/xtensa/xtensa.c (print_operand): Likewise.
* expmed.h (NUM_MODE_PARTIAL_INT): Likewise.
(NUM_MODE_VECTOR_INT): Likewise.
* genoutput.c (null_operand): Likewise.
(output_operand_data): Likewise.
* genrecog.c (print_parameter_value): Likewise.
* lra.c (debug_operand_data): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251452 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoSplit out parts of scompare_loc_descriptor and emit_store_flag
rsandifo [Wed, 30 Aug 2017 11:08:00 +0000 (11:08 +0000)] 
Split out parts of scompare_loc_descriptor and emit_store_flag

This patch splits some cases out of scompare_loc_descriptor and
emit_store_flag, which helps with the upcoming machmode series.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* dwarf2out.c (scompare_loc_descriptor_wide)
(scompare_loc_descriptor_narrow): New functions, split out from...
(scompare_loc_descriptor): ...here.
* expmed.c (emit_store_flag_int): New function, split out from...
(emit_store_flag): ...here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251451 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-30 Richard Biener <rguenther@suse.de>
rguenth [Wed, 30 Aug 2017 10:40:16 +0000 (10:40 +0000)] 
2017-08-30  Richard Biener  <rguenther@suse.de>

* dwarf2out.c (dwarf2out_finish): Remove setting AT_pubnames.
(dwarf2out_early_finish): Move setting of AT_pubnames from
early debug output to early finish.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251450 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gcc/config/msp430/msp430.h: Pass -mcode/data-region to the linker
nickc [Wed, 30 Aug 2017 09:33:56 +0000 (09:33 +0000)] 
* gcc/config/msp430/msp430.h: Pass -mcode/data-region to the linker
and -mdata-region to the assembler.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251449 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-30 Richard Biener <rguenther@suse.de>
rguenth [Wed, 30 Aug 2017 09:29:05 +0000 (09:29 +0000)] 
2017-08-30  Richard Biener  <rguenther@suse.de>

* dwarf2out.c (add_dwarf_attr): Check we don't add duplicate
attributes.
(gen_subprogram_die): Add DW_AT_object_pointer only early.
(dwarf2out_early_global_decl): Only generate a DIE for the
abstract origin if it doesn't already exist or is a declaration DIE.
(resolve_addr): Do not add the linkage name twice when
generating a stub DIE for the DW_TAG_GNU_call_site target.

* g++.dg/pr78112-2.C: Do not expect duplicate DW_AT_object_pointer.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251448 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[rs6000] int->machine_mode in rs6000-c.c
rsandifo [Wed, 30 Aug 2017 08:24:32 +0000 (08:24 +0000)] 
[rs6000] int->machine_mode in rs6000-c.c

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
Use machine_mode rather than int for arg1_mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251447 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Wed, 30 Aug 2017 00:16:18 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251444 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago net/internal/socktest: build sys_unix.go on AIX
ian [Tue, 29 Aug 2017 21:56:31 +0000 (21:56 +0000)] 
net/internal/socktest: build sys_unix.go on AIX

    Reviewed-on: https://go-review.googlesource.com/59913

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251440 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago libgo: netinet/icmp6.h require netinet/in.h on AIX
ian [Tue, 29 Aug 2017 21:51:49 +0000 (21:51 +0000)] 
libgo: netinet/icmp6.h require netinet/in.h on AIX

    Reviewed-on: https://go-review.googlesource.com/59912

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251439 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c++/81236 - ICE with template-id in generic lambda
jason [Tue, 29 Aug 2017 21:38:21 +0000 (21:38 +0000)] 
PR c++/81236 - ICE with template-id in generic lambda

* semantics.c (finish_id_expression): Remove special dependent case.
Avoid some later pieces when dependent.
(finish_qualified_id_expr): Do normal BASELINK handling in a
template.  Always build a SCOPE_REF for a destructor BIT_NOT_EXPR.
(parsing_default_capturing_generic_lambda_in_template): Remove.
* parser.c (cp_parser_postfix_dot_deref_expression): Always give an
error for types that will never be complete.
* mangle.c (write_expression): Add sanity check.
* tree.c (build_qualified_name): Add sanity check.
(cp_walk_subtrees): Walk into the class context of a BASELINK.
* lambda.c (add_capture): Improve diagnostic for generic lambda
capture failure.
* call.c (build_new_method_call_1): Print the right constructor
name.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251438 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago libgo: fix Stat_t on AIX
ian [Tue, 29 Aug 2017 21:00:46 +0000 (21:00 +0000)] 
libgo: fix Stat_t on AIX

    Reviewed-on: https://go-review.googlesource.com/59911

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251436 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago runtime: make go-nosys.c compile with !HAVE_SYSCALL
ian [Tue, 29 Aug 2017 20:57:20 +0000 (20:57 +0000)] 
runtime: make go-nosys.c compile with !HAVE_SYSCALL

    Reviewed-on: https://go-review.googlesource.com/59910

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251435 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agotweak ChangeLog
jason [Tue, 29 Aug 2017 20:37:54 +0000 (20:37 +0000)] 
tweak ChangeLog

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251434 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Reimplement handling of lambdas in templates.
jason [Tue, 29 Aug 2017 20:37:15 +0000 (20:37 +0000)] 
Reimplement handling of lambdas in templates.

* cp-tree.h (LAMBDA_FUNCTION_P): Check DECL_DECLARES_FUNCTION_P.
* decl.c (start_preparsed_function): Call start_lambda_scope.
(finish_function): Call finish_lambda_scope.
* init.c (get_nsdmi): Call start/finish_lambda_scope.
* lambda.c (start_lambda_scope): Only ignore VAR_DECL in a function.
* parser.c (cp_parser_function_definition_after_declarator): Don't
call start/finish_lambda_scope.
* pt.c (retrieve_specialization): Ignore lambda functions in
templates.
(find_parameter_packs_r): Ignore capture proxies.  Look into
lambdas.
(check_for_bare_parameter_packs): Allow bare packs in lambdas.
(tsubst_default_argument): Call start/finish_lambda_scope.
(tsubst_function_decl): Handle lambda functions differently.
(tsubst_template_decl): Likewise.
(tsubst_expr) [DECL_EXPR]: Skip closure declarations and capture
proxies.
(tsubst_lambda_expr): Create a new closure rather than instantiate
the one from the template.
(tsubst_copy_and_build): Don't register a specialization of a pack.
(regenerate_decl_from_template): Call start/finish_lambda_scope.
(instantiate_decl): Remove special lambda function handling.
* semantics.c (process_outer_var_ref): Remove special generic lambda
handling.  Don't implicitly capture in a lambda in a template.  Look
for an existing proxy.
* class.c (current_nonlambda_class_type): Use decl_type_context.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251433 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[gcc]
meissner [Tue, 29 Aug 2017 20:25:57 +0000 (20:25 +0000)] 
[gcc]
2017-08-29  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/82015
* config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Insure
that the second argument of the built-in functions to unpack
128-bit scalar types to 64-bit values is 0 or 1.  Change to use a
switch statement instead a lot of if statements.
* config/rs6000/rs6000.md (unpack<mode>, FMOVE128_VSX iterator):
Allow 64-bit values to be in Altivec registers as well as
traditional floating point registers.
(pack<mode>, FMOVE128_VSX iterator): Likewise.

[gcc/testsuite]
2017-08-29  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/82015
* gcc.target/powerpc/pr82015.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251432 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c++/78840 - ICE with const and nested generic lambda
jason [Tue, 29 Aug 2017 20:21:23 +0000 (20:21 +0000)] 
PR c++/78840 - ICE with const and nested generic lambda

* g++.dg/cpp1y/lambda-generic-const5.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251431 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Remove unnecessary LAMBDA_EXPR fields.
jason [Tue, 29 Aug 2017 20:17:02 +0000 (20:17 +0000)] 
Remove unnecessary LAMBDA_EXPR fields.

* cp-tree.h (LAMBDA_EXPR_CLOSURE): Use TREE_TYPE.
(LAMBDA_EXPR_RETURN_TYPE): Remove.
(struct tree_lambda_expr): Remove closure and return_type fields.
* lambda.c (build_lambda_expr): Don't set LAMBDA_EXPR_RETURN_TYPE.
* pt.c (tsubst_copy_and_build): Likewise.
* parser.c (cp_parser_lambda_declarator_opt): Track return type.
(cp_parser_lambda_body): Adjust unspecified return type check.
* ptree.c (cxx_print_lambda_node): Don't print closure or
return type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251430 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c++/80935 - wrong C++17 error with lambda
jason [Tue, 29 Aug 2017 19:51:30 +0000 (19:51 +0000)] 
PR c++/80935 - wrong C++17 error with lambda

* decl.c (check_for_uninitialized_const_var): Check
is_instantiation_of_constexpr.
* constexpr.c (ensure_literal_type_for_constexpr_object): Check
is_instantiation_of_constexpr.
(potential_constant_expression_1): Check var_in_maybe_constexpr_fn.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251429 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Various small fixes.
jason [Tue, 29 Aug 2017 19:51:23 +0000 (19:51 +0000)] 
Various small fixes.

* lambda.c (build_lambda_object): Check for error_mark_node.
* pt.c (make_pack_expansion): Set PACK_EXPANSION_LOCAL_P on the type
pack as well.
(tsubst_decl) [FUNCTION_DECL]: Set DECL_CONTEXT on the parameters.
(tsubst) [TEMPLATE_PARM_INDEX]: Check for error_mark_node.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251428 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c++/80767 - unnecessary instantiation of generic lambda
jason [Tue, 29 Aug 2017 19:40:55 +0000 (19:40 +0000)] 
PR c++/80767 - unnecessary instantiation of generic lambda

* call.c (convert_like_real): Call build_user_type_conversion_1 if
cand is null.
(add_conv_candidate): Build a ck_user conversion with no candidate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251427 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Fix lambdas in template default argument of inherited ctor.
jason [Tue, 29 Aug 2017 19:40:41 +0000 (19:40 +0000)] 
Fix lambdas in template default argument of inherited ctor.

* method.c (synthesized_method_base_walk): Replace an inherited
template with its specialization.
(synthesized_method_walk): Make inheriting_ctor a pointer.
(maybe_explain_implicit_delete, explain_implicit_non_constexpr)
(deduce_inheriting_ctor, implicitly_declare_fn): Adjust.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251426 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Adjust C++17 class deduction use of DECL_ABSTRACT_ORIGIN.
jason [Tue, 29 Aug 2017 19:40:32 +0000 (19:40 +0000)] 
Adjust C++17 class deduction use of DECL_ABSTRACT_ORIGIN.

* pt.c (build_deduction_guide): Set DECL_ABSTRACT_ORIGIN on the
template, not the function.
(template_guide_p): Adjust.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251425 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Support copying local_specializations.
jason [Tue, 29 Aug 2017 19:40:21 +0000 (19:40 +0000)] 
Support copying local_specializations.

* cp-tree.h (enum lss_policy): New.
(local_specialization_stack): Add policy parameter to default ctor.
* pt.c (local_specialization_stack): Copy local_specializations if
lss_copy.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251424 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Add immediate potential_constant_expression variants.
jason [Tue, 29 Aug 2017 19:40:14 +0000 (19:40 +0000)] 
Add immediate potential_constant_expression variants.

* constexpr.c (potential_constant_expression_1): Add "now" parm.
(is_constant_expression, require_constant_expression): New.
(is_static_init_expression, is_nondependent_constant_expression)
(is_nondependent_static_init_expression): Drop "potential".
* except.c (build_must_not_throw_expr): Do type conversion on
value-dependent argument.
* pt.c, semantics.c, typeck2.c: Use variants without "potential".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251423 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Instantiate default arguments/member initializers once.
jason [Tue, 29 Aug 2017 19:40:08 +0000 (19:40 +0000)] 
Instantiate default arguments/member initializers once.

* init.c (get_nsdmi): Remember NSDMI instantiations.
* parser.c (inject_this_parameter): Be more picky about
current_class_ptr.
* pt.c (tsubst_copy): Simplify 'this' handling.
(tsubst_default_argument): Remember default argument
instantiations.  Take parameter number.
(tsubst_default_arguments): Pass it.
* call.c (convert_default_arg): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251422 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Fix default argument conversion failure and SFINAE.
jason [Tue, 29 Aug 2017 19:39:18 +0000 (19:39 +0000)] 
Fix default argument conversion failure and SFINAE.

* call.c (build_over_call): Check convert_default_arg result for
error_mark_node.
* parser.c (cp_parser_late_parsing_default_args): Remember
error_mark_node.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251421 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago runtime: fix lfstack for 64-bit AIX
ian [Tue, 29 Aug 2017 18:59:04 +0000 (18:59 +0000)] 
runtime: fix lfstack for 64-bit AIX

    Reviewed-on: https://go-review.googlesource.com/57550

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251420 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gcc.target/i386/*.c: Remove excess braces from target selectors.
uros [Tue, 29 Aug 2017 18:28:32 +0000 (18:28 +0000)] 
* gcc.target/i386/*.c: Remove excess braces from target selectors.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251419 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoira-costs: avoid missing base registers in record_address_regs
amonakov [Tue, 29 Aug 2017 17:34:21 +0000 (17:34 +0000)] 
ira-costs: avoid missing base registers in record_address_regs

* ira-costs.c (record_address_regs): Handle both operands of PLUS for
MAX_REGS_PER_ADDRESS == 1.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251418 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gcc.target/i386/20030926-1.c: Add dg-additional-options.
uros [Tue, 29 Aug 2017 17:21:21 +0000 (17:21 +0000)] 
* gcc.target/i386/20030926-1.c: Add dg-additional-options.
* gcc.target/i386/abi-2.c: Ditto.
* gcc.target/i386/interrupt-sibcall-2.c: Ditto.
* gcc.target/i386/pr22076.c: Ditto.
* gcc.target/i386/pr37216.c: Ditto.
* gcc.target/i386/pr39431.c: Ditto.
* gcc.target/i386/pr40906-1.c: Ditto.
* gcc.target/i386/pr40906-2.c: Ditto.
* gcc.target/i386/pr43766.c: Ditto.
* gcc.target/i386/pr46226.c: Ditto.
* gcc.target/i386/pr46470.c: Ditto.
* gcc.target/i386/pr59929.c: Ditto.
* gcc.target/i386/sse-10.c: Ditto.
* gcc.target/i386/vararg-1.c: Ditto.
* gcc.target/i386/vararg-1.c: Ditto.
* gcc.target/i386/asm-6.c: Compile for fpic target only.
* gcc.target/i386/pr44223.c: Ditto.
* gcc.target/i386/bitfield1.c (dg-options): Remove target selector.
* gcc.target/i386/bitfield2.c (dg-options): Ditto.
* gcc.target/i386/pr67480.c (dg-options): Ditto.
* gcc.target/i386/vect-cond-1.c (dg-options): Ditto.
* gcc.target/i386/bittest.c (scan-assembler-times): Ditto.
* gcc.target/i386/darwin-fpmath.c (dg-do): Simplify target selector.
* gcc.target/i386/mvc9.c: Compile for lto target only.
* gcc.target/i386/pr45234.c: Compile for ia32 target only.
* gcc.target/i386/pr49866.c: Compile for lp64 target only.
* gcc.target/i386/pr57091.c: Ditto.
* gcc.target/i386/pr61599-2.c: Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251417 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/i386/i386.opt (flag_fentry): Do not init to -1.
uros [Tue, 29 Aug 2017 16:56:57 +0000 (16:56 +0000)] 
* config/i386/i386.opt (flag_fentry): Do not init to -1.
* config/i386/i386.c (ix86_option_override_internal): Simplify
setting of opts->x_flag_entry.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251416 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[gcc]
wschmidt [Tue, 29 Aug 2017 14:41:53 +0000 (14:41 +0000)] 
[gcc]

2017-08-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
    Jakub Jelinek  <jakub@redhat.com>
    Richard Biener  <rguenther@suse.de>

PR tree-optimization/81503
* gimple-ssa-strength-reduction.c (replace_mult_candidate): Ensure
folded constant fits in the target type; reorder tests for clarity.

[gcc/testsuite]

2017-08-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR tree-optimization/81503
* gcc.c-torture/execute/pr81503.c: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251414 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoMake expansion of balanced binary trees of switches on tree level.
marxin [Tue, 29 Aug 2017 14:12:44 +0000 (14:12 +0000)] 
Make expansion of balanced binary trees of switches on tree level.

2017-08-29  Martin Liska  <mliska@suse.cz>

* passes.def: Include pass_lower_switch.
* stmt.c (dump_case_nodes): Remove and move to
tree-switch-conversion.
(case_values_threshold): Likewise.
(expand_switch_as_decision_tree_p): Likewise.
(emit_case_decision_tree): Likewise.
(expand_case): Likewise.
(balance_case_nodes): Likewise.
(node_has_low_bound): Likewise.
(node_has_high_bound): Likewise.
(node_is_bounded): Likewise.
(emit_case_nodes): Likewise.
(struct simple_case_node): New struct.
(add_case_node): Remove.
(emit_case_dispatch_table): Use vector instead of case_list.
(reset_out_edges_aux): Remove.
(compute_cases_per_edge): Likewise.
(expand_case): Build list of simple_case_node.
(expand_sjlj_dispatch_table): Use it.
* tree-switch-conversion.c (struct case_node): Moved from
stmt.c and adjusted.
(emit_case_nodes): Likewise.
(node_has_low_bound): Likewise.
(node_has_high_bound): Likewise.
(node_is_bounded): Likewise.
(case_values_threshold): Likewise.
(reset_out_edges_aux): Likewise.
(compute_cases_per_edge): Likewise.
(add_case_node): Likewise.
(dump_case_nodes): Likewise.
(balance_case_nodes): Likewise.
(expand_switch_as_decision_tree_p): Likewise.
(emit_jump): Likewise.
(emit_case_decision_tree): Likewise.
(try_switch_expansion): Likewise.
(do_jump_if_equal): Likewise.
(emit_cmp_and_jump_insns): Likewise.
(fix_phi_operands_for_edge): New function.
(record_phi_operand_mapping): Likewise.
(class pass_lower_switch): New pass.
(pass_lower_switch::execute): New function.
(make_pass_lower_switch): Likewise.
(conditional_probability):
* timevar.def: Add TV_TREE_SWITCH_LOWERING.
* tree-pass.h: Add make_pass_lower_switch.
2017-08-29  Martin Liska  <mliska@suse.cz>

* gcc.dg/tree-prof/update-loopch.c: Scan patterns in
switchlower.
* gcc.dg/tree-ssa/vrp104.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251412 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR target/80993
nickc [Tue, 29 Aug 2017 13:20:54 +0000 (13:20 +0000)] 
PR target/80993
* gcc/config/msp430/msp430.c (msp430_attr): Mark interrupt
handlers as used.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251410 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-29 Richard Biener <rguenther@suse.de>
rguenth [Tue, 29 Aug 2017 12:15:57 +0000 (12:15 +0000)] 
2017-08-29  Richard Biener  <rguenther@suse.de>

* dwarf2out.c (add_dwarf_attr): When checking is enabled verify
we do not add a DW_AT_inline attribute twice.
(gen_subprogram_die): Remove code setting DW_AT_inline on
DECL_ABSTRACT_P nodes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251409 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix --help=target (Ada) (PR other/39851)
marxin [Tue, 29 Aug 2017 08:35:46 +0000 (08:35 +0000)] 
Fix --help=target (Ada) (PR other/39851)

2017-08-29  Martin Liska  <mliska@suse.cz>

PR other/39851
* gcc-interface/trans.c (Pragma_to_gnu): Set argument to NULL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251406 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoSet the call nothrow flag more often
rsandifo [Tue, 29 Aug 2017 07:47:05 +0000 (07:47 +0000)] 
Set the call nothrow flag more often

This patch sets the nothrow flag for various calls to internal functions
that are not inherently NOTHROW (and so can't be declared that way in
internal-fn.def) but that are used in contexts that can guarantee
NOTHROWness.

2017-08-29  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* gimplify.c (gimplify_call_expr): Copy the nothrow flag to
calls to internal functions.
(gimplify_modify_expr): Likewise.
* tree-call-cdce.c (use_internal_fn): Likewise.
* tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
(convert_to_divmod): Set the nothrow flag.
* tree-if-conv.c (predicate_mem_writes):  Likewise.
* tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
(vectorizable_call): Likewise.
(vectorizable_store): Likewise.
(vectorizable_load): Likewise.
* tree-vect-patterns.c (vect_recog_pow_pattern): Likewise.
(vect_recog_mask_conversion_pattern): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251401 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix --help=target (PR other/39851).
marxin [Tue, 29 Aug 2017 07:46:10 +0000 (07:46 +0000)] 
Fix --help=target (PR other/39851).

2017-08-29  Martin Liska  <mliska@suse.cz>

PR other/39851
* gcc.c (driver_handle_option): Add new argument.
* opts-common.c (handle_option): Pass
target_option_override_hook.
* opts-global.c (lang_handle_option): Add new option.
(set_default_handlers):  Add new argument.
(decode_options): Likewise.
* opts.c (target_handle_option): Likewise.
(common_handle_option): Call target_option_override_hook.
* opts.h (struct cl_option_handler_func): Add hook for
target option override.
(struct cl_option_handlers): Likewise.
(set_default_handlers): Add new argument.
(decode_options): Likewise.
(common_handle_option): Likewise.
(target_handle_option): Likewise.
* toplev.c (toplev::main): Pass targetm.target_option.override
hook.
2017-08-29  Martin Liska  <mliska@suse.cz>

PR other/39851
* c-common.c (parse_optimize_options): Add argument to function
call.
* c-pragma.c (handle_pragma_diagnostic): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251400 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-29 Richard Biener <rguenther@suse.de>
rguenth [Tue, 29 Aug 2017 07:04:31 +0000 (07:04 +0000)] 
2017-08-29  Richard Biener  <rguenther@suse.de>
Dominik Infuehr <dominik.infuehr@theobroma-systems.com>

* tree-vect-slp.c (vect_bb_slp_scalar_cost): Properly confine
life to the active subtree.

* gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251398 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * tree-ssa-dom.c (edge_info::record_simple_equiv): Call
law [Tue, 29 Aug 2017 05:03:36 +0000 (05:03 +0000)] 
* tree-ssa-dom.c (edge_info::record_simple_equiv): Call
derive_equivalences.
(derive_equivalences_from_bit_ior, record_temporary_equivalences):
Code moved into....
(edge_info::derive_equivalences): New private member function

* gcc.dg/torture/pr57214.c: Fix type of loop counter.
* gcc.dg/tree-ssa/ssa-sink-16.c: Disable DOM.
* gcc.dg/tree-ssa/ssa-dom-thread-11.c: New test.
* gcc.dg/tree-ssa/ssa-dom-thread-12.c: New test.
* gcc.dg/tree-ssa/ssa-dom-thread-13.c: New test.
* gcc.dg/tree-ssa/ssa-dom-thread-14.c: New test.
* gcc.dg/tree-ssa/ssa-dom-thread-15.c: New test.
* gcc.dg/tree-ssa/ssa-dom-thread-16.c: New test.
* gcc.dg/tree-ssa/ssa-dom-thread-17.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251397 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * tree-ssa-dom.c (class edge_info): Changed from a struct
law [Tue, 29 Aug 2017 05:03:22 +0000 (05:03 +0000)] 
* tree-ssa-dom.c (class edge_info): Changed from a struct
to a class.  Add ctor/dtor, methods and data members.
(edge_info::edge_info): Renamed from allocate_edge_info.
Initialize additional members.
(edge_info::~edge_info): New.
(free_dom_edge_info): Delete the edge info.
(record_edge_info): Use new class & associated member functions.
Tighten forms for testing for edge equivalences.
(record_temporary_equivalences): Iterate over the simple
equivalences rather than assuming there's only one per edge.
(cprop_into_successor_phis): Iterate over the simple
equivalences rather than assuming there's only one per edge.
(optimize_stmt): Use operand_equal_p rather than pointer
equality for mini-DSE code.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251396 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Tue, 29 Aug 2017 00:16:39 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251395 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-28 Janus Weil <janus@gcc.gnu.org>
janus [Mon, 28 Aug 2017 18:46:28 +0000 (18:46 +0000)] 
2017-08-28  Janus Weil  <janus@gcc.gnu.org>

PR fortran/81770
* expr.c (gfc_check_pointer_assign): Improve the check whether pointer
may outlive pointer target.

2017-08-28  Janus Weil  <janus@gcc.gnu.org>

PR fortran/81770
* gfortran.dg/warn_target_lifetime_3.f90: Fix a typo.
* gfortran.dg/warn_target_lifetime_4.f90: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251390 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-25 Steve Ellcey <sellcey@cavium.com>
sje [Mon, 28 Aug 2017 16:55:46 +0000 (16:55 +0000)] 
2017-08-25  Steve Ellcey  <sellcey@cavium.com>

* gfortran.dg/dec_init_1.f90 (dummy): Use ichar in print statement.
* gfortran.dg/dec_init_2.f90 (dummy): Ditto.
* gfortran.dg/dec_init_3.f90 (dummy): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251389 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * cp-tree.h (lang_type): Replace sorted_fields vector with
nathan [Mon, 28 Aug 2017 16:25:44 +0000 (16:25 +0000)] 
* cp-tree.h (lang_type): Replace sorted_fields vector with
bindings map.
(CLASSTYPE_SORTED_FIELDS): Delete.
(CLASSTYPE_BINDINGS): New.
* decl.c (finish_enum_value_list): Swap args of
insert_late_enum_def_bindings.
* name-lookup.c (lookup_field_1): Replace binary search of sorted
fields with map->get.
(sorted_fields_type_new, count_fields,
add_fields_to_record_type, add_enum_fields_to_record_type): Delete.
(add_class_member, add_class_members): New.
(set_class_bindings): Create map and insert.
(insert_late_enum_def_binding): Swap parms.  Use add_clasS_member.
* ptree.c (cxx_print_type): Delete sorted fields printing.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251388 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * cp-tree.h (insert_late_enum_def_into_classtype_sorted_fields):
nathan [Mon, 28 Aug 2017 14:51:45 +0000 (14:51 +0000)] 
* cp-tree.h (insert_late_enum_def_into_classtype_sorted_fields):
Delete.
* name-lookup.h (set_class_bindings,
insert_late_enum_def_bindings): Declare.
* decl.c (finish_enum_value_list): Adjust for
insert_late_enum_def_bindings name change.
* class.c (finish_struct_1): Call set_class_bindings.
(count_fields, add_fields_to_record_type,
add_enum_fields_to_record_type, sorted_fields_type_new,
insert_into_classtype_sorted_fields,
insert_late_enum_def_into_classtype_sorted_fields): Move to ...
* name-lookup.h (count_fields, add_fields_to_record_type,
add_enum_fields_to_record_type, sorted_fields_type_new,
set_class_bindings, insert_late_enum_def_bindings): ... here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251387 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gcc.c (execute): Fold SIGPIPE handling into switch
nathan [Mon, 28 Aug 2017 13:44:39 +0000 (13:44 +0000)] 
* gcc.c (execute): Fold SIGPIPE handling into switch
statement.  Adjust internal error message.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251385 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-28 Richard Biener <rguenther@suse.de>
rguenth [Mon, 28 Aug 2017 13:14:28 +0000 (13:14 +0000)] 
2017-08-28  Richard Biener  <rguenther@suse.de>

PR lto/81968
* simple-object-elf.c (simple_object_elf_copy_lto_debug_section):
Adjust field with for sh_type write, set SHF_EXCLUDE only for
removed sections.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251384 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-28 Richard Biener <rguenther@suse.de>
rguenth [Mon, 28 Aug 2017 13:13:23 +0000 (13:13 +0000)] 
2017-08-28  Richard Biener  <rguenther@suse.de>

PR debug/81993
* dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes):
Do nothing for removed DIEs.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251382 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-28 Richard Biener <rguenther@suse.de>
rguenth [Mon, 28 Aug 2017 11:42:23 +0000 (11:42 +0000)] 
2017-08-28  Richard Biener  <rguenther@suse.de>

PR tree-optimization/81977
* tree-ssa-sccvn.c (vn_reference_lookup_3): Fix look through
memcpy.

* g++.dg/torture/pr81977.C: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251378 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agooptabs: ensure mem_thread_fence is a compiler barrier
amonakov [Mon, 28 Aug 2017 10:58:45 +0000 (10:58 +0000)] 
optabs: ensure mem_thread_fence is a compiler barrier

PR target/80640
* doc/md.texi (mem_thread_fence): Remove mention of mode.  Rewrite.
* optabs.c (expand_mem_thread_fence): Emit a compiler barrier when
using targetm.gen_mem_thread_fence.
testsuite/
* gcc.dg/atomic/pr80640.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251377 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
jvdelisle [Mon, 28 Aug 2017 03:42:47 +0000 (03:42 +0000)] 
2017-08-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/78387
* io/list_read.c (nml_read_obj): Remove use of stash.
* io/transfer.c (st_read_done, st_write_done): Likewise.
* io/unit.c (stash_internal_unit): Delete function.
(get_unit): Remove use of stash.
(init_units): Likewise.
(close_units): Likewise.
* io/write.c (nml_write_obj): Likewise:

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251374 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Mon, 28 Aug 2017 00:16:28 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251373 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR target/81995
uros [Sun, 27 Aug 2017 18:01:46 +0000 (18:01 +0000)] 
PR target/81995
* config/i386/i386.md (*<btsc><mode>): Change operand 2
predicate to register_operand.  Reorder operands.
(*btr<mode>): Ditto.
(*<btsc><mode>_mask): Change operand 3 predicate to register_operand.
(*btr<mode>_mask): Ditto.

testsuite/ChangeLog:

PR target/81995
* gcc.target/i386/pr46091-4.c: Add -mregparm=2 for 32bit targets.
* gcc.target/i386/pr46091-4a.c: Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251369 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-27 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Sun, 27 Aug 2017 08:01:25 +0000 (08:01 +0000)] 
2017-08-27  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/81974
* frontend-passes (inline_matumul_assign):  Explicity
set typespec for call to CONJG.

2017-08-27  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/81974
* gfortran.dg/inline_matmul_19.f90:  New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251368 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Sun, 27 Aug 2017 00:16:41 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251367 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Sat, 26 Aug 2017 00:16:46 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251362 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPart 3/3 for contributing PPC64LE support for X86 SSE instrisics.
munroesj [Fri, 25 Aug 2017 15:23:27 +0000 (15:23 +0000)] 
Part 3/3 for contributing PPC64LE support for X86 SSE instrisics.
This patch includes testsuite/gcc.target tests for the intrinsics
in xmmintrin.h.  For these tests I added -Wno-psabi to dg-options
to suppress warnings associated with the vector ABI change in GCC5.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251357 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPart 2/3 for contributing PPC64LE support for X86 SSE
munroesj [Fri, 25 Aug 2017 15:11:50 +0000 (15:11 +0000)] 
Part 2/3 for contributing PPC64LE support for X86 SSE
instrisics. This patch includes the new (for PPC) xmmintrin.h,
changes x86intrin.h to include xmmintrin.h and associated
config.gcc changes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251356 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-25 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
wschmidt [Fri, 25 Aug 2017 15:08:30 +0000 (15:08 +0000)] 
2017-08-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR target/81504
* config/rs6000/rs6000-p8swap.c (find_alignment_op): Add reference
parameter and_insn and return it.
(recombine_lvx_pattern): Insert a copy to ensure availability of
the base register of the copied masking operation at the point of
the instruction replacement.
(recombine_stvx_pattern): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251355 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[gcc]
meissner [Fri, 25 Aug 2017 13:07:10 +0000 (13:07 +0000)] 
[gcc]
2017-08-24  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete
undocumented switches.
(-mpower9-dform-vector): Likewise.
(-mpower9-dform): Likewise.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
comments to delete references to -mpower9-dform* switches.
* config/rs6000/predicates.md (vsx_quad_dform_memory_operand):
Delete reference to -mpower9-dform* switches, test for
-mpower9-vector instead.
* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise.
(OTHER_P9_VECTOR_MASKS): Likewise.
(POWERPC_MASKS): Likewise.
* config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change
tests against -mpower9-dform* to -mpower9-vector.  Delete code
that checked for -mpower9-dform* consistancy with other options.
Add test for -mpower9-misc to enable other power9 switches.
(rs6000_init_hard_regno_mode_ok): Likewise.
(rs6000_option_override_internal): Likewise.
(rs6000_emit_prologue): Likewise.
(rs6000_emit_epilogue): Likewise.
(rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}.
(rs6000_disable_incompatiable_switches): Delete -mpower9-dform.
(emit_fusion_p9_load): Change tests for -mpower9-dform-scalar
-mpower9-vector.
(emit_fusion_p9_store): Likewise.
* config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete
resetting these macros if the assembler does not support ISA 3.0
instructions.
(TARGET_P9_DFORM_VECTOR): Likewise.
* config/rs6000/rs6000.md (peepholes to optimize altivec memory):
Change to use -mpower9-vector instead of -mpower9-dform-scalar.

[gcc/testsuite]
2017-08-24  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/dform-1.c: Delete -mpower9-dform*
options.
* gcc.target/powerpc/dform-2.c: Likewise.
* gcc.target/powerpc/dform-3.c: Likewise.
* gcc.target/powerpc/pr71656-1.c: Likewise.
* gcc.target/powerpc/pr71656-2.c: Likewise.
* gcc.target/powerpc/pr80103-1.c: Likewise.
* gcc.target/powerpc/pr80098-1.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251352 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoRetabify 2017-08-24 Richard Biener <rguenther@suse.de>
nathan [Fri, 25 Aug 2017 12:32:54 +0000 (12:32 +0000)] 
Retabify 2017-08-24  Richard Biener  <rguenther@suse.de>
PR target/81921

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251351 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * class.c (method_name_cmp, resort_method_name_cmp): Method names
nathan [Fri, 25 Aug 2017 12:27:48 +0000 (12:27 +0000)] 
* class.c (method_name_cmp, resort_method_name_cmp): Method names
can never be NULL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251350 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR81747, ICE in operator[]
amodra [Fri, 25 Aug 2017 12:21:00 +0000 (12:21 +0000)] 
PR81747, ICE in operator[]

PR rtl-optimization/81747
* cse.c (cse_extended_basic_block): Don't attempt to record
equivalences for degenerate conditional branches that branch
to their fall-through.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251349 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Conversion operators have a special name
nathan [Fri, 25 Aug 2017 11:37:10 +0000 (11:37 +0000)] 
Conversion operators have a special name
* cp-tree.h (CPTI_CONV_OP_MARKER, CPTI_CONV_OP_IDENTIFIER): New.
(conv_op_marker, conv_op_identifier): New.
(CLASSTYPE_FIRST_CONVERSION_SLOT): Delete.
* decl.c (initialize_predefined_identifiers): Add
conv_op_identifier.
(cxx_init_decl_processing): Create conv_op_marker.
* decl2.c (check_classfn): Lookup conv-ops by name.
* class.c (add_method): Use conv_op_identifier & conv_op_marker.
(resort_type_method_vec): Don't skip conv-ops.
(finish_struct_methods, warn_hidden): Likewise.
* name-lookup.h (lookup_all_conversions): Delete.
* name-lookup.c (lookup_conversion_operator): Replace with ...
(extract_conversion_operator): ... this.
(lookup_fnfields_slot_nolazy): Find conv-ops by name.
(lookup_all_conversions): Delete.
* pt.c (check_explicit_specialization): Find conv-ops by name.
* search.c (lookup_conversions_r): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251348 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR middle-end/81908 - FAIL: gfortran.dg/alloc_comp_auto_array_2.f90 -O3 -g -m32
msebor [Fri, 25 Aug 2017 00:25:57 +0000 (00:25 +0000)] 
PR middle-end/81908 - FAIL: gfortran.dg/alloc_comp_auto_array_2.f90 -O3 -g -m32

gcc/ChangeLog:

PR middle-end/81908
* gimple-fold.c (size_must_be_zero_p): New function.
(gimple_fold_builtin_memory_op): Call it.

gcc/testsuite/ChangeLog:

PR middle-end/81908
* gcc.dg/tree-ssa/builtins-folding-gimple-2.c: New test.
* gcc.dg/tree-ssa/builtins-folding-gimple-3.c: New test.
* gcc.dg/tree-ssa/pr81908.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251347 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Fri, 25 Aug 2017 00:16:43 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251346 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-24 François Dumont <fdumont@gcc.gnu.org>
fdumont [Thu, 24 Aug 2017 20:31:53 +0000 (20:31 +0000)] 
2017-08-24  François Dumont  <fdumont@gcc.gnu.org>

* include/bits/stl_list.h
[!_GLIBCXX_INLINE_VERSION](_List_base<>::_S_distance): Remove.
(_List_impl(_Node_alloc_type&&, _List_impl&&)): New.
(_List_base(_Node_alloc_type&&, _List_base&&)): New, use latter.
[!_GLIBCXX_INLINE_VERSION](_List_base(_Node_alloc_type&&,_List_base&&)):
Remove.
(_List_base(_Node_alloc_type&&)): New.
[!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_distance): Remove.
[!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_node_count): Remove.
(list<>::_M_node_count): New.
(list<>::size()): Adapt to call latter.
(list<>::_S_distance(const_iterator, const_iterator)): New.
(list<>::splice(iterator, list&, const_iterator, const_iterator)):
Adapt to call latter.
(list(list&&, const allocator_type&, true_type)): New.
(list(list&&, const allocator_type&, false_type)): New.
(list(list&&, const allocator_type&)): Adapt to call latters.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251342 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[gcc]
meissner [Thu, 24 Aug 2017 19:28:07 +0000 (19:28 +0000)] 
[gcc]
2017-08-24  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete
undocumented switches.
(-mpower9-dform-vector): Likewise.
(-mpower9-dform): Likewise.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
comments to delete references to -mpower9-dform* switches.
* config/rs6000/predicates.md (vsx_quad_dform_memory_operand):
Delete reference to -mpower9-dform* switches, test for
-mpower9-vector instead.
* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise.
(OTHER_P9_VECTOR_MASKS): Likewise.
(POWERPC_MASKS): Likewise.
* config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change
tests against -mpower9-dform* to -mpower9-vector.  Delete code
that checked for -mpower9-dform* consistancy with other options.
Add test for -mpower9-misc to enable other power9 switches.
(rs6000_init_hard_regno_mode_ok): Likewise.
(rs6000_option_override_internal): Likewise.
(rs6000_emit_prologue): Likewise.
(rs6000_emit_epilogue): Likewise.
(rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}.
(rs6000_disable_incompatiable_switches): Delete -mpower9-dform.
(emit_fusion_p9_load): Change tests for -mpower9-dform-scalar
-mpower9-vector.
(emit_fusion_p9_store): Likewise.
* config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete
resetting these macros if the assembler does not support ISA 3.0
instructions.
(TARGET_P9_DFORM_VECTOR): Likewise.
* config/rs6000/rs6000.md (peepholes to optimize altivec memory):
Change to use -mpower9-vector instead of -mpower9-dform-scalar.

[gcc/testsuite]
2017-08-24  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/dform-1.c: Delete -mpower9-dform*
options.
* gcc.target/powerpc/dform-2.c: Likewise.
* gcc.target/powerpc/dform-3.c: Likewise.
* gcc.target/powerpc/pr71656-1.c: Likewise.
* gcc.target/powerpc/pr71656-2.c: Likewise.
* gcc.target/powerpc/pr80103-1.c: Likewise.
* gcc.target/powerpc/pr80098-1.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251341 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Conversion operators kept on single overload set
nathan [Thu, 24 Aug 2017 18:39:41 +0000 (18:39 +0000)] 
Conversion operators kept on single overload set
* class.c (add_method): Keep all conv-ops on one slot.
* name-lookup.c (lookup_conversion_operator): Pull the desired
conv op out of overload set.
* search.c (lookup_conversions_r): Lose template/non-template
distinction.
(lookup_conversions): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251340 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoAdds the powerpc equivalent mm_malloc.h header which is needed by
munroesj [Thu, 24 Aug 2017 17:46:01 +0000 (17:46 +0000)] 
Adds the powerpc equivalent mm_malloc.h header which is needed by
xmmintrin.h and cleans up some noisy warnings from the previous MMX
commit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251339 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * lib/target-supports.exp: Group together target-dependant checks.
uros [Thu, 24 Aug 2017 17:19:50 +0000 (17:19 +0000)] 
* lib/target-supports.exp: Group together target-dependant checks.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251338 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR tree-optimization/81913
amker [Thu, 24 Aug 2017 15:38:39 +0000 (15:38 +0000)] 
PR tree-optimization/81913
* tree-ssa-loop-niter.c (number_of_iterations_cond): Skip niter
analysis when either IVs in condition can wrap.

gcc/testsuite
* gcc.c-torture/execute/pr81913.c: New test.
* gcc.dg/tree-ssa/loop-niter-1.c: New test.
* gcc.dg/tree-ssa/loop-niter-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251337 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoC: fix logic within c_expr::get_location
dmalcolm [Thu, 24 Aug 2017 14:28:16 +0000 (14:28 +0000)] 
C: fix logic within c_expr::get_location

In r251239 I added a c_expr::get_location method for use by
c_parser_expr_list for building the vec<location_t> for
an expression list, rather than using the location of the first token.

When determining whether to use the location within the tree node,
or fall back to the range in the c_expr, I used EXPR_CAN_HAVE_LOCATION,
rather than EXPR_HAS_LOCATION.  This meant that any tree nodes of kinds
that *can* have a location but which erroneously had
   EXPR_LOCATION (value) == UNKNOWN_LOCATION
had that value added to the vec<location_t>, leading to missing
location information when reporting on the issue
(seen with gcc.dg/Wtraditional-conversion-2.c for m68k).

This patch addresses this in two ways:

(a) it fixes the specific issue in this failing test case, by
    setting up the location properly on the EXCESS_PRECISION_EXPR.

(b) updating c_expr::get_location by only using the EXPR_LOCATION
    if it's sane.  Arguably this is papering over bugs, but they are
    pre-existing ones exposed by r251239, and I'd rather have this
    fix in place than play whack-a-mole on any other such "missing
    location" bugs that are lurking in the codebase.

gcc/c/ChangeLog:
* c-tree.h (c_expr::get_location) Use EXPR_HAS_LOCATION rather
than CAN_HAVE_LOCATION_P when determining whether to use the
location_t value within "value".

gcc/c-family/ChangeLog:
* c-lex.c (interpret_float): Use token location
when building an EXCESS_PRECISION_EXPR.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251335 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * dwarf2out.c (MAX_ARTIFICIAL_LABEL_BYTES): Increase to 40.
uros [Thu, 24 Aug 2017 14:18:57 +0000 (14:18 +0000)] 
* dwarf2out.c (MAX_ARTIFICIAL_LABEL_BYTES): Increase to 40.
* dwarf2cfi.c (MAX_ARTIFICIAL_LABEL_BYTES): Remove.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251334 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-23 Richard Biener <rguenther@suse.de>
rguenth [Thu, 24 Aug 2017 13:44:35 +0000 (13:44 +0000)] 
2017-08-23  Richard Biener  <rguenther@suse.de>

        PR target/81921
        * targhooks.c (default_target_can_inline_p): Properly
        use target_option_default_node when no DECL_FUNCTION_SPECIFIC_TARGET
        is present and always compare.
        * config/i386/i386.c (ix86_valid_target_attribute_tree): Do not
imply -mfpmath=sse from TARGET_SSE_P.
        (ix86_can_inline_p): Properly use target_option_default_node when
        no DECL_FUNCTION_SPECIFIC_TARGET is present and always compare.

* gcc.target/i386/pr81921.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251333 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-24 Richard Biener <rguenther@suse.de>
rguenth [Thu, 24 Aug 2017 13:41:51 +0000 (13:41 +0000)] 
2017-08-24  Richard Biener  <rguenther@suse.de>

PR debug/81936
* dwarf2out.c (output_die): Handle flag_generate_offload like
flag_generate_lto.
(output_comp_unit): Likewise.
(gen_array_type_die): Likewise.
(dwarf2out_early_finish): Likewise.
(note_variable_value_in_expr): Likewise.
(dwarf2out_finish): Likewise.  Adjust assert.
* cgraphunit.c (symbol_table::compile): Move setting of
flag_generate_offload earlier ...
(symbol_table::finalize_compilation_unit): ... here, before
early debug finalization.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251332 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-08-24 Richard Biener <rguenther@suse.de>
rguenth [Thu, 24 Aug 2017 12:22:30 +0000 (12:22 +0000)] 
2017-08-24  Richard Biener  <rguenther@suse.de>

* config/i386/i386.c: Include symbol-summary.h, ipa-prop.h
and ipa-fnsummary.h.
(ix86_can_inline_p): When ix86_fpmath flags do not match
check whether the callee uses FP math at all.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251330 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR middle-end/81931
aldyh [Thu, 24 Aug 2017 11:40:55 +0000 (11:40 +0000)] 
PR middle-end/81931
* tree-ssanames.c (get_nonzero_bits): Use element_precision
instead of TYPE_PRECISION.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251328 138bc75d-0d04-0410-961f-82ee72b054a4