156922 Commits

Author SHA1 Message Date
Andreas Tobler
eb484969f6 config.gcc (armv7*-*-freebsd*): New target.
2017-10-10  Andreas Tobler  <andreast@gcc.gnu.org>

    * config.gcc (armv7*-*-freebsd*): New target.
    (armv6*-*-freebsd*): Remove obsolete TARGET_FREEBSD_ARMv6 define.

From-SVN: r253602
2017-10-10 20:33:48 +02:00
Jason Merrill
84dd815ff8 More delayed lambda capture fixes.
* call.c (add_function_candidate): Use build_address.
	(build_op_call_1): Call mark_lvalue_use early.
	(build_over_call): Handle error from build_this.
	* constexpr.c (cxx_bind_parameters_in_call): Use build_address.
	(cxx_eval_increment_expression): Don't use rvalue().
	* cvt.c (convert_to_void): Use mark_discarded_use.
	* expr.c (mark_use): Handle PARM_DECL, NON_DEPENDENT_EXPR.  Fix
	reference handling.  Don't copy the expression.
	(mark_discarded_use): New.
	* lambda.c (insert_capture_proxy): Add some sanity checking.
	(maybe_add_lambda_conv_op): Set cp_unevaluated_operand.
	* pt.c (register_local_specialization): Add sanity check.
	* semantics.c (process_outer_var_ref): Fix check for existing proxy.
	* typeck.c (cp_build_addr_expr_1): Handle error from
	mark_lvalue_use.
	(cp_build_modify_expr): Call mark_lvalue_use_nonread, handle error
	from rvalue.

	Handle generic lambda capture in dependent expressions.
	* lambda.c (need_generic_capture, dependent_capture_r)
	(do_dependent_capture): New.
	* pt.c (processing_nonlambda_template): Use need_generic_capture.
	* semantics.c (maybe_cleanup_point_expr)
	(maybe_cleanup_point_expr_void, finish_goto_stmt)
	(maybe_convert_cond): Call do_dependent_capture.
	* typeck.c (build_static_cast): Remove dependent capture handling.

From-SVN: r253601
2017-10-10 14:04:02 -04:00
Jason Merrill
e1bea3412a Various small C++ fixes.
* typeck.c (condition_conversion): Assert !processing_template_decl.
	* semantics.c (finish_omp_clauses): Don't
	fold_build_cleanup_point_expr if processing_template_decl.
	(outer_var_p): A temporary can't be from an outer scope.
	* pt.c (type_dependent_expression_p): Fix dependency checking of
	functions without DECL_TEMPLATE_INFO.
	(instantiate_decl): Use lss_copy.
	* constexpr.c (is_valid_constexpr_fn): Fix lambdas before C++17.

From-SVN: r253600
2017-10-10 14:03:56 -04:00
Jason Merrill
4d612bfde8 Check non-dependent conversion in return from template fn.
* typeck.c (check_return_expr): Check non-dependent conversion in
	templates.
	* constraint.cc (check_function_concept): Don't complain about an
	empty concept if seen_error.

From-SVN: r253599
2017-10-10 14:03:22 -04:00
Jan Hubicka
3652a4d243 x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI, [...]): Move to right spot in the file.
* x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI, X86_TUNE_ADJUST_UNROLL,
	X86_TUNE_ONE_IF_CONV_INSN): Move to right spot in the file.

From-SVN: r253598
2017-10-10 17:47:35 +00:00
Will Schmidt
f1e2a00403 fold-vec-cmp-char.c: New.
[testsuite]

2017-10-10  Will Schmidt <will_schmidt@vnet.ibm.com>
	* gcc.target/powerpc/fold-vec-cmp-char.c: New.
	* gcc.target/powerpc/fold-vec-cmp-double.c: New.
	* gcc.target/powerpc/fold-vec-cmp-float.c: New.
	* gcc.target/powerpc/fold-vec-cmp-int.c: New.
	* gcc.target/powerpc/fold-vec-cmp-longlong.c: New.
	* gcc.target/powerpc/fold-vec-cmp-short.c: New.

From-SVN: r253597
2017-10-10 17:41:02 +00:00
Richard Sandiford
8e6cdc90d4 Require wi::to_wide for trees
The wide_int routines allow things like:

   wi::add (t, 1)

to add 1 to an INTEGER_CST T in its native precision.  But we also have:

   wi::to_offset (t)      // Treat T as an offset_int
   wi::to_widest (t)      // Treat T as a widest_int

Recently we also gained:

   wi::to_wide (t, prec)  // Treat T as a wide_int in preccision PREC

This patch therefore requires:

   wi::to_wide (t)

when operating on INTEGER_CSTs in their native precision.  This is
just as efficient, and makes it clearer that a deliberate choice is
being made to treat the tree as a wide_int in its native precision.
This also removes the inconsistency that

a) INTEGER_CSTs in their native precision can be used without an accessor
   but must use wi:: functions instead of C++ operators

b) the other forms need an explicit accessor but the result can be used
   with C++ operators.

It also helps with SVE, where there's the additional possibility
that the tree could be a runtime value.

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

