1. 04 Jul, 2019 4 commits
  2. 03 Jul, 2019 36 commits
    • compiler: set varargs lowered for imported call expressions · 651c754c
          
          Fix compiler buglet: varargs lowering happens before inlinable
          function bodies are written out to export data, so set the "varargs
          lowered" flag on call expressions that we import.
          
          Fixes golang/go#32922
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/184919
      
      From-SVN: r273026
      Ian Lance Taylor committed
    • PR libstdc++/91067 fix missing exports for filesystem iterators · 67699bf6
      The copy assignment operator for recursive_directory_iterator was not
      exported despite being needed. The __shared_ptr default constructors are
      not needed when compiling with GCC but Clang requires them for -O1.
      
      	PR libstdc++/91067
      	* acinclude.m4 (libtool_VERSION): Bump to 6:27:0.
      	* configure: Regenerate.
      	* config/abi/pre/gnu.ver (GLIBCXX_3.4.27): Add new version. Export
      	missing symbols.
      	* testsuite/27_io/filesystem/iterators/91067.cc: New test.
      	* testsuite/util/testsuite_abi.cc: Add new symbol version.
      
      From-SVN: r273023
      Jonathan Wakely committed
    • [AArch64] Remove constraint strings from define_expand constructs · 1bbffb87
      A number of AArch64 define_expand patterns have specified constraints
      for their operands. But the constraint strings are ignored at expand
      time and are therefore redundant/useless. We now avoid specifying
      constraints in new define_expands, but we should clean up the existing
      define_expand definitions.
      
      For example, the constraint "=w" is removed in the following case:
      (define_expand "sqrt<mode>2"
          [(set (match_operand:GPF_F16 0 "register_operand" "=w")
      The "" marks with an empty constraint in define_expand are removed as well.
      
      2019-07-03  Dennis Zhang  <dennis.zhang@arm.com>
      
      gcc/
      	* config/aarch64/aarch64.md: Remove redundant constraints from
      	define_expand but keep some patterns untouched if they are
      	specially selected by TARGET_SECONDARY_RELOAD hook.
      	* config/aarch64/aarch64-sve.md: Likewise.
      	* config/aarch64/atomics.md: Remove redundant constraints from
      	define_expand.
      	* config/aarch64/aarch64-simd.md: Likewise.
      
      From-SVN: r273021
      Dennis Zhang committed
    • [Darwin] Revise pie,no-pie and rdynamic driver specs. · 03eddfb3
      Processing these early and pushing the corresponding Xlinker lines
      has the effect that the driver then supposes that there are linker
      inputs, and causes a link line to be created when it is not needed 
      
      The solution is to place these drive specs into the link spec and
      claim them at the end of that.
      
      2019-07-03  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* config/darwin.h (DRIVER_SELF_SPECS): Remove the linker cases.
      	(RDYNAMIC): Rename to, DARWIN_RDYNAMIC.
      	(DARWIN_PIE_SPEC, DARWIN_NOPIE_SPEC): Adjust to remove the Xlinker
      	clauses.
      	(LINK_COMMAND_SPEC_A): Add DARWIN_RDYNAMIC, DARWIN_PIE_SPEC and
      	DARWIN_NOPIE_SPEC.
      
      From-SVN: r273017
      Iain Sandoe committed
    • [Darwin] Some TLC for older Darwin versions. · 179c7ef5
      The library handling and some of the options for creating the crts for
      the older PPC Darwin versions had bit-rotted somewhat.  This adjusts the
      build criteria for the crts to avoid newer ld64 versions warnings about
      mismatches in build and object versions.
      
      Added to some of the comments that it's documented why the specs are as
      they are.
      
      2019-07-03  Iain Sandoe  <iain@sandoe.co.uk>
      
      gcc/
      
      	* config/darwin.h (REAL_LIBGCC_SPEC): Adjust for earlier Darwin.
      	(STARTFILE_SPEC): Split crt3 into a separate spec.
      	(DARWIN_EXTRA_SPECS): Add crt2 and crt3 spec.
      	(DARWIN_CRT2_SPEC): New.
      	(DARWIN_CRT3_SPEC): New.
      	(MIN_LD64_OMIT_STUBS): Revise to 62.1.
      	* config/rs6000/darwin.h (DARWIN_CRT2_SPEC): Revise conditions.
      	(DARWIN_CRT3_SPEC): New.
      
      libgcc/
      
      2019-07-03  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* config.host (powerpc-*-darwin*,powerpc64-*-darwin*): Revise crt
      	list.
      	* config/rs6000/t-darwin: Build crt3_2 for older systems.  Revise
      	mmacosx-version-min for crts to run across all system versions.
      	* config/rs6000/t-darwin64 (LIB2ADD): Remove.
      	* config/t-darwin: Revise mmacosx-version-min for crts to run across
      	system versions >= 10.4.
      
      From-SVN: r273016
      Iain Sandoe committed
    • altivec.md (altivec_mov<mode>, [...]): Change the RTL attribute "length" from… · 911c8df0
      altivec.md (altivec_mov<mode>, [...]): Change the RTL attribute "length" from "4" to "*" to allow the length attribute...
      
      2019-07-03  Michael Meissner  <meissner@linux.ibm.com>
      
      	* config/rs6000/altivec.md (altivec_mov<mode>, VM2 iterator):
      	Change the RTL attribute "length" from "4" to "*" to allow the
      	length attribute to be adjusted automatically for prefixed load,
      	store, and add immediate instructions.
      	* config/rs6000/rs6000.md (extendhi<mode>2, EXTHI iterator):
      	Likewise.
      	(extendsi<mode>2, EXTSI iterator): Likewise.
      	(movsi_internal1): Likewise.
      	(movsi_from_sf): Likewise.
      	(movdi_from_sf_zero_ext): Likewise.
      	(mov<mode>_internal): Likewise.
      	(movcc_internal1, QHI iterator): Likewise.
      	(mov<mode>_softfloat, FMOVE32 iterator): Likewise.
      	(movsf_from_si): Likewise.
      	(mov<mode>_hardfloat32, FMOVE64 iterator): Likewise.
      	(mov<mode>_softfloat64, FMOVE64 iterator): Likewise.
      	(mov<mode>, FMOVE128 iterator): Likewise.
      	(movdi_internal64): Likewise.
      	* config/rs6000/vsx.md (vsx_le_permute_<mode>, VSX_TI iterator):
      	Likewise.
      	(vsx_le_undo_permute_<mode>, VSX_TI iterator): Likewise.
      	(vsx_mov<mode>_64bit, VSX_M iterator): Likewise.
      	(vsx_mov<mode>_32bit, VSX_M iterator): Likewise.
      	(vsx_splat_v4sf): Likewise.
      
      From-SVN: r273013
      Michael Meissner committed
    • Fix store merging tests on Arm · e5833b56
      Fix the failing store merging test on Arm.  Aligning variables fixes a
      few cases, otherwise disable the test on Arm.  All store merging tests
      now pass.  Committed as obvious.
      
          testsuite/
      	* gcc.dg/store_merging_27.c: Fix test for Arm.
      	* gcc.dg/store_merging_28.c: Likewise.
      	* gcc.dg/store_merging_29.c: Likewise.
      	* gcc.dg/tree-ssa/dump-6.c: Likewise.
      
      From-SVN: r273011
      Wilco Dijkstra committed
    • compiler: include transitive imports in the type descriptor list · a35d6e9f
          
          In CL 179598, we were using Gogo::packages_, when compiling the
          main package, as the list of packages of which we need to
          register the type descriptors. This is not complete. It only
          includes main's direct import and one-level indirect imports. It
          does not include all the packages transitively imported.
          
          To fix that, we need to track all the transitive imports. We
          have almost already done that, for init functions. However, there
          may be packages that don't need init functions but do need to
          register type descriptors. For them, we add a dummy init function
          to its export data. So when we compile the main package we will
          see all the transitive imports. The dummy init functions are not
          real functions and are not called.
          
          Fixes golang/go#32901.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/184717
      
      From-SVN: r273009
      Ian Lance Taylor committed
    • PR debug/90981 Empty .debug_addr crashes -gdwarf-5 -gsplit-dwarf · 6c47a87b
      Even if there was no, or an empty address list we would try to generate
      a header for the .debug_addr section with -gdwarf-5 and -gsplit-dwarf.
      The skeleton DIE would also get a (dangling) DW_AT_addr_base in that case.
      
      	PR debug/90981
      	* dwarf2out.c (add_top_level_skeleton_die_attrs): Only add
      	DW_AT_addr_base if there is actually a .debug_addr section with
      	addresses.
      	(output_addr_table): Add DWARF5 table header generation here after
      	checking there are actually any addresses from...
      	(dwarf2out_finish): ...here.
      	* testsuite/g++.dg/pr90981.C: New test.
      
      From-SVN: r273008
      Mark Wielaard committed
    • re PR tree-optimization/91069 (Miscompare of 453.povray since r272843) · cc49641a
      2019-07-03  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/91069
      	* match.pd (vec_perm -> bit_insert): Fix element read from
      	first vector.
      
      	* gcc.dg/pr91069.c: New testcase.
      
      From-SVN: r273007
      Richard Biener committed
    • Add dbgcnt for gimple_match and generic_match. · d398999d
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* dbgcnt.def (DEBUG_COUNTER): Add match debug counter.
      	* genmatch.c (dt_simplify::gen_1): Generate dbgcnt
      	condition.
      	* generic-match-head.c: Include dbgcnt.h.
      	* gimple-match-head.c: Likewise.
      
      From-SVN: r273006
      Martin Liska committed
    • Rename SINGE_VALUE to TOPN_VALUES counters. · 596341c7
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* gcov-counter.def (GCOV_COUNTER_V_SINGLE): Remove.
      	(GCOV_COUNTER_V_TOPN): New.
      	(GCOV_COUNTER_V_INDIR): Use _topn.
      	* gcov-io.h (GCOV_DISK_SINGLE_VALUES): Remove.
      	(GCOV_TOPN_VALUES): New.
      	(GCOV_SINGLE_VALUE_COUNTERS): Remove.
      	(GCOV_TOPN_VALUES_COUNTERS): New.
      	* profile.c (instrument_values): Use HIST_TYPE_TOPN_VALUES.
      	* tree-profile.c:
      	(gimple_init_gcov_profiler): Rename variables from one_value
      	to topn_values.
      	(gimple_gen_one_value_profiler): Remove.
      	(gimple_gen_topn_values_profiler): New function.
      	* value-prof.c (dump_histogram_value): Use TOPN_VALUES
      	names instead of SINGLE_VALUE.
      	(stream_out_histogram_value): Likewise.
      	(stream_in_histogram_value): Likewise.
      	(get_most_common_single_value): Likewise.
      	(gimple_divmod_fixed_value_transform): Likewise.
      	(gimple_stringops_transform): Likewise.
      	(gimple_divmod_values_to_profile): Likewise.
      	(gimple_stringops_values_to_profile): Likewise.
      	(gimple_find_values_to_profile): Likewise.
      	* value-prof.h (enum hist_type): Rename to TOPN.
      	(gimple_gen_one_value_profiler): Remove.
      	(gimple_gen_topn_values_profiler): New.
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* Makefile.in: Use topn_values instead of one_value names.
      	* libgcov-merge.c (__gcov_merge_single): Move to ...
      	(__gcov_merge_topn): ... this.
      	(merge_single_value_set): Move to ...
      	(merge_topn_values_set): ... this.
      	* libgcov-profiler.c (__gcov_one_value_profiler_body): Move to
      	...
      	(__gcov_topn_values_profiler_body): ... this.
      	(__gcov_one_value_profiler_v2): Move to ...
      	(__gcov_topn_values_profiler): ... this.
      	(__gcov_one_value_profiler_v2_atomic): Move to ...
      	(__gcov_topn_values_profiler_atomic): ... this.
      	(__gcov_indirect_call_profiler_v4): Remove.
      	* libgcov-util.c (__gcov_single_counter_op): Move to ...
      	(__gcov_topn_counter_op): ... this.
      	* libgcov.h (L_gcov_merge_single): Remove.
      	(L_gcov_merge_topn): New.
      	(__gcov_merge_single): Remove.
      	(__gcov_merge_topn): New.
      	(__gcov_one_value_profiler_v2): Move to ..
      	(__gcov_topn_values_profiler): ... this.
      	(__gcov_one_value_profiler_v2_atomic): Move to ...
      	(__gcov_topn_values_profiler_atomic): ... this.
      
      From-SVN: r273005
      Martin Liska committed
    • Support N values in libgcov for single value counter type. · 1b309ca5
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/tree-prof/val-prof-2.c: Update scanned pattern
      	as we do now better.
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* libgcov-merge.c (merge_single_value_set): Support N values.
      	* libgcov-profiler.c (__gcov_one_value_profiler_body): Likewise.
      
      From-SVN: r273004
      Martin Liska committed
    • dwarf2out.c (add_scalar_info): Add back refererence to existing DIE if it has… · e157be91
      dwarf2out.c (add_scalar_info): Add back refererence to existing DIE if it has the DW_AT_data_member_location...
      
      	* dwarf2out.c (add_scalar_info): Add back refererence to existing DIE
      	if it has the DW_AT_data_member_location attribute.
      
      From-SVN: r273002
      Eric Botcazou committed
    • gimple-pretty-print.c (dump_ternary_rhs): Fix BIT_INSERT_EXPR dumping. · 6235b078
      2019-07-03  Richard Biener  <rguenther@suse.de>
      
      	* gimple-pretty-print.c (dump_ternary_rhs): Fix BIT_INSERT_EXPR
      	dumping.
      
      From-SVN: r273001
      Richard Biener committed
    • [aarch64]: force frame pointer setup before tlsdesc call · 0e510d18
      The operation that sets up the tlsdesc register is really a function
      call; as such, the frame pointer should really be correctly set up
      before this happens.  However, because it does not appear as a
      call_insn in the RTL the normal dependencies are not added
      automatically.  We fix this by adding a USE of FP_REGNUM to prevent
      migration of the frame-pointer setup past the call by the scheduler.
      If a frame pointer is not being used, this is harmless since it only
      represents a scheduling constraint.
      
      2019-07-03  Sylvia Taylor  <sylvia.taylor@arm.com>
      
      	* config/aarch64/aarch64.md (FP_REGNUM): New constant.
      	(tlsdesc_small_advsimd_<mode>): Add use of FP_REGNUM.
      	(tlsdesc_small_sve_<mode>): Likewise.
      
      From-SVN: r273000
      Sylvia Taylor committed
    • Fix ChangeLog date for last commit · e676d704
      From-SVN: r272999
      Andrea Corallo committed
    • Add myself to MAINTAINERS · e7dbf7f0
      2019-07-02  Andrea Corallo  <andrea.corallo@arm.com>
      
      	* MAINTAINERS (Write After Approval): Add myself.
      
      From-SVN: r272997
      Andrea Corallo committed
    • Add zstd support for LTO bytecode compression. · 87741e51
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* Makefile.in: Define ZSTD_LIB.
      	* common.opt: Adjust compression level
      	to support also zstd levels.
      	* config.in: Regenerate.
      	* configure: Likewise.
      	* configure.ac: Add --with-zstd and --with-zstd-include options
      	and detect ZSTD.
      	* doc/install.texi: Mention zstd dependency.
      	* gcc.c: Print supported LTO compression algorithms.
      	* lto-compress.c (lto_normalized_zstd_level): Likewise.
      	(lto_compression_zstd): Likewise.
      	(lto_uncompression_zstd): Likewise.
      	(lto_end_compression): Dispatch in between zlib and zstd.
      	(lto_compression_zlib): Mark with ATTRIBUTE_UNUSED.
      	(lto_uncompression_zlib): Make it static.
      	* lto-compress.h (lto_end_uncompression): Fix GNU coding style.
      	* lto-section-in.c (lto_get_section_data): Pass info
      	about used compression.
      	* lto-streamer-out.c: By default use zstd when possible.
      	* timevar.def (TV_IPA_LTO_DECOMPRESS): Rename to decompression
      	(TV_IPA_LTO_COMPRESS): Likewise for compression.
      
      From-SVN: r272996
      Martin Liska committed
    • Add .gnu.lto_.lto section. · 88614dfa
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* lto-section-in.c (lto_get_section_data): Add "lto" section.
      	* lto-section-out.c (lto_destroy_simple_output_block): Never
      	compress LTO_section_lto section.
      	* lto-streamer-out.c (produce_asm): Do not set major_version
      	and minor_version.
      	(lto_output_toplevel_asms): Likewise.
      	(produce_lto_section): New function.
      	(lto_output): Call produce_lto_section.
      	(lto_write_mode_table): Do not set major_version and
      	minor_version.
      	(produce_asm_for_decls): Likewise.
      	* lto-streamer.h (enum lto_section_type): Add LTO_section_lto
      	type.
      	(struct lto_header): Remove.
      	(struct lto_section): New struct.
      	(struct lto_simple_header): Do not inherit from lto_header.
      	(struct lto_file_decl_data): Add lto_section_header field.
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* lto-common.c: Read LTO section and verify header.
      
      From-SVN: r272995
      Martin Liska committed
    • Remove another bunch of dead assignment. · 8ba6ea87
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* lra-eliminations.c (eliminate_regs_in_insn): Remove
      	dead assignemts.
      	* reg-stack.c (check_asm_stack_operands): Likewise.
      	* tree-ssa-structalias.c (create_function_info_for): Likewise.
      	* tree-vect-generic.c (expand_vector_operations_1): Likewise.
      	* config/i386/i386-expand.c (ix86_expand_sse2_mulvxdi3): Use
      	force_expand_binop.
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* c-common.c (try_to_locate_new_include_insertion_point): Remove
      	dead assignemts.
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* call.c (build_new_op_1): Remove
      	dead assignemts.
      	* typeck.c (cp_build_binary_op): Likewise.
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* check.c (gfc_check_c_funloc): Remove
      	dead assignemts.
      	* decl.c (variable_decl): Likewise.
      	* resolve.c (resolve_typebound_function): Likewise.
      	* simplify.c (gfc_simplify_matmul): Likewise.
      	(gfc_simplify_scan): Likewise.
      	* trans-array.c (gfc_could_be_alias): Likewise.
      	* trans-common.c (add_equivalences): Likewise.
      	* trans-expr.c (trans_class_vptr_len_assignment): Likewise.
      	(gfc_trans_array_constructor_copy): Likewise.
      	(gfc_trans_assignment_1): Likewise.
      	* trans-intrinsic.c (conv_intrinsic_atomic_op): Likewise.
      	* trans-openmp.c (gfc_omp_finish_clause): Likewise.
      	* trans-types.c (gfc_get_array_descriptor_base): Likewise.
      	* trans.c (gfc_build_final_call): Likewise.
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* line-map.c (linemap_get_expansion_filename): Remove
      	dead assignemts.
      	* mkdeps.c (make_write): Likewise.
      
      From-SVN: r272994
      Martin Liska committed
    • Handle '\0' in strcmp in RTL expansion (PR tree-optimization/90892). · 6aa2e42c
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	PR tree-optimization/90892
      	* builtins.c (inline_expand_builtin_string_cmp): Handle '\0'
      	in string constants.
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	PR tree-optimization/90892
      	* gcc.dg/pr90892.c: New test.
      
      From-SVN: r272993
      Martin Liska committed
    • Add to same comdate group only if set (PR middle-end/90899) · d04295d2
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	PR middle-end/90899
      	* multiple_target.c (create_dispatcher_calls): Add to comdat
      	group only if set for ifunc.
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	PR middle-end/90899
      	* gcc.target/i386/pr90899.c: New test.
      
      From-SVN: r272992
      Martin Liska committed
    • Fix use-after-scope in host-mingw32.c (PR target/88056). · 22dfc3e8
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	PR target/88056
      	* config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
      	Define local_object_name in outer scope in order to handle
      	use-after-scope issue.
      
      From-SVN: r272991
      Martin Liska committed
    • Add -fprofile-note option. · 8e37c995
      2019-07-03  Martin Liska  <mliska@suse.cz>
      
      	* common.opt: Add fprofile-note.
      	* coverage.c (coverage_init): Append the option
      	to bbg_file_name.
      	* doc/invoke.texi: Document -fprofile-note.
      
      From-SVN: r272990
      Martin Liska committed
    • re PR tree-optimization/91033 (ICE in vect_analyze_loop, at tree-vect-loop.c:2416) · a7b3509e
      	PR tree-optimization/91033
      	* tree-vectorizer.h (vect_mark_stmts_to_be_vectorized,
      	vect_analyze_data_refs): Add bool * arguments.
      	* tree-vect-data-refs.c (vect_analyze_data_refs): Add fatal argument,
      	if failure is due to scatter/gather, set *fatal to false if non-NULL.
      	* tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise.
      	* tree-vect-loop.c (vect_analyze_loop_2): Adjust
      	vect_mark_stmts_to_be_vectorized and vect_analyze_data_refs callers.
      	* tree-vect-slp.c (vect_slp_analyze_bb_1): Adjust
      	vect_analyze_data_refs caller.
      
      	* gcc.target/i386/pr91033.c: New test.
      
      From-SVN: r272989
      Jakub Jelinek committed
    • [Ada] Document new flags in GNATpp · 49d0d5fc
      2019-07-03  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/gnat_utility_programs.rst: Document new flags in
      	GNATpp.
      
      From-SVN: r272988
      Bob Duff committed
    • [Ada] Forced elaboration order in Elaboration order v4.0 · 76b4158b
      This patch refactors the forced elaboration order functionality,
      reintegrates it in Binde, and impelements it in Bindo.
      
      ------------
      -- Source --
      ------------
      
      --  server.ads
      
      package Server is
      end Server;
      
      --  client.ads
      
      with Server;
      
      package Client is
      end Client;
      
      --  main.adb
      
      with Client;
      
      procedure Main is begin null; end Main;
      
      --  duplicate_1.txt
      
      server (spec)
      client (spec)
      server (spec)
      
      --  error_unit_1.txt
      
      no such unit
      client (spec)
      
      --  error_unit_2.txt
      
      no such unit
      client (spec)
      
      --  error_unit_3.txt
      
      no such unit     --  comment
      client (spec)
      
      --  error_unit_4.txt
      
               no such unit     --  comment
      
      client (spec)
      
      --  error_unit_5.txt
      
      no such unit (body)
      client (spec)
      
      --  error_unit_6.txt
      
          no such unit (body)
      client (spec)
      
      --  error_unit_7.txt
      
          no such unit (body)    --  comment
      client (spec)
      
      --  error_unit_8.txt
      
          no such unit (body)--  comment
      client (spec)
      
      --  error_unit_9.txt
      
          no such unit--  comment
      client (spec)
      
      --  no_unit_1.txt
      
      --  no_unit_2.txt
      
      --  no_unit_3.txt
      
            --  comment
      
      --  no_unit_4.txt
      
      --  no_unit_5.txt
      
      --  no_unit_6.txt
      
             --  comment
      
      --  no_unit_7.txt
      
      --  no_unit_8.txt
      
          --  comment
      --  comment
      
      --  ok_unit_1.txt
      
      server (spec)
      client (spec)
      
      --  ok_unit_2.txt
      
          server (spec)
      client (spec)
      
      --  ok_unit_3.txt
      
          server (spec)
      client (spec)
      
      --  ok_unit_4.txt
      
          server (spec)      --  comment
      client (spec)
      
      --  ok_unit_5.txt
      
      server (spec)
      client (spec)
      
      --  ok_unit_6.txt
      
      server (spec)
      client (spec)    --  comment
      
      --  ok_unit_7.txt
      
      server (spec)
      client (spec)    --  comment
      
      --  ok_unit_8.txt
      
          --  comment
      --  comment
          server (spec)
      
         --  comment
      --  comment
      
      client (spec)    --  comment
      
      --  ok_unit_9.txt
      
      server (spec)--  comment
      client (spec)
      
      ----------------------------
      -- Compilation and output --
      ----------------------------
      $ gnatmake -q main.adb
      $ gnatbind -fno_unit_1.txt main.ali
      $ gnatbind -fno_unit_2.txt main.ali
      $ gnatbind -fno_unit_3.txt main.ali
      $ gnatbind -fno_unit_4.txt main.ali
      $ gnatbind -fno_unit_5.txt main.ali
      $ gnatbind -fno_unit_6.txt main.ali
      $ gnatbind -fno_unit_7.txt main.ali
      $ gnatbind -fno_unit_8.txt main.ali
      $ gnatbind -ferror_unit_1.txt main.ali
      $ gnatbind -ferror_unit_2.txt main.ali
      $ gnatbind -ferror_unit_3.txt main.ali
      $ gnatbind -ferror_unit_4.txt main.ali
      $ gnatbind -ferror_unit_5.txt main.ali
      $ gnatbind -ferror_unit_6.txt main.ali
      $ gnatbind -ferror_unit_7.txt main.ali
      $ gnatbind -ferror_unit_8.txt main.ali
      $ gnatbind -ferror_unit_9.txt main.ali
      $ gnatbind -fduplicate_1.txt main.ali
      $ gnatbind -fok_unit_1.txt main.ali
      $ gnatbind -fok_unit_2.txt main.ali
      $ gnatbind -fok_unit_3.txt main.ali
      $ gnatbind -fok_unit_4.txt main.ali
      $ gnatbind -fok_unit_5.txt main.ali
      $ gnatbind -fok_unit_6.txt main.ali
      $ gnatbind -fok_unit_7.txt main.ali
      $ gnatbind -fok_unit_8.txt main.ali
      $ gnatbind -fok_unit_9.txt main.ali
      "no such unit": not present; ignored
      "no such unit": not present; ignored
      "no such unit": not present; ignored
      "no such unit": not present; ignored
      "no such unit%b": not present; ignored
      "no such unit%b": not present; ignored
      "no such unit%b": not present; ignored
      "no such unit%b": not present; ignored
      "no such unit": not present; ignored
      server (spec) <-- client (spec)
      error: duplicate_1.txt:3: duplicate unit name "server (spec)" from line 1
      server (spec) <-- client (spec)
      server (spec) <-- client (spec)
      server (spec) <-- client (spec)
      server (spec) <-- client (spec)
      server (spec) <-- client (spec)
      server (spec) <-- client (spec)
      server (spec) <-- client (spec)
      server (spec) <-- client (spec)
      server (spec) <-- client (spec)
      
      2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* binde.adb: Remove with clause for System.OS_Lib.
      	(Force_Elab_Order): Refactor the majority of the code in Butil.
      	Use the new forced units iterator to obtain unit names.
      	* bindo-builders.adb: Add with and use clauses for Binderr,
      	Butil, Opt, Output, Types, GNAT, and GNAT.Dynamic_HTables.  Add
      	a hash table which maps units to line number in the forced
      	elaboration order file.
      	(Add_Unit): New routine.
      	(Build_Library_Graph): Create forced edges between pairs of
      	units listed in the forced elaboration order file.
      	(Create_Forced_Edge, Create_Forced_Edges, Destroy_Line_Number,
      	Duplicate_Unit_Error, Hash_Unit, Internal_Unit_Info,
      	Is_Duplicate_Unit, Missing_Unit_Info): New routines.
      	* bindo-graphs.adb (Is_Internal_Unit, Is_Predefined_Unit):
      	Refactor some of the behavior to Bindo-Units.
      	* bindo-graphs.ads: Enable the enumeration literal for forced
      	edges.
      	* bindo-units.adb, bindo-units.ads (Is_Internal_Unit,
      	Is_Predefined_Unit): New routines.
      	* butil.adb: Add with and use clauses for Opt, GNAT, and
      	System.OS_Lib.  Add with clause for Unchecked_Deallocation.
      	(Has_Next, Iterate_Forced_Units, Next, Parse_Next_Unit_Name,
      	Read_Forced_Elab_Order_File): New routines.
      	* butil.ads: Add with and use clauses for Types.  Add new
      	iterator over the units listed in the forced elaboration order
      	file.
      	(Has_Next, Iterate_Forced_Units, Next): New routine.
      	* namet.adb, namet.ads (Present): New routine.
      
      From-SVN: r272987
      Hristian Kirtchev committed
    • [Ada] Crash on anonymous access-to-class-wide with tasks · 336878fc
      This patch fixes a bug in which if an object declaration is of an
      anonymous access type whose designated type is a limited class-wide type
      (but not an interface), and the object is initialized with an allocator,
      and the designated type of the allocator contains tasks, the compiler
      would crash.
      
      2019-07-03  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* sem_ch3.adb (Access_Definition): The code was creating a
      	master in the case where the designated type is a class-wide
      	interface type. Create a master in the noninterface case as
      	well. That is, create a master for all limited class-wide types.
      
      gcc/testsuite/
      
      	* gnat.dg/task2.adb, gnat.dg/task2_pkg.adb,
      	gnat.dg/task2_pkg.ads: New testcase.
      
      From-SVN: r272986
      Bob Duff committed
    • [Ada] Suppress warnings in generic instantiations with pragma Warnings · 3f3dbb7b
      Warnings issued by GNAT or GNATprove inside generic instantiations can
      now be suppressed by using pragma Warnings Off/On around the instance.
      This has mostly an effect on GNATprove, since GNAT typically does not
      issue warnings on instantiations, only on the generic code itself.
      
      2019-07-03  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* erroutc.adb (Sloc_In_Range): New function to determine whether
      	the range of a pragma Warnings covers a location, taking
      	instantiations into account.
      
      From-SVN: r272985
      Yannick Moy committed
    • [Ada] New routine to access file on command line · 10aea826
      This patch adds a new routine to query the first file argument of the
      commandline without moving to the next file. This is needed in SPARK.
      
      There is no impact on compilation.
      
      2019-07-03  Johannes Kanig  <kanig@adacore.com>
      
      gcc/ada/
      
      	* osint.ads, osint.adb (Get_First_Main_File_Name): New routine
      	to access the first file provided on the command line.
      
      From-SVN: r272984
      Johannes Kanig committed
    • [Ada] Crash on front-end inlining of subp. with aspect specifications · 5460389b
      This patch fixes a gap in the handling of formals when inlining a call
      to a subprogram marked Inline_Always. For the inlining, the formals are
      replaced by the actuals in the block constructed for inlining, The
      traversal that performs this replacement does not apply to aspect
      specifications that may appear in the original body, because these
      aspects are only indirectly reachable from the nodes to which they
      apply: a separate traversal is required to perform the replacement in
      the expressions for any aspect specification present in the source.
      
      2019-07-03  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* inline.adb (Process_Formals_In_Aspects): New procedure within
      	Expand_Inlined_Call, to perform a replacement of references to
      	formals that appear in aspect specifications within the body
      	being inlined.
      
      gcc/testsuite/
      
      	* gnat.dg/inline16.adb, gnat.dg/inline16_gen.adb,
      	gnat.dg/inline16_gen.ads, gnat.dg/inline16_types.ads: New
      	testcase.
      
      From-SVN: r272983
      Ed Schonberg committed
    • [Ada] Incorrect expansion on renamings of formal parameters · eee51f3d
      This patch fixes an issue whereby a renaming of an unconstrained formal
      parameter leads to spurious runtime errors; manifesting either as a
      storage or constraint error due to incorrect bounds being assumed.
      
      This issue also occurs when the renamings are implicit such as through
      generic instantiations.
      
      2019-07-03  Justin Squirek  <squirek@adacore.com>
      
      gcc/ada/
      
      	* sem_ch8.adb (Analyze_Object_Renaming): Add call to search for
      	the appropriate actual subtype of the object renaming being
      	analyzed.
      	(Check_Constrained_Object): Minor cleanup.
      
      gcc/testsuite/
      
      	* gnat.dg/renaming13.adb, gnat.dg/renaming14.adb: New testcases.
      
      From-SVN: r272982
      Justin Squirek committed
    • [Ada] Refine pointer support in SPARK · f4c16c58
      Refine the implementation of pointer support for SPARK analysis.
      
      There is no impact on compilation.
      
      2019-07-03  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* sem_spark.adb (Get_Observed_Or_Borrowed_Expr): New function to
      	return go through traversal function call.
      	(Check_Type): Consistently use underlying type.
      	(Get_Perm): Adapt for case of elaboration code where variables
      	are not declared in the environment. Remove incorrect handling
      	of borrow and observe.
      
      From-SVN: r272981
      Yannick Moy committed
    • [Ada] Spurious visibility error in inlined function · abc856cf
      This patch corrects the use of tree replication when inlining a function
      that returns an unconstrained result, and its sole statement is an
      extended return statement. The use of New_Copy_Tree ensires that global
      references saved in a generic template are properly carried over when
      the function is instantiated and inlined.
      
      2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* inline.adb (Build_Return_Object_Formal): New routine.
      	(Can_Split_Unconstrained_Function): Code clean up.
      	(Copy_Formals,Copy_Return_Object): New routines.
      	(Split_Unconstrained_Function): Code clean up and refactoring.
      
      gcc/testsuite/
      
      	* gnat.dg/inline15.adb, gnat.dg/inline15_gen.adb,
      	gnat.dg/inline15_gen.ads, gnat.dg/inline15_types.ads: New
      	testcase.
      
      From-SVN: r272980
      Hristian Kirtchev committed
    • [Ada] Minor editorial corrections and reformatting · 866000e7
      2019-07-03  Gary Dismukes  <dismukes@adacore.com>
      
      gcc/ada/
      
      	* bindo-augmentors.adb, bindo-augmentors.ads,
      	bindo-builders.ads, bindo-elaborators.adb, sem_ch12.adb,
      	sem_ch13.adb, sem_spark.adb, sinfo.ads: Minor editorial
      	corrections and reformatting.
      
      From-SVN: r272979
      Gary Dismukes committed