1. 13 Jan, 2017 40 commits
    • PR65411 don't retry fclose on EINTR · 0fdba3a8
      	PR libstdc++/65411
      	* config/io/basic_file_stdio.cc (__basic_file<char>::close()): Don't
      	retry fclose on EINTR.
      
      From-SVN: r244451
      Jonathan Wakely committed
    • re PR c++/71166 (ICE with nested constexpr/initializer) · e3017e52
      	PR c++/71166
      	* g++.dg/cpp0x/constexpr-array18.C: New test.
      
      From-SVN: r244450
      Marek Polacek committed
    • Remove unused include from Profile Mode header · aa1ba96b
      	* include/profile/base.h: Remove unused header that leads to header
      	cycle in C++17 mode.
      
      From-SVN: r244449
      Jonathan Wakely committed
    • PR 78534 Change character length from int to size_t · a6ab4e07
      In order to handle large character lengths on (L)LP64 targets, switch
      the GFortran character length from an int to a size_t.
      
      This is an ABI change, as procedures with character arguments take
      hidden arguments with the character length.
      
      I also changed the _size member in vtables from int to size_t, as
      there were some cases where character lengths and sizes were
      apparently mixed up and caused regressions otherwise. Although I
      haven't tested, this might enable very large derived types as well.
      
      Also, as there are some places in the frontend were negative character
      lengths are used as special flag values, in the frontend the character
      length is handled as a signed variable of the same size as a size_t,
      although in the runtime library it really is size_t.
      
      I haven't changed the character length variables for the co-array
      intrinsics, as this is something that may need to be synchronized with
      OpenCoarrays.
      
      This is v4 of the patch. v3 was applied but had to reverted due to
      breaking bootstrap. The fix is in resolve.c:resolve_charlen, where
      it's necessary to check that an expression is constant before using
      mpz_sgn.
      
      Overview of v3 of the patch: All the issues pointed out by FX's review
      of v2 have been fixed. In particular, there are now new functions
      gfc_mpz_get_hwi and gfc_mpz_set_hwi, similar to the GMP functions
      mpz_get_si and mpz_set_si, except that they get/set a HOST_WIDE_INT
      instead of a long value. Similarly, gfc_get_int_expr now takes a
      HOST_WIDE_INT instead of a long, gfc_extract_long is replaced by
      gfc_extract_hwi. Also, the preliminary work to handle
      gfc_charlen_type_node being unsigned has been removed.
      
      Regtested on x86_64-pc-linux-gnu and i686-pc-linux-gnu.
      
      frontend:
      
      2017-01-13  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR fortran/78534
      	PR fortran/66310
      	* class.c (gfc_find_derived_vtab): Use gfc_size_kind instead of
      	hardcoded kind.
      	(find_intrinsic_vtab): Likewise.
      	* expr.c (gfc_get_character_expr): Length parameter of type
      	gfc_charlen_t.
      	(gfc_get_int_expr): Value argument of type HOST_WIDE_INT.
      	(gfc_extract_hwi): New function.
      	(simplify_const_ref): Make string_len of type gfc_charlen_t.
      	(gfc_simplify_expr): Use HOST_WIDE_INT for substring refs.
      	* gfortran.h (gfc_mpz_get_hwi): New prototype.
      	(gfc_mpz_set_hwi): Likewise.
      	(gfc_charlen_t): New typedef.
      	(gfc_expr): Use gfc_charlen_t for character lengths.
      	(gfc_size_kind): New extern variable.
      	(gfc_extract_hwi): New prototype.
      	(gfc_get_character_expr): Use gfc_charlen_t for character length.
      	(gfc_get_int_expr): Use HOST_WIDE_INT type for value argument.
      	* iresolve.c (gfc_resolve_repeat): Pass string length directly without
      	temporary, use gfc_charlen_int_kind.
      	* match.c (select_intrinsic_set_tmp): Use HOST_WIDE_INT for charlen.
      	* misc.c (gfc_mpz_get_hwi): New function.
      	(gfc_mpz_set_hwi): New function.
      	* module.c (atom_int): Change type from int to HOST_WIDE_INT.
      	(parse_integer): Don't complain about large integers.
      	(write_atom): Use HOST_WIDE_INT for integers.
      	(mio_integer): Handle integer type mismatch.
      	(mio_hwi): New function.
      	(mio_intrinsic_op): Use HOST_WIDE_INT.
      	(mio_array_ref): Likewise.
      	(mio_expr): Likewise.
      	* resolve.c (resolve_select_type): Use HOST_WIDE_INT for charlen,
      	use snprintf.
      	(resolve_substring_charlen): Use gfc_charlen_int_kind.
      	(resolve_charlen): Use mpz_sgn to determine sign.
      	* simplify.c (gfc_simplify_repeat): Use HOST_WIDE_INT/gfc_charlen_t
      	instead of long.
      	* target-memory.c (size_character): Length argument of type
      	gfc_charlen_t.
      	(gfc_encode_character): Likewise.
      	(gfc_interpret_character): Use gfc_charlen_t.
      	* target-memory.h (gfc_encode_character): Modify prototype.
      	* trans-array.c (get_array_ctor_var_strlen): Use
      	gfc_conv_mpz_to_tree_type.
      	* trans-const.c (gfc_conv_mpz_to_tree_type): New function.
      	* trans-const.h (gfc_conv_mpz_to_tree_type): New prototype.
      	* trans-expr.c (gfc_class_len_or_zero_get): Build const of type
      	gfc_charlen_type_node.
      	(gfc_conv_intrinsic_to_class): Use gfc_charlen_int_kind instead of
      	4, fold_convert to correct type.
      	(gfc_conv_class_to_class): Build const of type size_type_node for
      	size.
      	(gfc_copy_class_to_class): Likewise.
      	(gfc_conv_string_length): Use same type in expression.
      	(gfc_conv_substring): Likewise, use HOST_WIDE_INT for charlen.
      	(gfc_conv_string_tmp): Make sure len is of the right type.
      	(gfc_conv_concat_op): Use same type in expression.
      	(gfc_conv_procedure_call): Likewise.
      	(alloc_scalar_allocatable_for_subcomponent_assignment):
      	fold_convert to right type.
      	(gfc_trans_subcomponent_assign): Likewise.
      	(trans_class_vptr_len_assignment): Build const of correct type.
      	(gfc_trans_pointer_assignment): Likewise.
      	(alloc_scalar_allocatable_for_assignment): fold_convert to right
      	type in expr.
      	(trans_class_assignment): Build const of correct type.
      	* trans-intrinsic.c (gfc_conv_associated): Likewise.
      	(gfc_conv_intrinsic_repeat): Do calculation in sizetype.
      	* trans-io.c (gfc_build_io_library_fndecls): Use
      	gfc_charlen_type_node for character lengths.
      	* trans-stmt.c (gfc_trans_label_assign): Build const of
      	gfc_charlen_type_node.
      	(gfc_trans_character_select): Likewise.
      	(gfc_trans_allocate): Likewise, don't typecast strlen result.
      	(gfc_trans_deallocate): Don't typecast strlen result.
      	* trans-types.c (gfc_size_kind): New variable.
      	(gfc_init_types): Determine gfc_charlen_int_kind and gfc_size_kind
      	from size_type_node.
      
      testsuite:
      
      2017-01-13  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR fortran/78534
      	PR fortran/66310
      	* gfortran.dg/repeat_4.f90: Use integers of kind C_SIZE_T.
      	* gfortran.dg/repeat_7.f90: New test for PR 66310.
      	* gfortran.dg/scan_2.f90: Handle potential cast in assignment.
      	* gfortran.dg/string_1.f90: Limit to ilp32 targets.
      	* gfortran.dg/string_1_lp64.f90: New test.
      	* gfortran.dg/string_3.f90: Limit to ilp32 targets.
      	* gfortran.dg/string_3_lp64.f90: New test.
      
      libgfortran:
      
      2017-01-13  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR fortran/78534
      	* intrinsics/args.c (getarg_i4): Use gfc_charlen_type.
      	(get_command_argument_i4): Likewise.
      	(get_command_i4): Likewise.
      	* intrinsics/chmod.c (chmod_internal): Likewise.
      	* intrinsics/env.c (get_environment_variable_i4): Likewise.
      	* intrinsics/extends_type_of.c (struct vtype): Use size_t for size
      	member.
      	* intrinsics/gerror.c (gerror): Use gfc_charlen_type.
      	* intrinsics/getlog.c (getlog): Likewise.
      	* intrinsics/hostnm.c (hostnm_0): Likewise.
      	* intrinsics/string_intrinsics_inc.c (string_len_trim): Rework to
      	work if gfc_charlen_type is unsigned.
      	(string_scan): Likewise.
      	* io/transfer.c (transfer_character): Modify prototype.
      	(transfer_character_write): Likewise.
      	(transfer_character_wide): Likewise.
      	(transfer_character_wide_write): Likewise.
      	(transfer_array): Typecast to avoid signed-unsigned comparison.
      	* io/unit.c (is_trim_ok): Use gfc_charlen_type.
      	* io/write.c (namelist_write): Likewise.
      	* libgfortran.h (gfc_charlen_type): Change typedef to size_t.
      
      From-SVN: r244448
      Janne Blomqvist committed
    • Avoid excessively-big hash tables in empty-add cycles · d3da63e5
      A big source of cache misses when compiling a recent version of
      gimple-match.ii was the call to cv_cache.empty () in clear_cv_cache.
      The problem was that at one early point the hash table had grown
      to 8191 entries (128k on LP64 hosts).  It then stayed at that size
      for the rest of the compilation, even though subsequent uses needed
      only a small number of entries (usually fewer than ten).  We would
      still clear the whole 128k each time clear_cv_cache was called.
      
      empty() already looks for cases where the hash table is very big
      and cuts it down.  At the moment it fires when the table is 1M
      in size and reduces it to the next selected prime above 1K (so
      almost 2K in practice).  One fix would have been to lower the
      threshold, but that didn't feel like the right approach.  Reducing
      the current limit of 1M by a factor of 8 would be pretty significant
      on its own, but I think this cv_cache behaviour would have been a
      problem even with 64k or 32k tables.
      
      I think the existing check is really for cases in which even a
      well-populated table would need to be shrunk rather than cleared.
      Here the problem isn't that the table is excessively big in
      absolute terms, more that one outlier has made the table much
      too big for the general case.
      
      traverse() already shrinks the table if it's "too empty",
      which is taken to be if:
      
            no. elements * 8 < capacity && capacity > 32
      
      So an alternative would be to apply the same test (and the same choice
      of shrunken size) to empty_slow too.  The patch below does this.
      It gives a 2.5% improvement in gimple-match.ii compile time at -O0 -g
      and doesn't seem to adversely affect any other tests I've tried.
      
      Of course, there's a theoretical risk of a table alternating between
      one large element count and one small element count.  If there was a
      factor of eight difference between the two, we could shrink the table
      on seeing each small element count, then grow it again when adding the
      large number of elements.  That seems pretty unlikely in practice
      though.
      
      Also, empty_slow() does involve a traversal if some form of manual
      gc is needed on active elements, so trying to recover from an outlier
      should have even more benefit there.  (cv_cache uses automatic gc and so
      the traversal gets optimised away.)
      
      The calculation of the existing 1M threshold was assuming that each
      entry was pointer-sized.  This patch makes it use the actual size of the
      entry instead.
      
      Tested on aarch64-linux-gnu and x86_64-linux-gnu.
      
      gcc/
      	* hash-table.h (hash_table::too_empty_p): New function.
      	(hash_table::expand): Use it.
      	(hash_table::traverse): Likewise.
      	(hash_table::empty_slot): Use sizeof (value_type) instead of
      	sizeof (PTR) to convert bytes to elements.  Shrink the table
      	if the current size is excessive for the current number of
      	elements.
      
      From-SVN: r244447
      Richard Sandiford committed
    • Short-circuit alt_fail case in record_reg_classes · 3d8e4920
      record_reg_classes is often the hottest function when generating
      unoptimised output.  It seems typical for over 60% of the instructions
      it handles to be moves, and of course moves tend to be the instructions
      with the longest constraint strings.
      
      Maybe we should avoid using move constraints to set costs in unoptimised
      output and instead use the "natural" class for the mode being moved.
      That's too invasive for stage 3 though.
      
      However, seeing so many moves means that we see many "failing"
      alternatives, usually because of '*' or because of hard registers
      in function call sequences.  The frequency of alternatives that are
      detected as failures after the first operand tends again to be more
      than 60%.  Previously we would continue to process the other operands
      of the alternative regardless.  This patch instead adds a short-cut.
      
      As well as avoiding unnecessary work, it means that the alt_fail
      variable can be jump-threaded away.
      
      Tested on aach64-linux-gnu and x86_64-linux-gnu.  It reduces compile
      time by about 1% on some tests with "-g -O0".
      
      gcc/
      	* ira-costs.c (record_reg_classes): Break from the inner loop
      	early once alt_fail is known to be true.  Update outer loop
      	handling accordingly.
      
      From-SVN: r244446
      Richard Sandiford committed
    • Add string_view support to COW std::string · 92daf2de
      	PR libstdc++/79075
      	* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI] (basic_string):
      	Make _If_sv private.
      	[!_GLIBCXX_USE_CXX11_ABI] (basic_string): Add member functions taking
      	basic_string_view arguments.
      
      From-SVN: r244445
      Jonathan Wakely committed
    • tree-ssa-dse.c (decrement_count): New function. · 7c9560a5
      	* tree-ssa-dse.c (decrement_count): New function.
      	(increment_start_addr, maybe_trim_memstar_call): Likewise.
      	(dse_dom_walker::optimize_stmt): Call maybe_trim_memstar_call directly
      	when we know the partially dead statement is a mem* function.
      
      	* gcc.dg/tree-ssa/ssa-dse-25.c: New test.
      
      From-SVN: r244444
      Jeff Law committed
    • re PR middle-end/61912 (Missed (partial) dead store elimination for structures on GIMPLE) · 9e59e99a
      	PR tree-optimization/61912
      	PR tree-optimization/77485
      	* tree-ssa-dse.c: Include expr.h.
      	(maybe_trim_constructor_store): New function.
      	(maybe_trim_partially_dead_store): Call maybe_trim_constructor_store.
      
      	PR tree-optimization/61912
      	PR tree-optimization/77485
      	* g++.dg/tree-ssa/ssa-dse-1.C: New test.
      	* gcc.dg/tree-ssa/pr30375: Adjust expected output.
      	* gcc.dg/tree-ssa/ssa-dse-24.c: New test.
      
      From-SVN: r244443
      Jeff Law committed
    • re PR tree-optimization/33562 (aggregate DSE disabled) · d155c6fe
              PR tree-optimization/33562
              PR tree-optimization/61912
              PR tree-optimization/77485
      	* doc/invoke.texi: Document new dse-max-object-size param.
      	* params.def (PARM_DSE_MAX_OBJECT_SIZE): New PARAM.
      	* tree-ssa-dse.c: Include params.h.
      	(dse_store_status): New enum.
      	(initialize_ao_ref_for_dse): New, partially extracted from
      	dse_optimize_stmt.
      	(valid_ao_ref_for_dse, normalize_ref): New.
      	(setup_live_bytes_from_ref, compute_trims): Likewise.
      	(clear_bytes_written_by, maybe_trim_complex_store): Likewise.
      	(maybe_trim_partially_dead_store): Likewise.
      	(maybe_trim_complex_store): Likewise.
      	(dse_classify_store): Renamed from dse_possibly_dead_store_p.
      	Track what bytes live from the original store.  Return tri-state
      	for dead, partially dead or live.
      	(dse_dom_walker): Add constructor, destructor and new private members.
      	(delete_dead_call, delete_dead_assignment): New extracted from
      	dse_optimize_stmt.
      	(dse_optimize_stmt): Make a member of dse_dom_walker.
      	Use initialize_ao_ref_for_dse.
      
              PR tree-optimization/33562
              PR tree-optimization/61912
              PR tree-optimization/77485
      	* gcc.dg/tree-ssa/complex-4.c: Remove xfail.
      	* gcc.dg/tree-ssa/complex-5.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-dse-9.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-dse-18.c: New test.
      	* gcc.dg/tree-ssa/ssa-dse-19.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-dse-20.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-dse-21.c: Likewise.
      
      From-SVN: r244442
      Jeff Law committed
    • re PR tree-optimization/33562 (aggregate DSE disabled) · 68b36e59
      	PR tree-optimization/33562
      	PR tree-optimization/61912
      	PR tree-optimization/77485
      	* sbitmap.h (bitmap_count_bits): Prototype.
      	(bitmap_clear_range, bitmap_set_range): Likewise.
      	* sbitmap.c (bitmap_clear_range): New function.
      	(bitmap_set_range, sbitmap_popcount, bitmap_count_bits): Likewise.
      
      From-SVN: r244441
      Jeff Law committed
    • Define cxx11-abi effective target for libstdc++ tests · 90aa7330
      	PR libstdc++/79075
      	* testsuite/lib/libstdc++.exp (check_v3_target_filesystem_ts): Remove
      	redundant option from cxxflags.
      	(check_effective_target_cxx11-abi): Define.
      	* testsuite/21_strings/basic_string/allocator/71964.cc: Use cxx11-abi
      	effective target.
      	* testsuite/21_strings/basic_string/allocator/char/copy.cc: Likewise.
      	* testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/allocator/char/minimal.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/allocator/char/move.cc: Likewise.
      	* testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/allocator/char/noexcept.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/allocator/char/swap.cc: Likewise.
      	* testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/allocator/wchar_t/move.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc:
      	Likewise.
      	* testsuite/23_containers/list/61347.cc: Likewise.
      	* testsuite/27_io/basic_fstream/cons/base.cc: Likewise.
      	* testsuite/27_io/ios_base/failure/cxx11.cc: Likewise.
      
      From-SVN: r244440
      Jonathan Wakely committed
    • re PR libstdc++/78389 (list::merge and list::sort are not exception safe) · e5dcfacf
      PR libstdc++/78389
      * include/bits/list.tcc (merge(list&&)):
      Adjust list sizes if the comparator throws.
      (merge(list&&, _StrictWeakOrdering)): Likewise.
      (sort()): Splice elements back from the scratch buffers
      if the comparator throws.
      (sort(_StrictWeakOrdering)): Likewise.
      * testsuite/23_containers/list/operations/78389.cc: New.
      
      From-SVN: r244439
      Ville Voutilainen committed
    • Mark test as XFAIL for C++17 mode · 45cac8ba
      	* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Mark
      	XFAIL for C++17 until node reinsertion supports fancy pointers.
      
      From-SVN: r244436
      Jonathan Wakely committed
    • Reload global options when strict aliasing is dropped (PR ipa/79043). · 77719b06
      2017-01-13  Martin Liska  <mliska@suse.cz>
      
      	PR ipa/79043
      	* function.c (set_cfun): Add new argument force.
      	* function.h (set_cfun): Likewise.
      	* ipa-inline-transform.c (inline_call): Use the function when
      	strict alising from is dropped for function we inline to.
      2017-01-13  Martin Liska  <mliska@suse.cz>
      
      	PR ipa/79043
      	* gcc.c-torture/execute/pr79043.c: New test.
      
      From-SVN: r244435
      Martin Liska committed
    • gimple-parser.c (c_parser_gimple_compound_statement): Handle nops. · b1c95bb5
      2017-01-13  Richard Biener  <rguenther@suse.de>
      
      	* gimple-parser.c (c_parser_gimple_compound_statement): Handle
      	nops.
      
      From-SVN: r244434
      Richard Biener committed
    • tree-pretty-print.c (dump_generic_node): Fix inverted condition for dumping GIMPLE INTEGER_CSTs. · 3d78845f
      2017-01-13  Richard Biener  <rguenther@suse.de>
      
      	* tree-pretty-print.c (dump_generic_node): Fix inverted condition
      	for dumping GIMPLE INTEGER_CSTs.
      
      From-SVN: r244433
      Richard Biener committed
    • PR78361 recognise noexcept functions as referenceable · c6ab9061
      2017-01-13  Jonathan Wakely  <jwakely@redhat.com>
      
      	PR libstdc++/78361
      	* testsuite/20_util/add_pointer/value.cc: Test forming function
      	pointers.
      
      2017-01-13  Michael Brune  <lucdanton@free.fr>
      
      	PR libstdc++/78361
      	* include/std/type_traits (__is_referenceable): Handle noexcept
      	function types.
      
      From-SVN: r244432
      Jonathan Wakely committed
    • Restore Solaris/SPARC Ada bootstrap · b3686dde
      	* gcc-interface/Makefile.in (SPARC/Solaris): Fix typo.
      
      From-SVN: r244431
      Rainer Orth committed
    • Require C11 for C++17 on Solaris · acd8b8dc
      	* config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __STDC_VERSION__
      	to 201112L since C++17.
      
      From-SVN: r244430
      Rainer Orth committed
    • 2017-01-13 Matthias Klose <doko@ubuntu.com> · b7aa844d
              * Import zlib 1.2.10.
              * configure: Regenerate.
      
      From-SVN: r244429
      Matthias Klose committed
    • Only declare gets for C++ < 2014 on Solaris (PR libstdc++/78979) · 2252a802
      	PR libstdc++/78979
      	* inclhack.def (solaris_gets_c11, solaris_gets_cxx14)
      	(solaris_std_gets_cxx14, solaris_stdlib_noreturn): New fixes.
      	* fixincl.x: Regenerate.
      	* tests/base/iso/stdio_iso.h [SOLARIS_GETS_C11_CHECK,
      	SOLARIS_GETS_CXX14_CHECK, SOLARIS_STD_GETS_CXX14_CHECK,
      	SOLARIS_STDLIB_NORETURN_CHECK]: New tests.
      
      From-SVN: r244428
      Rainer Orth committed
    • re PR middle-end/78411 (FAIL: gcc.target/i386/pr45685.c scan-assembler-times cmov 6) · a181b2bc
      2017-01-13  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/78411
      	* gcc.target/i386/pr45685.c: Add -ftree-loop-if-convert.
      
      From-SVN: r244427
      Richard Biener committed
    • getting_started_with_gnat.rst, [...]: Update documentation. · 33c51287
      	* doc/gnat_ugn/getting_started_with_gnat.rst,
      	doc/gnat_ugn/inline_assembler.rst,
      	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
      	doc/gnat_ugn/elaboration_order_handling_in_gnat.rst,
      	doc/gnat_ugn/about_this_guide.rst,
      	doc/gnat_ugn/platform_specific_information.rst,
      	doc/gnat_ugn/example_of_binder_output.rst,
      	doc/gnat_ugn/gnat_and_program_execution.rst,
      	doc/gnat_ugn/gnat_utility_programs.rst,
      	doc/gnat_ugn/the_gnat_compilation_model.rst,
      	doc/gnat_rm/implementation_defined_attributes.rst,
      	doc/gnat_rm/compatibility_and_porting_guide.rst,
      	doc/gnat_rm/standard_library_routines.rst,
      	doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
      	doc/gnat_rm/implementation_defined_pragmas.rst,
      	doc/gnat_rm/the_gnat_library.rst,
      	doc/gnat_rm/obsolescent_features.rst,
      	doc/gnat_rm/about_this_guide.rst,
      	doc/gnat_rm/the_implementation_of_standard_i_o.rst,
      	doc/gnat_rm/implementation_of_ada_2012_features.rst,
      	doc/gnat_rm/interfacing_to_other_languages.rst,
      	doc/gnat_rm/implementation_defined_aspects.rst,
      	doc/gnat_rm.rst: Update documentation.
      	* gnat_rm.texi, gnat_ugn.texi: Regenerated.
      
      From-SVN: r244426
      Arnaud Charlet committed
    • [multiple changes] · b5f3c913
      2017-01-13  Ed Schonberg  <schonberg@adacore.com>
      
      	* einfo.ads: minor grammar fixes in comment of Normalized_Position_Max.
      	* scil_ll.adb: Minor style fix in comment.
      	* sem_ch8.adb (Analyze_Expanded_Name): Perform dimension analysis
      	even if entity is already set, because the node may be renalyzed
      	after inlining transformations.
      
      2017-01-13  Javier Miranda  <miranda@adacore.com>
      
      	* sem_res.adb (Resolve_Call): Do not establish a transient scope
      	for a call to inlinable expression function (since the call will
      	be replaced by its returned object).
      	* exp_ch6.ads (Is_Inlinable_Expression_Function): New subprogram.
      	* exp_ch6.adb (Expression_Of_Expression_Function): New subprogram.
      	(Expand_Call): For inlinable expression function call replace the
      	call by its returned object.
      	(Is_Inlinable_Expression_Function): New subprogram.
      
      From-SVN: r244425
      Arnaud Charlet committed
    • [multiple changes] · 82e5c243
      2017-01-13  Gary Dismukes  <dismukes@adacore.com>
      
      	* checks.adb: Minor typo fix and reformatting.
      
      2017-01-13  Javier Miranda  <miranda@adacore.com>
      
      	* contracts.adb (Contract_Only_Subprograms): Remove formal.
      	(Copy_Original_Specification): Removed.
      	(Skip_Contract_Only_Subprogram): Move here checks previously
      	located in the caller of this routine (to leave the code more clean).
      	(Build_Contract_Only_Subprogram): Code cleanup.
      	* scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): Removed.
      	(Get_Contract_Only_Missing_Body_Name): Removed.
      
      From-SVN: r244424
      Arnaud Charlet committed
    • [multiple changes] · f8981f19
      2017-01-13  Javier Miranda  <miranda@adacore.com>
      
      	* sem_ch6.adb (Cloned_Expression): New subprogram.
      	(Freeze_Expr_Types): Complete previous patch since the expression
      	of an expression-function may have iterators and loops with
      	defining identifiers which, as part of the preanalysis of the
      	expression, may be left decorated with itypes that will not be
      	available in the tree passed to the backend.
      
      2017-01-13  Ed Schonberg  <schonberg@adacore.com>
      
      	* checks.adb (Apply_Type_Conversion_Checks): Optimize a type
      	conversion to Integer of an expression that is an attribute
      	reference 'Pos on an enumeration type.
      
      2017-01-13  Bob Duff  <duff@adacore.com>
      
      	* atree.ads: Minor comment fix.
      
      From-SVN: r244423
      Arnaud Charlet committed
    • sem_ch6.adb (Check_Aggregate_Accessibility): Ignore function calls in… · 996ce809
      sem_ch6.adb (Check_Aggregate_Accessibility): Ignore function calls in accessibility check on return statement.
      
      2017-01-13  Justin Squirek  <squirek@adacore.com>
      
      	* sem_ch6.adb (Check_Aggregate_Accessibility): Ignore function
      	calls in accessibility check on return statement.
      
      From-SVN: r244422
      Justin Squirek committed
    • sem_ch6.adb (Analyze_Subprogram_Body_Helper): Ensure that the input body is a… · 36be0082
      sem_ch6.adb (Analyze_Subprogram_Body_Helper): Ensure that the input body is a subprogram body before trying to determine...
      
      2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
      	Ensure that the input body is a subprogram body before trying to
      	determine whether it denoted an expression function.  Note that
      	subprogram body stubs cannot denote expression functions.
      
      From-SVN: r244421
      Hristian Kirtchev committed
    • bindgen.adb, [...]: Minor reformatting and typo fixes. · 804ec349
      2017-01-13  Gary Dismukes  <dismukes@adacore.com>
      
      	* bindgen.adb, sem_ch6.adb, binde.adb, exp_ch3.adb: Minor reformatting
      	and typo fixes.
      
      From-SVN: r244420
      Gary Dismukes committed
    • [multiple changes] · 354ae449
      2017-01-13  Javier Miranda  <miranda@adacore.com>
      
      	* einfo.ads (Component_Bit_Offset): Fix documentation.
      	* sem_ch13.adb (Check_Record_Representation_Clause): Skip check
      	on record holes for components with unknown compile-time offsets.
      
      2017-01-13  Bob Duff  <duff@adacore.com>
      
      	* ali.ads, ali.adb (Static_Elaboration_Model_Used): Remove unused flag.
      	* g-locfil.ads: Minor comment fix.
      
      2017-01-13  Bob Duff  <duff@adacore.com>
      
      	* binde.adb (Elab_New): New elaboration order algorithm
      	that is expected to cause fewer ABE issues. This is a work in
      	progress. The new algorithm is currently disabled, and can be
      	enable by the -dp switch, or by modifying the Do_Old and Do_New
      	etc. flags and rebuilding. Experimental code is included to
      	compare the results of the old and new algorithms.
      	* binde.ads: Use GNAT.Dynamic_Tables instead of Table, so we
      	can have multiple of these tables, so the old and new algorithms
      	can coexist.
      	* bindgen.ads (Gen_Output_File): Pass Elab_Order as an 'in'
      	parameter of type array. This avoids the global variable, and
      	allows bounds checking (which is normally defeated by the tables
      	packages). It also ensures that the Elab_Order is read-only
      	to Bindgen.
      	* bindgen.adb: Pass Elab_Order as an 'in' parameter to all
      	subprograms that need it, as above.
      	* debug.adb: Document new -dp switch. Modify doc of old -do
      	switch.
      	* gnatbind.adb (Gnatbind): Make use of new interfaces to Binde
      	and Bindgen.  Move writing of closure (-R and -Ra switches)
      	to Binde; that's more convenient.
      
      2017-01-13  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch6.adb (Analyze_Expression_Function): If the expression
      	function is a completion, all entities referenced in the
      	expression are frozen. As a consequence, a reference to an
      	uncompleted private type from an enclosing scope is illegal.
      
      From-SVN: r244419
      Arnaud Charlet committed
    • [multiple changes] · 448a1eb3
      2017-01-13  Javier Miranda  <miranda@adacore.com>
      
      	* sem_ch6.adb (Freeze_Expr_Types): New subprogram.
      	(Analyze_Subprogram_Body_Helper): At the occurrence of an
      	expression function declaration that is a completion, its
      	expression causes freezing (AI12-0103).
      
      2017-01-13  Vadim Godunko  <godunko@adacore.com>
      
      	* a-coinho-shared.adb: Fix memory leaks in Constant_Reference and
      	Reference functions of Ada.Containers.Indefinite_Holders.
      
      2017-01-13  Bob Duff  <duff@adacore.com>
      
      	* s-os_lib.ads: Minor comment fixes.
      
      2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* exp_ch3.adb (Default_Initialize_Object): Do not default
      	initialize an object when it is of a task type and restriction
      	No_Tasking is in effect because the initialization is obsolete.
      	* exp_ch9.adb (Build_Master_Entity): Do not generate a master when
      	restriction No_Tasking is in effect.
      	(Build_Master_Renaming): Do not rename a master when restriction
      	No_Tasking is in effect.
      
      From-SVN: r244418
      Arnaud Charlet committed
    • [multiple changes] · b2c1aa8f
      2017-01-13  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_aggr.adb (Resolve_Array_Aggregate): The code that verifies
      	the legality of An others clause applies as well to a choice in
      	an Iterated_component_ association.
      	(Resolve_Iterated_Component_Association): An others choice
      	is legal.
      	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): An
      	Iterated_Component_Association is not static.
      
      2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* exp_ch3.adb (Freeze_Type): Mark the Ghost mode as set in case
      	control is passed to the expresion handler before the new mode
      	is set.
      	* sem_ch12.adb (Analyze_Package_Instantiation,
      	Analyze_Subprogram_Instantiation): Mark the Ghost mode as set
      	in case control is passed to the expresion handler before the
      	new mode is set.
      
      From-SVN: r244417
      Arnaud Charlet committed
    • sem_aggr.adb, [...]: Minor reformatting. · 72cdccfa
      2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_aggr.adb, sem_ch3.adb, inline.adb, sem_util.adb, exp_ch4.adb,
      	exp_aggr.adb: Minor reformatting.
      
      From-SVN: r244416
      Hristian Kirtchev committed
    • inline.adb: Minor reformatting and typo fix. · fae8eb5b
      2017-01-13  Gary Dismukes  <dismukes@adacore.com>
      
      	* inline.adb: Minor reformatting and typo fix.
      
      From-SVN: r244415
      Gary Dismukes committed
    • [multiple changes] · 00f45f30
      2017-01-13  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_util.ads, sem_util.adb (Choice_List): Move function here
      	from sem_aggr.adb, for use elsewhere.
      	* sem_ch3.adb (Analyze_Object_Declaration): Use Choice_List.
      	* sem_aggr.adb (Resolve_Array_Aggregate): Remove
      	Iterated_Component_Present.
      	* exp_aggr.adb: Use Choice_List throughout, to handle
      	Iterated_Component_Associations.
      	(Gen_Loop): Generate proper loop for an
      	Iterated_Component_Association: loop variable has the identifier
      	of the original association. Generate a loop even for a single
      	component choice, in order to make loop parameter visible in
      	expression.
      	(Flatten): An Iterated_Component_Association is not static.
      
      2017-01-13  Yannick Moy  <moy@adacore.com>
      
      	* exp_ch4.adb (Expand_N_Op_Expon): Ensure that the value of
      	float exponentiation for statically known small negative values
      	is the reciprocal of the exponentiation for the opposite value
      	of the exponent.
      	* s-exnllf.adb (Exn_Float, Exn_Long_Float, Exn_Long_Long_Float):
      	Ensure that the value of float exponentiation for negative values
      	is the reciprocal of the exponentiation for the opposite value
      	of the exponent.
      	* inline.adb (Expand_Inlined_Call): Fix the count
      	for the number of generated gotos.
      
      From-SVN: r244414
      Arnaud Charlet committed
    • re PR fortran/70697 ([Coarray] ICE on EVENT WAIT with array element UNTIL_COUNT argument) · eaed3226
      gcc/testsuite/ChangeLog:
      
      2017-01-13  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/70697
      	* gfortran.dg/coarray/event_4.f08: New test.
      
      
      gcc/fortran/ChangeLog:
      
      2017-01-13  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/70697
      	* resolve.c (resolve_lock_unlock_event): Resolve the expression for
      	event's until_count.
      
      From-SVN: r244413
      Andre Vehreschild committed
    • Code cleanups. · 3603fa5c
      From-SVN: r244412
      Arnaud Charlet committed
    • [multiple changes] · 3abbc5c2
      2017-01-13  Yannick Moy  <moy@adacore.com>
      
      	* inline.adb: Code cleanup.
      	* sem_util.adb (Is_OK_Volatile_Context): Add
      	expression in delay statement as OK for volatile context.
      
      2017-01-13  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_aggr.adb (Resolve_Array_Aggregate): In normal compilation
      	mode a choice that is a subtype with a static predicate is
      	replaced by the values it covers. This transformation must not
      	be performed in ASIS mode, to preserve the source for analysis.
      
      2017-01-13  Justin Squirek  <squirek@adacore.com>
      
      	* nlists.ads: Correct minor typo.
      
      From-SVN: r244411
      Arnaud Charlet committed
    • [multiple changes] · ef74daea
      2017-01-13  Gary Dismukes  <dismukes@adacore.com>
      
      	* sem_ch13.adb: Minor reformatting and typo fix.
      
      2017-01-13  Ed Schonberg  <schonberg@adacore.com>
      
      	* par-ch4.adb (P_Aggregate_Or_Parent_Expr): An
      	Iterated_Component_Association is a named association in an
      	array aggregate.
      	* sem_aggr.adb (Resolve_Iterated_Component_Association): New
      	procedure, subsidiary of Resolve_Array_Aggregate, to analyze
      	and resolve the discrete choices and the expression of the
      	new construct.
      	* sinfo.adb, sinfo.ads: In analogy with N_Component_Association,
      	Loop_Actions and Box_Present are attributes of
      	N_Iterated_Component_Association nodes. Box_Present is always
      	False in this case.
      	* sprint.adb (Sprint_Node): An Iterated_Component_Association
      	has a Discrete_Choices list, as specified in the RM. A
      	Component_Association for aggregate uses instead a Choices list.
      	We have to live with this small inconsistency because the new
      	construct also has a defining identifier, and there is no way
      	to merge the two node structures.
      
      From-SVN: r244410
      Arnaud Charlet committed