gcc/
	* wide-int.h (wide_int_ref_storage): Make host_dependent_precision
	a template parameter.
	(WIDE_INT_REF_FOR): Update accordingly.
	* tree.h (wi::int_traits <const_tree>): Delete.
	(wi::tree_to_widest_ref, wi::tree_to_offset_ref): New typedefs.
	(wi::to_widest, wi::to_offset): Use them.  Expand commentary.
	(wi::tree_to_wide_ref): New typedef.
	(wi::to_wide): New function.
	* calls.c (get_size_range): Use wi::to_wide when operating on
	trees as wide_ints.
	* cgraph.c (cgraph_node::create_thunk): Likewise.
	* config/i386/i386.c (ix86_data_alignment): Likewise.
	(ix86_local_alignment): Likewise.
	* dbxout.c (stabstr_O): Likewise.
	* dwarf2out.c (add_scalar_info, gen_enumeration_type_die): Likewise.
	* expr.c (const_vector_from_tree): Likewise.
	* fold-const-call.c (host_size_t_cst_p, fold_const_call_1): Likewise.
	* fold-const.c (may_negate_without_overflow_p, negate_expr_p)
	(fold_negate_expr_1, int_const_binop_1, const_binop)
	(fold_convert_const_int_from_real, optimize_bit_field_compare)
	(all_ones_mask_p, sign_bit_p, unextend, extract_muldiv_1)
	(fold_div_compare, fold_single_bit_test, fold_plusminus_mult_expr)
	(pointer_may_wrap_p, expr_not_equal_to, fold_binary_loc)
	(fold_ternary_loc, multiple_of_p, fold_negate_const, fold_abs_const)
	(fold_not_const, round_up_loc): Likewise.
	* gimple-fold.c (gimple_fold_indirect_ref): Likewise.
	* gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Likewise.
	(alloca_call_type): Likewise.
	* gimple.c (preprocess_case_label_vec_for_gimple): Likewise.
	* godump.c (go_output_typedef): Likewise.
	* graphite-sese-to-poly.c (tree_int_to_gmp): Likewise.
	* internal-fn.c (get_min_precision): Likewise.
	* ipa-cp.c (ipcp_store_vr_results): Likewise.
	* ipa-polymorphic-call.c
	(ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
	* ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise.
	(ipa_modify_call_arguments): Likewise.
	* match.pd: Likewise.
	* omp-low.c (scan_omp_1_op, lower_omp_ordered_clauses): Likewise.
	* print-tree.c (print_node_brief, print_node): Likewise.
	* stmt.c (expand_case): Likewise.
	* stor-layout.c (layout_type): Likewise.
	* tree-affine.c (tree_to_aff_combination): Likewise.
	* tree-cfg.c (group_case_labels_stmt): Likewise.
	* tree-data-ref.c (dr_analyze_indices): Likewise.
	(prune_runtime_alias_test_list): Likewise.
	* tree-dump.c (dequeue_and_dump): Likewise.
	* tree-inline.c (remap_gimple_op_r, copy_tree_body_r): Likewise.
	* tree-predcom.c (is_inv_store_elimination_chain): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree-scalar-evolution.c (iv_can_overflow_p): Likewise.
	(simple_iv_with_niters): Likewise.
	* tree-ssa-address.c (addr_for_mem_ref): Likewise.
	* tree-ssa-ccp.c (ccp_finalize, evaluate_stmt): Likewise.
	* tree-ssa-loop-ivopts.c (constant_multiple_of): Likewise.
	* tree-ssa-loop-niter.c (split_to_var_and_offset)
	(refine_value_range_using_guard, number_of_iterations_ne_max)
	(number_of_iterations_lt_to_ne, number_of_iterations_lt)
	(get_cst_init_from_scev, record_nonwrapping_iv)
	(scev_var_range_cant_overflow): Likewise.
	* tree-ssa-phiopt.c (minmax_replacement): Likewise.
	* tree-ssa-pre.c (compute_avail): Likewise.
	* tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
	(vn_reference_maybe_forwprop_address, valueized_wider_op): Likewise.
	* tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise.
	* tree-ssa-uninit.c (is_pred_expr_subset_of): Likewise.
	* tree-ssanames.c (set_nonzero_bits, get_nonzero_bits): Likewise.
	* tree-switch-conversion.c (collect_switch_conv_info, array_value_type)
	(dump_case_nodes, try_switch_expansion): Likewise.
	* tree-vect-loop-manip.c (vect_gen_vector_loop_niters): Likewise.
	(vect_do_peeling): Likewise.
	* tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
	* tree-vect-stmts.c (vectorizable_load): Likewise.
	* tree-vrp.c (compare_values_warnv, vrp_int_const_binop): Likewise.
	(zero_nonzero_bits_from_vr, ranges_from_anti_range): Likewise.
	(extract_range_from_binary_expr_1, adjust_range_with_scev): Likewise.
	(overflow_comparison_p_1, register_edge_assert_for_2): Likewise.
	(is_masked_range_test, find_switch_asserts, maybe_set_nonzero_bits)
	(vrp_evaluate_conditional_warnv_with_ops, intersect_ranges): Likewise.
	(range_fits_type_p, two_valued_val_range_p, vrp_finalize): Likewise.
	(evrp_dom_walker::before_dom_children): Likewise.
	* tree.c (cache_integer_cst, real_value_from_int_cst, integer_zerop)
	(integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2)
	(tree_floor_log2, tree_ctz, mem_ref_offset, tree_int_cst_sign_bit)
	(tree_int_cst_sgn, get_unwidened, int_fits_type_p): Likewise.
	(get_type_static_bounds, num_ending_zeros, drop_tree_overflow)
	(get_range_pos_neg): Likewise.
	* ubsan.c (ubsan_expand_ptr_ifn): Likewise.
	* config/darwin.c (darwin_mergeable_constant_section): Likewise.
	* config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise.
	* config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise.
	* config/avr/avr.c (avr_fold_builtin): Likewise.
	* config/bfin/bfin.c (bfin_local_alignment): Likewise.
	* config/msp430/msp430.c (msp430_attr): Likewise.
	* config/nds32/nds32.c (nds32_insert_attributes): Likewise.
	* config/powerpcspe/powerpcspe-c.c
	(altivec_resolve_overloaded_builtin): Likewise.
	* config/powerpcspe/powerpcspe.c (rs6000_aggregate_candidate)
	(rs6000_expand_ternop_builtin): Likewise.
	* config/rs6000/rs6000-c.c
	(altivec_resolve_overloaded_builtin): Likewise.
	* config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise.
	(rs6000_expand_ternop_builtin): Likewise.
	* config/s390/s390.c (s390_handle_hotpatch_attribute): Likewise.

gcc/ada/
	* gcc-interface/decl.c (annotate_value): Use wi::to_wide when
	operating on trees as wide_ints.

gcc/c/
	* c-parser.c (c_parser_cilk_clause_vectorlength): Use wi::to_wide when
	operating on trees as wide_ints.
	* c-typeck.c (build_c_cast, c_finish_omp_clauses): Likewise.
	(c_tree_equal): Likewise.

gcc/c-family/
	* c-ada-spec.c (dump_generic_ada_node): Use wi::to_wide when
	operating on trees as wide_ints.
	* c-common.c (pointer_int_sum): Likewise.
	* c-pretty-print.c (pp_c_integer_constant): Likewise.
	* c-warn.c (match_case_to_enum_1): Likewise.
	(c_do_switch_warnings): Likewise.
	(maybe_warn_shift_overflow): Likewise.

gcc/cp/
	* cvt.c (ignore_overflows): Use wi::to_wide when
	operating on trees as wide_ints.
	* decl.c (check_array_designated_initializer): Likewise.
	* mangle.c (write_integer_cst): Likewise.
	* semantics.c (cp_finish_omp_clause_depend_sink): Likewise.

gcc/fortran/
	* target-memory.c (gfc_interpret_logical): Use wi::to_wide when
	operating on trees as wide_ints.
	* trans-const.c (gfc_conv_tree_to_mpz): Likewise.
	* trans-expr.c (gfc_conv_cst_int_power): Likewise.
	* trans-intrinsic.c (trans_this_image): Likewise.
	(gfc_conv_intrinsic_bound): Likewise.
	(conv_intrinsic_cobound): Likewise.

gcc/lto/
	* lto.c (compare_tree_sccs_1): Use wi::to_wide when
	operating on trees as wide_ints.

gcc/objc/
	* objc-act.c (objc_decl_method_attributes): Use wi::to_wide when
	operating on trees as wide_ints.

From-SVN: r253595
2017-10-10 16:55:34 +00:00
Thomas Koenig
3934b625ee re PR libfortran/82233 (execute_command_line causes program to stop when command fails (or does not exist))
2017-10-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/82233
	* intrinsics/execute_command_line.c (execute_command_line):
	No call to runtime_error if cmdstat is present.

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

	PR libfortran/82233
	* gfortran.dg/execute_command_line_3.f90: New test.

From-SVN: r253593
2017-10-10 16:49:32 +00:00
Will Schmidt
53befce7f2 |-------* gcc.target/powerpc/fold-vec-splat-16.c: New |-------* gcc.target/powerpc/fold-vec-splat-32.c: New.
2017-10-10  Will Schmidt  <will_schmidt@vnet.ibm.com>

[testsuite]
|-------* gcc.target/powerpc/fold-vec-splat-16.c: New
|-------* gcc.target/powerpc/fold-vec-splat-32.c: New.
|-------* gcc.target/powerpc/fold-vec-splat-8.c: New.

From-SVN: r253591
2017-10-10 16:32:54 +00:00
Will Schmidt
0ec8f0c6d6 fold-vec-splats-char.c: New.
[testsuite]

2017-10-10  Will Schmidt <will_schmidt@vnet.ibm.com>

	* gcc.target/powerpc/fold-vec-splats-char.c: New.
	* gcc.target/powerpc/fold-vec-splats-floatdouble.c: New.
	* gcc.target/powerpc/fold-vec-splats-int.c: New.
	* gcc.target/powerpc/fold-vec-splats-longlong.c: New.
	* gcc.target/powerpc/fold-vec-splats-short.c: New.

From-SVN: r253590
2017-10-10 16:26:03 +00:00
Jakub Jelinek
802b38c91f re PR c/82437 (false-positive -Wtautological-compare warning with -std=gnu89)
PR c/82437
	* c-warn.c (warn_tautological_bitwise_comparison): Use wi::to_wide
	instead of wide_int::from.

	* c-c++-common/Wtautological-compare-7.c: New test.

From-SVN: r253589
2017-10-10 18:17:47 +02:00
Nathan Sidwell
a6a5091a56 [C++ PATCH] set_global_binding tweak
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00592.html
	* name-lookup.c (set_global_binding): Don't deal with STAT_HACK.

From-SVN: r253587
2017-10-10 14:48:34 +00:00
Bin Cheng
2fe1a1b888 tree-vect-loop-manip.c (rename_variables_in_bb): Rename PHI nodes when copying loop nest with only one inner loop.
* tree-vect-loop-manip.c (rename_variables_in_bb): Rename PHI nodes
	when copying loop nest with only one inner loop.

	gcc/testsuite
	* gcc.dg/tree-ssa/ldist-34.c: New test.

From-SVN: r253586
2017-10-10 13:58:30 +00:00
Richard Biener
fb1fe1f3cc tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Avoid compacting blocks if SCEV is active.
2017-10-10  Richard Biener  <rguenther@suse.de>

	* tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Avoid compacting
	blocks if SCEV is active.
	* tree-scalar-evolution.c (analyze_scalar_evolution_1): Remove
	dead code.
	(analyze_scalar_evolution): Handle cached evolutions the obvious way.
	(scev_initialize): Assert we are not yet initialized.

From-SVN: r253585
2017-10-10 13:26:15 +00:00
Ed Schonberg
0c6ddd1dde class_wide4.adb: Fix a typo.
gcc/testsuite/

	* gnat.dg/class_wide4.adb: Fix a typo.

Also add ChangeLog entries missing from previous commits.

From-SVN: r253584
2017-10-10 13:23:33 +00:00
Jakub Jelinek
c64c738636 update_version_svn: Ignore the GCC 5 branch.
* update_version_svn: Ignore the GCC 5 branch.
	* crontab: Remove entry for the GCC 5 branch.

From-SVN: r253583
2017-10-10 15:10:28 +02:00
Jonathan Wakely
0e7300bb80 Update comment referring to status of LWG issue 111
* include/bits/streambuf_iterator.h (istreambuf_iterator::equal):
	Update comment about NAD issue.

From-SVN: r253582
2017-10-10 12:26:10 +01:00
Jonathan Wakely
5d2b807526 PR libstdc++/82417 do not include C99 <complex.h> in strict modes
As an extension the C++ version of <complex.h> includes the C version,
but that defines macros with non-reserved names that should not be
defined in ISO C++. Only include the C header for non-strict modes, or
for pre-C++11 (because C++98 doesn't mention <complex.h> at all).

	PR libstdc++/59087
	PR libstdc++/82417
	* include/c_compatibility/complex.h [!C++98 && __STRICT_ANSI__]: Do
	not include C library's <complex.h>.
	* testsuite/26_numerics/complex/c99.cc: Depend on __STRICT_ANSI__.
	* testsuite/26_numerics/headers/complex.h/std_c++11.h: New test.
	* testsuite/26_numerics/headers/complex.h/std_gnu++11.h: New test.
	* testsuite/26_numerics/headers/complex.h/std_c++98.h: New test.

From-SVN: r253581
2017-10-10 12:25:45 +01:00
Bin Cheng
efe040bf21 tree-loop-distribution.c (generate_loops_for_partition): Remove inner loop's exit stmt by making it always exit the loop...
* tree-loop-distribution.c (generate_loops_for_partition): Remove
	inner loop's exit stmt by making it always exit the loop, otherwise
	we would generate an infinite empty loop.

	gcc/testsuite
	* gcc.dg/tree-ssa/ldist-27.c: New test.

From-SVN: r253580
2017-10-10 09:02:13 +00:00
Bin Cheng
166b87998a tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Skip renaming variables in new preheader if it's deleted.
* tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Skip
	renaming variables in new preheader if it's deleted.

From-SVN: r253579
2017-10-10 08:59:23 +00:00
Bin Cheng
9239436cae tree-loop-distribution.c (struct partition): Remove unused field loops of the structure.
* tree-loop-distribution.c (struct partition): Remove unused field
	loops of the structure.
	(partition_alloc, partition_free): Ditto.
	(build_rdg_partition_for_vertex): Ditto.

From-SVN: r253578
2017-10-10 08:57:21 +00:00
Jeff Law
599bffa2f5 targhooks.c (default_stack_clash_protection_final_dynamic_probe): Fix return type to match prototype and documentation.
* targhooks.c (default_stack_clash_protection_final_dynamic_probe): Fix
	return type to match prototype and documentation.

From-SVN: r253575
2017-10-10 00:42:08 -06:00
GCC Administrator
7d25736fb6 Daily bump.
From-SVN: r253574
2017-10-10 00:16:23 +00:00
Segher Boessenkool
d966425468 rs6000: Move processor_costs to header
This moves the processor_costs structure declaration to the rs6000.h
header file, so that things in other files can use it (not just things
in rs6000.c).


	* config/rs6000/rs6000.c (processor_costs): Move to ...
	* config/rs6000/rs6000.h: ... here.
	(rs6000_cost): Declare.

From-SVN: r253570
2017-10-10 01:05:37 +02:00
Eric Botcazou
2ab71f3d87 except.c (setjmp_fn): New global variable.
* except.c (setjmp_fn): New global variable.
	(init_eh): Initialize it if DONT_USE_BUILTIN_SETJMP is defined.
	(sjlj_emit_function_enter): Call it instead of BUILTIN_SETJMP if
	DONT_USE_BUILTIN_SETJMP is defined.

From-SVN: r253569
2017-10-09 22:32:01 +00:00
Pierre-Marie de Rodat
3fc40cd783 [multiple changes]
2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_unit.adb (Find_Enclosing_Scope): Do not treat a block statement
	as a scoping construct when it is byproduct of exception handling.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sinfo.ads: Update table Is_Syntactic_Field to reflect the nature of
	semantic field Target of node N_Call_Marker.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Allocator): Reject properly an allocator that
	attempts to copy a limited value, when the allocator is the expression
	in an expression function.

2017-10-09  Joel Brobecker  <brobecker@adacore.com>

	* doc/share/conf.py: Tell the style checker that this is a Python
	fragment, and therefore that pyflakes should not be run to validate
	this file.

2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Is_Boolean_Type): Add pragma Inline.
	(Is_Entity_Name): Likewise.
	(Is_String_Type): Likewise.
	* sem_type.adb (Full_View_Covers): Do not test Is_Private_Type here
	and remove useless comparisons on the base types.
	(Covers): Use simple tests for Standard_Void_Type.  Move up cheap tests
	on T2.  Always test Is_Private_Type before Full_View_Covers.

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch4.adb: Minor refactoring.

From-SVN: r253568
2017-10-09 20:47:26 +00:00
Pierre-Marie de Rodat
367601d123 [multiple changes]
2017-10-09  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Replace_Components): Browse the list of discriminants,
	not components.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Static_Elaboration_Checks): Elaboration requirements
	are verified only in the static model.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification,
	Check_Reverse_Iteration): Check that the domain of iteration supports
	reverse iteration when it is a formal container.  This requires the
	presence of a Previous primitive in the Iterable aspect.
	* sem_ch13.adb (Resolve_Iterable_Operation): Verify legality of
	primitives Last and Previous to support reverse iteration over formal
	containers.
	(Validate_Iterable_Aspect): Add check for reverse iteration operations.
	* exp_ch5.adb (Build_Formal_Container_Iteration): Add proper expansion
	for reverse iteration using primitives Last and Previous in generated
	loop.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Subprogram_Name): If this is a child unit, use the name
	of the Defining_Program_Unit_Name, which is an identifier, in order to
	construct the string for the fully qualified name.

From-SVN: r253567
2017-10-09 20:36:41 +00:00
Pierre-Marie de Rodat
7f5e671bce [multiple changes]
2017-10-09  Justin Squirek  <squirek@adacore.com>

	* sem_ch3.adb: Rename Uses_Unseen_Priv into
	Contains_Lib_Incomplete_Type.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_aggr.adb, sem_spark.adb, adabkend.adb, exp_ch5.adb, frontend.adb,
	sem_ch12.adb, fmap.adb, exp_ch6.adb, exp_spark.adb, lib-load.adb,
	exp_ch9.adb, osint.adb, exp_disp.adb, sem_ch8.adb, sem_ch8.ads,
	prepcomp.adb, gnat1drv.adb, atree.adb, sinput-l.adb, targparm.adb,
	sem_ch10.adb, par-ch8.adb: Minor reformatting.

From-SVN: r253566
2017-10-09 20:28:22 +00:00
Pierre-Marie de Rodat
f192ca5eea [multiple changes]
2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Is_Suitable_Access): This scenario is now only relevant
	in the static model.
	(Is_Suitable_Variable_Assignment): This scenario is now only relevant
	in the static model.
	(Is_Suitable_Variable_Reference): This scenario is now only relevant in
	the static model.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): In ASIS mode, resolve aspect
	expressions when the enclosing scope is a subprogram body and the next
	declaration is a body that freezes entities previously declared in the
	scope.

2017-10-09  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Analyze_Use_Package): Remove checking of mixture between
	ghost packages and living packages in use clauses.
	(Use_One_Type, Note_Redundant_Use): Correct warning messages

2017-10-09  Justin Squirek  <squirek@adacore.com>

	* osint.ads: Document new parameter FD for Read_Source_File.

From-SVN: r253564
2017-10-09 20:19:13 +00:00
Pierre-Marie de Rodat
98b779ae49 [multiple changes]
2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Make_Predicate_Call): If the type of the expression to
	which the predicate check applies is tagged, convert the expression to
	that type. This is in most cases a no-op, but is relevant if the
	expression is clas-swide, because the predicate function being invoked
	is not a primitive of the type and cannot take a class-wide actual.

2017-10-09  Gary Dismukes  <dismukes@adacore.com>

	* exp_disp.adb: Minor reformatting.

2017-10-09  Arnaud Charlet  <charlet@adacore.com>

	* sem_warn.adb (Warn_On_Unreferenced_Entity): Fix typo.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Install_ABE_Check): Do not generate an ABE check for
	GNATprove.
	(Install_ABE_Failure): Do not generate an ABE failure for GNATprove.

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Return
	immediately if the call has already been processed (by a previous call
	to Make_Build_In_Place_Call_In_Anonymous_Context).
	* sem_elab.adb: Minor typo fixes.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Replace_Type_Ref): In the expression for a dynamic
	predicate, do not replace an identifier that matches the type if the
	identifier is a selector in a selected component, because this
	indicates a reference to some homograph of the type itself, and  not to
	the current occurence in the predicate.

2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>

	* repinfo.adb (List_Record_Layout): Tweak formatting.
	(Write_Val): Remove superfluous spaces in back-end layout mode.

2017-10-09  Piotr Trojanek  <trojanek@adacore.com>

	* sem_res.adb (Property_Error): Remove.
	(Resolve_Actuals): check for SPARK RM 7.1.3(10) rewritten to match the
	current wording of the rule.

2017-10-09  Justin Squirek  <squirek@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Add check for ghost packages
	before analyzing a given scope due to an expression function.
	(Uses_Unseen_Lib_Unit_Priv): Rename to Uses_Unseen_Priv.

From-SVN: r253563
2017-10-09 19:59:11 +00:00
Segher Boessenkool
94105f5c8a Add targetm.insn_cost hook
This adds a new hook that the insn_cost function uses if a target has
implemented it (it uses the old pattern_cost nee insn_rtx_cost if not).


	* target.def (insn_cost): New hook.
	* doc/tm.texi.in (TARGET_INSN_COST): New hook.
	* doc/tm.texi: Regenerate.
	* rtlanal.c (insn_cost): Use the new hook.

From-SVN: r253562
2017-10-09 21:47:08 +02:00
Segher Boessenkool
a6f9eb8d9b combine: Use insn_cost instead of pattern_cost everywhere
* combine.c (combine_validate_cost): Compute the new insn_cost,
	not just pattern_cost.
	(try_combine): Adjust comment.

From-SVN: r253561
2017-10-09 21:45:50 +02:00
Segher Boessenkool
d09e78e890 Replace insn_rtx_cost with insn_cost and pattern_cost
This replaces insn_rtx_cost with insn_cost if an insn is readily
available, and with pattern_cost otherwise.


	* cfgrtl.c (rtl_account_profile_record): Replace insn_rtx_cost with
	insn_cost.
	* combine.c (uid_insn_cost): Adjust comment.
	(combine_validate_cost): Adjust comment.  Use pattern_cost instead
	of insn_rtx_cost
	(combine_instructions): Use insn_cost instead of insn_rtx_cost.
	* dse.c (find_shift_sequence): Ditto.
	* ifcvt.c (cheap_bb_rtx_cost_p): Ditto.
	(bb_valid_for_noce_process_p): Use pattern_cost.
	* rtl.h (insn_rtx_cost): Delete.
	(pattern_cost): New prototype.
	(insn_cost): New prototype.
	* rtlanal.c (insn_rtx_cost): Rename to...
	(pattern_cost): ... this.
	(insn_cost): New.

From-SVN: r253560
2017-10-09 21:44:13 +02:00
Pierre-Marie de Rodat
90e491a773 [multiple changes]
2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Use
	Defining_Identifier (Obj_Decl) in two places, because it might have
	changed.
	* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Deal with cases
	involving 'Input on (not visibly) derived types.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

	* atree.adb: Add new soft link Rewriting_Proc.
	(Rewrite): Invoke the subprogram attached to the rewriting soft link.
	(Set_Rewriting_Proc): New routine.
	* attree.ads: Add new access-to-subprogram type Rewrite_Proc.
	(Set_Rewriting_Proc): New routine.
	* checks.adb (Install_Primitive_Elaboration_Check): Use 'E' character
	for *E*laboration flag to maintain consistency with other elaboration
	flag generating subprograms.
	* debug.adb: Document the new usage of flag -gnatdL.
	* einfo.adb: Node19 is now used as Receiving_Entry.  Node39 is now used
	as Protected_Subprogram.  Flag148 is now used as
	Is_Elaboration_Checks_OK_Id.  Flag302 is now used as
	Is_Initial_Condition_Procedure.
	(Is_Elaboration_Checks_OK_Id): New routine.
	(Is_Initial_Condition_Procedure): New routine.
	(Protected_Subprogram): New routine.
	(Receiving_Entry): New routine.
	(SPARK_Pragma): Update assertion.
	(SPARK_Pragma_Inherited): Update assertion.
	(Suppress_Elaboration_Warnings): Removed.
	(Set_Is_Elaboration_Checks_OK_Id): New routine.
	(Set_Is_Initial_Condition_Procedure): New routine.
	(Set_Protected_Subprogram): New routine.
	(Set_Receiving_Entry): New routine.
	(Set_SPARK_Pragma): Update assertion.
	(Set_SPARK_Pragma_Inherited): Update assertion.
	(Write_Entity_Flags): Update the output for Flag148 and Flag302.
	(Write_Field19_Name): Add output for Receiving_Entry.
	(Write_Field39_Name): Add output for Protected_Subprogram.
	(Write_Field40_Name): Update the output for SPARK_Pragma.
	* einfo.ads: New attributes Is_Elaboration_Checks_OK_Id,
	Is_Initial_Condition_Procedure, Protected_Subprogram, Receiving_Entry.
	Remove attribute Suppress_Elaboration_Warnings.  Update the stricture
	of various entities.
	(Is_Elaboration_Checks_OK_Id): New routine along with pragma Inline.
	(Is_Initial_Condition_Procedure): New routine along with pragma Inline.
	(Protected_Subprogram): New routine along with pragma Inline.
	(Receiving_Entry): New routine along with pragma Inline.
	(Suppress_Elaboration_Warnings): Removed.
	(Set_Is_Elaboration_Checks_OK_Id): New routine along with pragma
	Inline.
	(Set_Is_Initial_Condition_Procedure): New routine along with pragma
	Inline.
	(Set_Protected_Subprogram): New routine along with pragma Inline.
	(Set_Receiving_Entry): New routine along with pragma Inline.
	(Set_Suppress_Elaboration_Warnings): Removed.
	* exp_ch3.adb (Build_Init_Procedure): Use name _Finalizer to maintain
	consistency with other finalizer generating subprograms.
	(Default_Initialize_Object): Mark the block which wraps the call to
	finalize as being part of initialization.
	* exp_ch7.adb (Expand_N_Package_Declaration): Directly expand pragma
	Initial_Condition.
	(Expand_N_Package_Body): Directly expand pragma Initial_Condition.
	(Next_Suitable_Statement): Update the comment on usage. Skip over call
	markers generated by the ABE mechanism.
	* exp_ch9.adb (Activation_Call_Loc): New routine.
	(Add_Accept): Link the accept procedure to the original entry.
	(Build_Protected_Sub_Specification): Link the protected or unprotected
	version to the original subprogram.
	(Build_Task_Activation_Call): Code cleanup. Use a source location which
	is very close to the "begin" or "end" keywords when generating the
	activation call.
	* exp_prag.adb (Expand_Pragma_Initial_Condition): Reimplemented.
	* exp_spark.adb (Expand_SPARK): Use Expand_SPARK_N_Loop_Statement to
	process loops.
	(Expand_SPARK_N_Loop_Statement): New routine.
	(Expand_SPARK_N_Object_Declaration): Code cleanup. Partially insert the
	call to the Default_Initial_Condition procedure.
	(Expand_SPARK_Op_Ne): Renamed to Expand_SPARK_N_Op_Ne.
	* exp_util.adb (Build_DIC_Procedure_Body): Capture the SPARK_Mode in
	effect.
	(Build_DIC_Procedure_Declaration): Capture the SPARK_Mode in effect.
	(Insert_Actions): Add processing for N_Call_Marker.
	(Kill_Dead_Code): Explicitly kill an elaboration scenario.
	* exp_util.ads (Make_Invariant_Call): Update the comment on usage.
	* frontend.adb: Initialize Sem_Elab. Process all saved top level
	elaboration scenarios for ABE issues.
	* gcc-interface/trans.c (gnat_to_gnu): Add processing for N_Call_Marker
	nodes.
	* lib.adb (Earlier_In_Extended_Unit): New variant.
	* sem.adb (Analyze): Ignore N_Call_Marker nodes.
	(Preanalysis_Active): New routine.
	* sem.ads (Preanalysis_Active): New routine.
	* sem_attr.adb (Analyze_Access_Attribute): Save certain
	elaboration-related attributes. Save the scenario for ABE processing.
	* sem_ch3.adb (Analyze_Object_Declaration): Save the SPARK mode in
	effect. Save certain elaboration-related attributes.
	* sem_ch5.adb (Analyze_Assignment): Save certain elaboration-related
	attributes. Save the scenario for ABE processing.
	* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Save the SPARK
	mode in effect. Save certain elaboration-related attributes.
	(Analyze_Subprogram_Body_Helper): Skip N_Call_Marker nodes when
	locating the first real statement.
	(Analyze_Subprogram_Declaration): Save the SPARK mode in effect. Save
	certain elaboration-related attributes.
	* sem_ch7.adb (Analyze_Package_Declaration): Do not suppress
	elaboration warnings.
	* sem_ch8.adb (Attribute_Renaming): Mark a subprogram body which was
	generated for purposes of wrapping an attribute used as a generic
	actual.
	(Find_Direct_Name): Save certain elaboration-related attributes. Save
	the scenario for ABE processing.
	(Find_Expanded_Name): Save certain elaboration-related attributes. Save
	the scenario for ABE processing.
	* sem_ch9.adb (Analyze_Entry_Declaration): Save certain
	elaboration-related attributes.
	(Analyze_Requeue): Save certain elaboration-related attributes. Save
	the scenario for ABE processing.
	(Analyze_Single_Task_Declaration): Save certain elaboration-related
	attributes.
	(Analyze_Task_Type_Declaration): Save certain elaboration-related
	attributes.
	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Save certain
	elaboration-related attributes.
	(Analyze_Generic_Subprogram_Declaration): Save the SPARK mode in
	effect. Save certain elaboration-related attributes.
	(Analyze_Package_Instantiation): Save certain elaboration-related
	attributes.  Save the scenario for ABE processing. Create completing
	bodies in case the instantiation results in a guaranteed ABE.
	(Analyze_Subprogram_Instantiation): Save certain elaboration-related
	attributes Save the scenario for ABE processing. Create a completing
	body in case the instantiation results in a guaranteed ABE.
	(Provide_Completing_Bodies): New routine.
	* sem_elab.ads: Brand new implementation.
	* sem_prag.adb (Analyze_Pragma, cases Elaborate, Elaborate_All,
	Elaborate_Body): Do not suppress elaboration warnings.
	* sem_res.adb (Make_Call_Into_Operator): Set the parent field of the
	operator.
	(Resolve_Call): Save certain elaboration-related attributes. Save the
	scenario for ABE processing.
	(Resolve_Entity_Name): Do not perform any ABE processing here.
	(Resolve_Entry_Call): Inherit certain attributes from the original call.
	* sem_util.adb (Begin_Keyword_Location): New routine.
	(Defining_Entity): Update the parameter profile. Add processing for
	concurrent subunits that are rewritten as null statements.
	(End_Keyword_Location): New routine.
	(Find_Enclosing_Scope): New routine.
	(In_Instance_Visible_Part): Code cleanup.
	(In_Subtree): Update the parameter profile. Add new version.
	(Is_Preelaborable_Aggregate): New routine.
	(Is_Preelaborable_Construct): New routine.
	(Mark_Elaboration_Attributes): New routine.
	(Scope_Within): Update the parameter profile.
	(Scope_Within_Or_Same): Update the parameter profile.
	* sem_util.ads (Begin_Keyword_Location): New routine.
	(Defining_Entity): Update the parameter profile and the comment on
	usage.
	(End_Keyword_Location): New routine.
	(Find_Enclosing_Scope): New routine.
	(In_Instance_Visible_Part): Update the parameter profile.
	(In_Subtree): Update the parameter profile. Add new version.
	(Is_Preelaborable_Aggregate): New routine.
	(Is_Preelaborable_Construct): New routine.
	(Mark_Elaboration_Attributes): New routine.
	(Scope_Within): Update the parameter profile and the comment on usage.
	(Scope_Within_Or_Same): Update the parameter profile and the comment on
	usage.
	* sem_warn.adb (Check_Infinite_Loop_Warning): Use Has_Condition_Actions
	to determine whether a loop has meaningful condition actions.
	(Has_Condition_Actions): New routine.
	* sinfo.adb (ABE_Is_Certain): Removed.
	(Is_Declaration_Level_Node): New routine.
	(Is_Dispatching_Call): New routine.
	(Is_Elaboration_Checks_OK_Node): New routine.
	(Is_Initialization_Block): New routine.
	(Is_Known_Guaranteed_ABE): New routine.
	(Is_Recorded_Scenario): New routine.
	(Is_Source_Call): New routine.
	(Is_SPARK_Mode_On_Node): New routine.
	(No_Elaboration_Check): Removed.
	(Target): New routine.
	(Was_Attribute_Reference): New routine.
	(Set_ABE_Is_Certain): Removed.
	(Set_Is_Declaration_Level_Node): New routine.
	(Set_Is_Dispatching_Call): New routine.
	(Set_Is_Elaboration_Checks_OK_Node): New routine.
	(Set_Is_Initialization_Block): New routine.
	(Set_Is_Known_Guaranteed_ABE): New routine.
	(Set_Is_Recorded_Scenario): New routine.
	(Set_Is_Source_Call): New routine.
	(Set_Is_SPARK_Mode_On_Node): New routine.
	(Set_No_Elaboration_Check): Removed.
	(Set_Target): New routine.
	(Set_Was_Attribute_Reference): New routine.
	* sinfo.ads: Remove attribute ABE_Is_Certain.  Attribute
	Do_Discriminant_Check now utilizes Flag3.  Attribute
	No_Side_Effect_Removal now utilizes Flag17.  Add new node
	N_Call_Marker.  Update the structure of various nodes.
	(ABE_Is_Certain): Removed along with pragma Inline.
	(Is_Declaration_Level_Node): New routine along with pragma Inline.
	(Is_Dispatching_Call): New routine along with pragma Inline.
	(Is_Elaboration_Checks_OK_Node): New routine along with pragma Inline.
	(Is_Initialization_Block): New routine along with pragma Inline.
	(Is_Known_Guaranteed_ABE): New routine along with pragma Inline.
	(Is_Recorded_Scenario): New routine along with pragma Inline.
	(Is_Source_Call): New routine along with pragma Inline.
	(Is_SPARK_Mode_On_Node): New routine along with pragma Inline.
	(No_Elaboration_Check): Removed along with pragma Inline.
	(Target): New routine along with pragma Inline.
	(Was_Attribute_Reference): New routine along with pragma Inline.
	(Set_ABE_Is_Certain): Removed along with pragma Inline.
	(Set_Is_Declaration_Level_Node): New routine along with pragma Inline.
	(Set_Is_Dispatching_Call): New routine along with pragma Inline.
	(Set_Is_Elaboration_Checks_OK_Node): New routine along with pragma
	Inline.
	(Set_Is_Initialization_Block): New routine along with pragma Inline.
	(Set_Is_Known_Guaranteed_ABE): New routine along with pragma Inline.
	(Set_Is_Recorded_Scenario): New routine along with pragma Inline.
	(Set_Is_Source_Call): New routine along with pragma Inline.
	(Set_Is_SPARK_Mode_On_Node): New routine along with pragma Inline.
	(Set_No_Elaboration_Check): Removed along with pragma Inline.
	(Set_Target): New routine along with pragma Inline.
	(Set_Was_Attribute_Reference): New routine along with pragma Inline.
	* sprint.adb (Sprint_Node_Actual): Add an entry for N_Call_Marker.

From-SVN: r253559
2017-10-09 19:43:32 +00:00
Uros Bizjak
341af81e6e i386.md (*jcc_2): Remove insn pattern.
* config/i386/i386.md (*jcc_2): Remove insn pattern.
	(*jcc<mode>_0_r_i387): Ditto.
	(*jccxf_r_i387): Ditto.
	(*jcc<mode>_r_i387): Ditto.
	(*jccu<mode>_r_i387): Ditto.
	(*jcc<X87MODEF:mode>_<SWI24:mode>_r_i387): Ditto.
	(*jcc): Rename from *jcc_1.

From-SVN: r253558
2017-10-09 21:12:53 +02:00
Bob Duff
b3db0949e7 exp_ch7.adb (Create_Finalizer): Suppress checks within the finalizer.
2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch7.adb (Create_Finalizer): Suppress checks within the finalizer.

2017-10-09  Bob Duff  <duff@adacore.com>

	* freeze.ads: Minor comment fixed.

From-SVN: r253557
2017-10-09 18:46:19 +00:00
Michael Meissner
bd8cd1136c <forgot to do svn add on the amo.h file>
[gcc]
2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/amo.h: New include file to provide ISA 3.0 atomic
	memory operation instruction support.
	* config.gcc (powerpc*-*-*): Include amo.h as an extra header.
	(rs6000-ibm-aix[789]*): Likewise.
	* doc/extend.texi (PowerPC Atomic Memory Operation Functions):
	Document new functions.

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

	* gcc.target/powerpc/amo1.c: New test.
	* gcc.target/powerpc/amo2.c: Likewise.

From-SVN: r253556
2017-10-09 18:44:41 +00:00
Bill Schmidt
3395b656c9 rs6000-p8swap.c (rs6000_analyze_swaps): Process deferred rescans after the lvx/stvx recombination pre-pass.
2017-10-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Process
	deferred rescans after the lvx/stvx recombination pre-pass.

From-SVN: r253555
2017-10-09 18:38:42 +00:00
Pierre-Marie de Rodat
5d57846b76 exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Take care of unchecked...
gcc/ada/

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Take
	care of unchecked conversions in addition to regular conversions. This
	takes care of a case where a type is derived from a private untagged
	type that is completed by a tagged controlled type.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When
	rewriting a class-wide condition, handle properly the case where the
	controlling argument of the operation to which the condition applies is
	an access to a tagged type, and the condition includes a dispatching
	call with an implicit dereference.

gcc/testsuite/

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* gnat.dg/class_wide4.adb, gnat.dg/class_wide4_pkg.ads,
	gnat.dg/class_wide4_pkg2.ads: New testcase.

From-SVN: r253554
2017-10-09 18:23:07 +00:00
Michael Meissner
a1df65216a amo.h: New include file to provide ISA 3.0 atomic memory operation instruction support.
[gcc]
2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/amo.h: New include file to provide ISA 3.0 atomic
	memory operation instruction support.
	* config.gcc (powerpc*-*-*): Include amo.h as an extra header.
	(rs6000-ibm-aix[789]*): Likewise.
	* doc/extend.texi (PowerPC Atomic Memory Operation Functions):
	Document new functions.

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

	* gcc.target/powerpc/amo1.c: New test.
	* gcc.target/powerpc/amo2.c: Likewise.

From-SVN: r253552
2017-10-09 18:20:01 +00:00
Pierre-Marie de Rodat
15529d0aa0 exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Remove the code at the end of...
gcc/ada/

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Remove
	the code at the end of this procedure that was setting the type of a
	class-wide object to the specific type returned by a function call.
	Treat this case as indefinite instead.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Class_Wide_Operation, Traverse_Homonyms):
	Suppress spurious ambiguity error when two traversals of the homonym
	chain (first directly, and then through an examination of relevant
	interfaces) retrieve the same operation, when other irrelevant homonyms
	of the operatioh are also present.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Object_Access_Level): If the object is the return
	statement of an expression function, return the level of the function.
	This is relevant when the object involves an implicit conversion
	between access types and the expression function is a completion, which
	forces the analysis of the expression before rewriting it as a body, so
	that freeze nodes can appear in the proper scope.

2017-10-09  Bob Duff  <duff@adacore.com>

	* atree.adb: Make nnd apply to everything "interesting", including
	Rewrite.  Remove rrd.

2017-10-09  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Avoid never-ending loop
	processing the declaration of the dummy object internally created by
	Make_DT to compute the offset to the top of components referencing
	secondary dispatch tables.
	(Initialize_Tag): Do not initialize the offset-to-top field if it has
	been initialized initialized.
	* exp_disp.ads (Building_Static_Secondary_DT): New subprogram.
	* exp_disp.adb (Building_Static_Secondary_DT): New subprogram.
	(Make_DT): Create a dummy constant object if we can statically build
	secondary dispatch tables.
	(Make_Secondary_DT): For statically allocated secondary dispatch tables
	use the dummy object to compute the offset-to-top field value by means
	of the attribute 'Position.

gcc/testsuite/

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* gnat.dg/class_wide3.adb, gnat.dg/class_wide3_pkg.ads: New testcase.

From-SVN: r253550
2017-10-09 15:49:59 +00:00
Pierre-Marie de Rodat
5168a9b3d0 exp_ch6.adb (Expand_N_Extended_Return_Statement): Add self-checking code so if BIPAlloc is not passed in...
gcc/ada/

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Add self-checking
	code so if BIPAlloc is not passed in, it will likely raise
	Program_Error instead of cause miscellaneous chaos.
	(Is_Build_In_Place_Result_Type): Return False if not Expander_Active,
	as for the other Is_B-I-P... functions.
	* sem_aggr.adb (Resolve_Extension_Aggregate): For an extension
	aggregate whose ancestor part is a build-in-place call returning a
	nonlimited type, transform the assignment to the ancestor part to use a
	temp.
	* sem_ch3.adb (Build_Itype_Reference): Handle the case where we're
	creating an Itype for a library unit entity.
	(Check_Initialization): Avoid spurious error message on
	internally-generated call.
	* sem_ch5.adb (Analyze_Assignment): Handle the case where the
	right-hand side is a build-in-place call. This didn't happen when b-i-p
	was only for limited types.
	* sem_ch6.adb (Create_Extra_Formals): Remove assumption that b-i-p
	implies >= Ada 2005.
	* sem_ch7.adb (Scan_Subprogram_Refs): Avoid traversing the same nodes
	repeatedly.
	* sem_util.adb (Next_Actual): Handle case of build-in-place call.

2017-10-09  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_ugn/gnat_and_program_execution.rst: Minor edit.

2017-10-09  Piotr Trojanek  <trojanek@adacore.com>

	* libgnarl/s-taprob.adb: Minor whitespace fix.

2017-10-09  Bob Duff  <duff@adacore.com>

	* namet.ads: Minor comment fix.

2017-10-09  Piotr Trojanek  <trojanek@adacore.com>

	* sem_aux.adb (Unit_Declaration_Node): Detect protected declarations,
	just like other program units listed in Ada RM 10.1(1).

2017-10-09  Justin Squirek  <squirek@adacore.com>

	* sem_ch8.adb (Update_Chain_In_Scope): Modify warning messages.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Associations, Check_Generic_Parent): If an
	actual for a formal package is an instantiation of a child unit, create
	a freeze node for the instance of the parent if it appears in the same
	scope and is not frozen yet.

2017-10-09  Pierre-Marie de Rodat  <derodat@adacore.com>

	* exp_atag.ads, libgnat/a-tags.adb, libgnat/a-tags.ads: Enhance
	in-source documentation for tagged types's Offset_To_Top.

2017-10-09  Bob Duff  <duff@adacore.com>

	* exp_ch3.adb (Build_Assignment): Parameter name N was somewhat
	confusing.  Same for N_Loc.  Remove assumption that b-i-p implies
	limited.  This is for the case of a function call that occurs as the
	default for a record component.
	(Expand_N_Object_Declaration): Deal with the case where expansion has
	created an object declaration initialized with something like
	F(...)'Reference.
	* exp_ch3.adb: Minor reformatting.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb (Expand_Attribute_Reference, case 'Valid): The prefix of
	the attribute is an object, but it may appear within a conversion. The
	object itself must be retrieved when generating the range test that
	implements the validity check on a scalar type.

gcc/testsuite/

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

	* gnat.dg/validity_check2.adb, gnat.dg/validity_check2_pkg.ads:
	New testcase.

From-SVN: r253548
2017-10-09 15:17:16 +00:00
Richard Biener
18b4306c0a re PR tree-optimization/82397 (qsort comparator non-negative on sorted output: 1 in vect_analyze_data_ref_accesses)
2017-10-09  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/82397
	* tree-data-ref.c (data_ref_compare_tree): Make sure to return
	equality only for semantically equal trees.

From-SVN: r253547
2017-10-09 14:13:43 +00:00
Richard Biener
7668b0a656 re PR tree-optimization/82449 (code-gen error in get_rename_from_scev)
2017-10-09  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/82449
	* sese.c (scev_analyzable_p): Check whether the SCEV is linear.
	* tree-chrec.h (evolution_function_is_constant_p): Adjust to
	allow constant addresses.
	* tree-chrec.c (scev_is_linear_expression): Constant evolutions
	are linear.

	* gfortran.dg/graphite/pr82449.f: New testcase.

From-SVN: r253546
2017-10-09 13:50:10 +00:00
Pekka Jääskeläinen
14108eda7e [BRIGFE] Support BRIG_KIND_NONE directives.
These directives are legal everywhere.  They can be used to
patch away BRIG entries at the binary level.

Also add extra error detection for zeroed regions: make sure
the byteCount field is never zero.

The call code still failed a few PRM test cases. Now all PRM
branch cases pass again.

From-SVN: r253545
2017-10-09 13:06:01 +00:00
Andreas Krebbel
63eea5dcb5 S/390: Fix vec_nabs and vec_vfi builtin flags
gcc/ChangeLog:

2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/s390-builtins.def (vec_nabs, vec_vfi): Fix builtin
	flags.

From-SVN: r253544
2017-10-09 12:08:46 +00:00
Andreas Krebbel
ad2c91b251 S/390: PR82463: Fix vec_madd header file definition
The builtin was not correctly defined in the vecintrin.h header file.

gcc/testsuite/ChangeLog:

2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/82463
	* gcc.target/s390/zvector/pr82463.c: New test.

gcc/ChangeLog:

2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/82463
	* config/s390/vecintrin.h (vec_madd, vec_msub): Fix macro
	definitions.

From-SVN: r253543
2017-10-09 12:07:54 +00:00
Andreas Krebbel
3141e768ee S/390: PR82465: Fix vec_sqrt builtin flags
The vector double variant is available with z13.  A wrong flag in the
s390-builtins.def file triggered an error when compiling for z13.

gcc/testsuite/ChangeLog:

2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/82465
	* gcc.target/s390/zvector/pr82465.c: New test.

gcc/ChangeLog:

2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/82465
	* config/s390/s390-builtins.def (vec_sqrt): Fix builtin flags.

From-SVN: r253542
2017-10-09 12:06:11 +00:00
Jakub Jelinek
85f59ae75c re PR target/82464 (s390x z14: vector float: invalid parameter combination for intrinsic '__builtin_s390_vec_xor')
PR target/82464
	* config/s390/s390-builtins.def (s390_vec_xor_flt_a,
	s390_vec_xor_flt_b, s390_vec_xor_flt_c): New.

From-SVN: r253541
2017-10-09 13:40:23 +02:00
Wilco Dijkstra
8d9c7f8a86 Fix ssa-dse-26.c
Add missing -fno-short-enums to ensure this test passes on arm-none-eabi
which uses short enums.

    gcc/testsuite/
	* gcc.dg/tree-ssa/ssa-dse-26.c (dg-options): Add -fno-short-enums.

From-SVN: r253540
2017-10-09 11:00:17 +00:00