1. 31 May, 2018 3 commits
  2. 30 May, 2018 37 commits
    • msp430.c (msp430_output_labelref): Prepend user_label_prefix to name. · 786b5b87
      	* config/msp430/msp430.c (msp430_output_labelref): Prepend
      	user_label_prefix to name.
      
      From-SVN: r260983
      Jozef Lawrynowicz committed
    • tree-core.h: Update comment about the format of NAME string passed to handler in attribute_spec. · 98c11285
      	* tree-core.h: Update comment about the format of NAME string
      	passed to handler in attribute_spec.
      
      From-SVN: r260982
      Jozef Lawrynowicz committed
    • msp430.md: Remove erroneous subreg expression from zero_extendqisi2 insn pattern. · 525213a5
      	* gcc/config/msp430/msp430.md: Remove erroneous subreg expression from
      	zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on
      	zero_extend{q,h}isi2.
      
      From-SVN: r260981
      Jozef Lawrynowicz committed
    • * crtstuff.c: Remove declaration of _Jv_RegisterClasses. · bbdf026f
      From-SVN: r260980
      Rasmus Villemoes committed
    • PR c++/77777 improve location for diagnostic · d72a3672
      Pass in the location of the invalid expression, not the next input
      location (which might be a comma or closing parenthesis on a different
      line).
      
      gcc/cp:
      
      	PR c++/77777
      	* call.c (resolve_args): Use location of expression, not current input
      	location.
      
      gcc/testsuite:
      
      	PR c++/77777
      	* g++.dg/diagnostic/pr77777.C: New test.
      
      From-SVN: r260979
      Jonathan Wakely committed
    • re PR c/55976 (-Werror=return-type should error on returning a value from a void function) · b67b9225
      2018-05-30  David Pagan  <dave.pagan@oracle.com>
      
      	PR c/55976
      	* c-decl.c (grokdeclarator): Update check for return type warnings.
      	(start_function): Likewise.
      	(finish_function): Likewise.
      	* c-typeck.c (c_finish_return): Update check for return type warnings.
      	Pass OPT_Wreturn_type to pedwarn when appropriate.
      
      	PR c/55976
      	* c-opts.c (c_common_post_options): Set default for warn_return_type
      	for C++/C++ with ObjC extensions only. For C, makes it possible to
      	differentiate between default (no option), -Wreturn-type, and
      	-Wno-return-type.
      
      	PR c/55976
      	* gcc.dg/noncompile/pr55976-1.c: New test.
      	* gcc.dg/noncompile/pr55976-2.c: New test.
      
      From-SVN: r260978
      David Pagan committed
    • extend.texi: Document some architecture specific constraints and sort entries. · e91c9fe5
      	* doc/extend.texi: Document some architecture specific
      	constraints and sort entries.
      
      From-SVN: r260977
      Borislav Petkov committed
    • PR middle-end/85369 - no -Wstringop-overflow for a strcpy / stpcpy call with a… · 3ce4cdb2
      PR middle-end/85369 - no -Wstringop-overflow for a strcpy / stpcpy call with a nonstring pointer when providing movstr pattern
      
      gcc/ChangeLog:
      
      	PR middle-end/85369
      	* builtins.c (expand_builtin_stpcpy_1): New function.
      	(expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
      	only if the former succeeds.
      
      From-SVN: r260976
      Martin Sebor committed
    • ChangeLog fix · 1ba9c854
      From-SVN: r260974
      Jason Merrill committed
    • Do not warn about zero-as-null when NULL is used. · 752e7593
      gcc/cp/
      
      Do not warn about zero-as-null when NULL is used.
      * call.c (conversion_null_warnings): Check for pointer
      types converted from zero constants.
      (convert_like_real): Add a warning sentinel at the end.
      * tree.c (maybe_warn_zero_as_null_pointer_constant): Also
      check null_node_p.
      
      testsuite/
      
      Do not warn about zero-as-null when NULL is used.
      * g++.dg/warn/Wzero-as-null-pointer-constant-7.C: New.
      
      From-SVN: r260973
      Ville Voutilainen committed
    • PR c++/85807 - ICE with call in template NSDMI. · 298434c9
      	* init.c (get_nsdmi): Use push_to/pop_from_top_level.
      	* tree.c (bot_manip): Don't set_flags_from_callee in a template.
      
      From-SVN: r260972
      Jason Merrill committed
    • patch to add support of ARMv8.4 in saphira · fbf5c1c6
      From-SVN: r260971
      Sameera Deshpande committed
    • simple-object.h (simple_object_copy_lto_debug_sections): Add rename parameter. · e062dc80
      	* simple-object.h (simple_object_copy_lto_debug_sections): Add rename
      	parameter.
      
      From-SVN: r260970
      Jan Hubicka committed
    • PR c++/85873 - constant initializer_list array not in .rodata. · 5603790d
      	* tree.c (build_target_expr): Set TREE_READONLY.
      	* call.c (set_up_extended_ref_temp): Set TREE_READONLY.
      
      From-SVN: r260969
      Jason Merrill committed
    • Improve error recovery for structured binding in condition. · cd7fa7a7
      	* parser.c (cp_parser_check_condition_declarator): Handle
      	cp_error_declarator.
      
      From-SVN: r260968
      Jason Merrill committed
    • Remove accidental commit. · d555daaf
      From-SVN: r260967
      Jan Hubicka committed
    • 20111213-1_0.c: Fix template. · da651528
      
      	* gcc.dg/lto/20111213-1_0.c: Fix template.
      	* gcc.dg/lto/20100603-1_0.c: Fix template.
      	* gcc.dg/lto/20100603-2_0.c: Fix template.
      	* gcc.dg/lto/20100603-3_0.c: Fix template.
      
      From-SVN: r260966
      Jan Hubicka committed
    • * doc/invoke.texi (-flinker-output): Document · 6dc1ee58
      From-SVN: r260965
      Jan Hubicka committed
    • passes.c (ipa_write_summaries): Only modify statements if body is in memory. · 2a58bcf2
      
      	* passes.c (ipa_write_summaries): Only modify statements if body
      	is in memory.
      	* cgraphunit.c (ipa_passes): Also produce intermeidate code when
      	incrementally linking.
      	(ipa_passes): Likewise.
      	* lto-cgraph.c (lto_output_node): When incrementally linking do not
      	pass down resolution info.
      	* common.opt (flag_incremental_link): Update info.
      	* gcc.c (plugin specs): Turn flinker-output=* to
      	-plugin-opt=-linker-output-known
      	* toplev.c (compile_file): Also cut compilation when doing incremental
      	link.
      	* flag-types. (enum lto_partition_model): Add
      	LTO_LINKER_OUTPUT_NOLTOREL.
      	(invoke.texi): Add -flinker-output docs.
      	* ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
      	link same way as WPA; do not stream in dead initializers.
      
      From-SVN: r260964
      Jan Hubicka committed
    • passes.c (ipa_write_summaries): Only modify statements if body is in memory. · 5b42d196
      
      	* passes.c (ipa_write_summaries): Only modify statements if body
      	is in memory.
      	* cgraphunit.c (ipa_passes): Also produce intermeidate code when
      	incrementally linking.
      	(ipa_passes): Likewise.
      	* lto-cgraph.c (lto_output_node): When incrementally linking do not
      	pass down resolution info.
      	* common.opt (flag_incremental_link): Update info.
      	* gcc.c (plugin specs): Turn flinker-output=* to
      	-plugin-opt=-linker-output-known
      	* toplev.c (compile_file): Also cut compilation when doing incremental
      	link.
      	* flag-types. (enum lto_partition_model): Add
      	LTO_LINKER_OUTPUT_NOLTOREL.
      	(invoke.texi): Add -flinker-output docs.
      	* ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
      	link same way as WPA; do not stream in dead initializers.
      
      	* dwarf2out.c (dwarf2out_die_ref_for_decl,
      	darf2out_register_external_decl): Support incremental link.
      
      	* lang.opt (lto_linker_output): Add nolto-rel.
      	* lto-lang.c (lto_post_options): Handle LTO_LINKER_OUTPUT_REL
      	and LTO_LINKER_OUTPUT_NOLTOREL.
      	(lto_init): Generate lto when doing incremental link.
      	* lto.c (lto_precess_name): Add lto1-inclink.
      
      	* testsuite/g++.dg/lto/20081109-1_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20081118_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20081119-1_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20081120-1_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20081120-2_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20081123_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20081204-1_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20081219_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20090302_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20090313_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20091002-2_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20091002-3_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20091026-1_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20100724-1_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20101010-4_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20101015-2_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/20110311-1_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/pr45621_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/pr48042_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/pr48354-1_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/pr54625-1_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/pr54625-2_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/lto/pr68811_0.C: Add -flinker-output=nolto-rel.
      	* testsuite/g++.dg/torture/pr43760.C: New test. Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20081120-1_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20081120-2_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20081126_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20081204-1_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20081204-2_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20081212-1_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20081224_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20090116_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20090126-1_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20090126-2_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20090206-1_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20090219_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20091013-1_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20091014-1_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20091015-1_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20091016-1_0.c: Add -flinker-output=nolto-rel.
      	* testsuite/gcc.dg/lto/20091020-1_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/20091020-2_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/20091027-1_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/20100426_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/20100430-1_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/20100603-1_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/20100603-2_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/20100603-3_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/20111213-1_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/pr45736_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/pr52634_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/pr54702_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/pr59323-2_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/pr59323_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/pr60820_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/pr81406_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gcc.dg/lto/pr83388_0.c: Add -flinker-output-nolto-rel.
      	* testsuite/gfortran.dg/lto/20091016-1_0.f90: Add -flinker-output-nolto-rel.
      	* testsuite/gfortran.dg/lto/20091028-1_0.f90: Add -flinker-output-nolto-rel.
      	* testsuite/gfortran.dg/lto/20091028-2_0.f90: Add -flinker-output-nolto-rel.
      	* testsuite/gfortran.dg/lto/pr46911_0.f: Add -flinker-output-nolto-rel.
      	* testsuite/gfortran.dg/lto/pr47839_0.f90: Add -flinker-output-nolto-rel.
      
      From-SVN: r260963
      Jan Hubicka committed
    • lto-wrapper.c (debug_objcopy): Add rename parameter; pass it down to… · 0df8dc6e
      lto-wrapper.c (debug_objcopy): Add rename parameter; pass it down to simple_object_copy_lto_debug_sections.
      
      
      	* lto-wrapper.c (debug_objcopy): Add rename parameter; pass
      	it down to simple_object_copy_lto_debug_sections.
      	(run_gcc): Determine incremental LTO link time and configure
      	lto1 into non-wpa mode, disable renaming of debug sections.
      
      From-SVN: r260961
      Jan Hubicka committed
    • lto-plugin.c: (non_claimed_files): New static var. · de54061d
      
      	* lto-plugin.c: (non_claimed_files): New static var.
      	(linker_ouput_known): New static var.
      	(all_symbols_read_handler): When user specifies linker output do not
      	imply it; output warning when nonlto-rel mode is forced.
      	(claim_file_header): Record number of nonclaimed files.
      	(process_option): Remember if linker output is known
      
      From-SVN: r260960
      Jan Hubicka committed
    • extend.texi (PowerPC AltiVec Built-in Functions): Remove descriptions of various… · 3d63e711
      extend.texi (PowerPC AltiVec Built-in Functions): Remove descriptions of various incorrectly documented functions.
      
      gcc/ChangeLog:
      
      2018-05-30  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
      	descriptions of various incorrectly documented functions.
      
      From-SVN: r260959
      Kelvin Nilsen committed
    • Fixing ChangeLog entry for earlier commit. · 04b21a0a
      From-SVN: r260958
      Andre Vieira committed
    • Reverting r260635 · 0c8e7621
          gcc
          2018-05-30  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	2018-05-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
              PR target/83009
      	Revert:
              * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
              address check not strict.
      
          gcc/testsuite
          2018-05-30  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	2018-05-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      	Revert
              PR target/83009
              * gcc/target/aarch64/store_v2vec_lanes.c: Add extra tests.
          git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260635 138bc75d-0d04-0410-961f-82ee72b054a4
      
      From-SVN: r260957
      Andre Vieira committed
    • simple-object.h (simple_object_copy_lto_debug_sections): Add rename parameter. · 7ce4ce10
      
      	* simple-object.h (simple_object_copy_lto_debug_sections): Add rename
      	parameter.
      	* simple-object.c (handle_lto_debug_sections): Add rename parameter.
      	(handle_lto_debug_sections_rename): New function.
      	(handle_lto_debug_sections_norename): New function.
      	(simple_object_copy_lto_debug_sections): Add rename parameter.
      
      From-SVN: r260956
      Jan Hubicka committed
    • re PR tree-optimization/85964 (compile time hog w/ -O3 -ftracer -fno-guess-branch-probability) · 74e0960e
      2018-05-30  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/85964
      	* tracer.c (better_p): Drop initialized count check, we only
      	call the function with initialized counts now.
      	(find_best_successor): Do find a best edge if one
      	has uninitialized count.
      	(find_best_predecessor): Likewise.  Do BB frequency check only
      	if count is initialized.
      
      From-SVN: r260954
      Richard Biener committed
    • [AArch64] Improve LDP/STP generation that requires a base register · d0b51297
      This patch generalizes the formation of LDP/STP that require a base register.
      
      In AArch64, LDP/STP instructions have different sized immediate offsets than
      normal LDR/STR instructions. This part of the backend attempts to spot groups
      of four LDR/STR instructions that can be turned into LDP/STP instructions by
      using a base register.
      
      Previously, we would only accept address pairs that were ordered in ascending
      or descending order, and only strictly sequential loads/stores. In fact, the
      instructions that we generate from this should be able to consider any order
      of loads or stores (provided that they can be re-ordered). They should also be
      able to accept non-sequential loads and stores provided that the two pairs of
      addresses are amenable to pairing. The current code is also overly restrictive
      on the range of addresses that are accepted, as LDP/STP instructions may take
      negative offsets as well as positive ones.
      
      This patch improves that by allowing us to accept all orders of loads/stores
      that are valid, and extending the range that the LDP/STP addresses can reach. 
      
      2017-05-30  Jackson Woodruff  <jackson.woodruff@arm.com>
      
      	* config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
      	(aarch64_ldrstr_offset_compare): New.
      	(aarch64_operands_adjust_ok_for_ldpstp): Update to consider all
      	load/store orderings.
      	(aarch64_gen_adjusted_ldpstp): Likewise.
      
      	* gcc.target/aarch64/simd/ldp_stp_9: New.
      	* gcc.target/aarch64/simd/ldp_stp_10: New.
      	* gcc.target/aarch64/simd/ldp_stp_11: New.
      	* gcc.target/aarch64/simd/ldp_stp_12: New.
      
      From-SVN: r260952
      Jackson Woodruff committed
    • [AArch64] Fix aarch64_ira_change_pseudo_allocno_class · 2eb2847e
      A recent commit removing '*' from the md files caused a large regression in
      h264ref.  It turns out aarch64_ira_change_pseudo_allocno_class is no longer
      effective after the SVE changes, and the combination results in the regression.
      This patch fixes it by explicitly checking for a subset of GENERAL_REGS and
      FP_REGS.  Add a missing ? to aarch64_get_lane to fix a failure in the testsuite.
      
          gcc/
      	* config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
      	Check for subset of GENERAL_REGS and FP_REGS.
      	* config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of
      	r=w alternative.
      
      From-SVN: r260951
      Wilco Dijkstra committed
    • [Ada] Update documentation of Sinfo.Package_Instantiation field · 30522cdb
      This was forgotten when renaming Get_Package_Instantiation_Node to
      Get_Unit_Instantiation_Node.
      
      2018-05-30  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* einfo.ads (Package_Instantiation): Update comment after a routine
      	that uses this field has been renamed.
      
      From-SVN: r260950
      Piotr Trojanek committed
    • [Ada] Unnesting: always transform local Raise statements · b23fa3d4
      2018-05-30  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_ch11.adb (Replace_Raise_By_Goto): The transfomation is legal even
      	if the local raise statement includes a string expression. This
      	expression might be picked up by an outer handler or discarded, but
      	plays no role in this transformation.
      
      From-SVN: r260949
      Ed Schonberg committed
    • [Ada] Minor reformatting · 07fb1ef4
      2018-05-30  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* exp_aggr.adb, exp_unst.adb, freeze.adb, libgnat/a-direct.adb: Minor
      	reformatting.
      
      From-SVN: r260948
      Hristian Kirtchev committed
    • [Ada] Unnesting: handle the semantic of Procedure_To_Call field · e00ee732
      2018-05-30  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_unst.adb (Visit_Node): Handle the semantic Procedure_To_Call
      	field in relevant nodes: Allocate, Free, and return statements.
      
      From-SVN: r260947
      Ed Schonberg committed
    • [Ada] Unnesting: skip unanalyzed Component_Assocation · 392a7e19
      2018-05-30  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_unst.adb (Visit_Node): Do not traverse a Component_Association
      	that has not been analyzed, as will be the case for a nested aggregate
      	that is expanded into individual assignments.
      
      From-SVN: r260946
      Ed Schonberg committed
    • [Ada] Implement pragma Max_Entry_Queue_Depth · 656d1fba
      This patch implements AI12-0164-1 for the aspect/pragma Max_Entry_Queue_Depth.
      Previously, the GNAT specific pragma Max_Queue_Length fulfilled this role, but
      was not named to match the standard and thus was insufficent.
      
      ------------
      -- Source --
      ------------
      
      --  pass.ads
      
      with System;
      package Pass is
      
         SOMETHING : constant Integer := 5;
         Variable : Boolean := False;
      
         protected type Protected_Example is
      
            entry A (Item : Integer)
               with Max_Entry_Queue_Depth => 2;            --  OK
      
            entry B (Item : Integer);
            pragma Max_Entry_Queue_Depth (SOMETHING);      --  OK
      
            entry C (Item : Integer);                      --  OK
      
            entry D (Item : Integer)
               with Max_Entry_Queue_Depth => 4;            --  OK
      
            entry D (Item : Integer; Item_B : Integer)
               with Max_Entry_Queue_Depth => Float'Digits; --  OK
      
            entry E (Item : Integer);
            pragma Max_Entry_Queue_Depth (SOMETHING * 2);  --  OK
      
            entry E (Item : Integer; Item_B : Integer);
            pragma Max_Entry_Queue_Depth (11);             --  OK
      
            entry F (Item : Integer; Item_B : Integer);
            pragma Pre (Variable = True);
            pragma Max_Entry_Queue_Depth (11);             --  OK
      
            entry G (Item : Integer; Item_B : Integer)
               with Pre => (Variable = True),
                    Max_Entry_Queue_Depth => 11;           --  OK
      
         private
            Data : Boolean := True;
         end Protected_Example;
      
         Prot_Ex  : Protected_Example;
      
      end Pass;
      
      --  fail.ads
      
      package Fail is
      
         --  Not near entry
      
         pragma Max_Entry_Queue_Depth (40);                                --  ERROR
      
         --  Task type
      
         task type Task_Example is
      
            entry Insert (Item : in Integer)
               with Max_Entry_Queue_Depth => 10;                           --  ERROR
      
            -- Entry family in task type
      
            entry A (Positive) (Item : in Integer)
               with Max_Entry_Queue_Depth => 10;                           --  ERROR
      
         end Task_Example;
      
         Task_Ex : Task_Example;
      
         --  Aspect applied to protected type
      
         protected type Protected_Failure_0
            with Max_Entry_Queue_Depth => 50 is                            --  ERROR
      
            entry A (Item : Integer);
         private
            Data : Integer := 0;
         end Protected_Failure_0;
      
         Protected_Failure_0_Ex : Protected_Failure_0;
      
         protected type Protected_Failure is
            pragma Max_Entry_Queue_Depth (10);                             --  ERROR
      
            --  Duplicates
      
            entry A (Item : Integer)
               with Max_Entry_Queue_Depth => 10;                           --  OK
            pragma Max_Entry_Queue_Depth (4);                              --  ERROR
      
            entry B (Item : Integer);
            pragma Max_Entry_Queue_Depth (40);                             --  OK
            pragma Max_Entry_Queue_Depth (4);                              --  ERROR
      
            entry C (Item : Integer)
               with Max_Entry_Queue_Depth => 10,                           --  OK
                    Max_Entry_Queue_Depth => 40;                           --  ERROR
      
            -- Duplicates with the same value
      
            entry AA (Item : Integer)
               with Max_Entry_Queue_Depth => 10;                           --  OK
            pragma Max_Entry_Queue_Depth (10);                             --  ERROR
      
            entry BB (Item : Integer);
            pragma Max_Entry_Queue_Depth (40);                             --  OK
            pragma Max_Entry_Queue_Depth (40);                             --  ERROR
      
            entry CC (Item : Integer)
               with Max_Entry_Queue_Depth => 10,                           --  OK
                    Max_Entry_Queue_Depth => 10;                           --  ERROR
      
            --  On subprogram
      
            procedure D (Item : Integer)
               with Max_Entry_Queue_Depth => 10;                           --  ERROR
      
            procedure E (Item : Integer);
            pragma Max_Entry_Queue_Depth (4);                              --  ERROR
      
            function F (Item : Integer) return Integer
               with Max_Entry_Queue_Depth => 10;                           --  ERROR
      
            function G (Item : Integer) return Integer;
            pragma Max_Entry_Queue_Depth (4);                              --  ERROR
      
            --  Bad parameters
      
            entry H (Item : Integer)
               with Max_Entry_Queue_Depth => 0;                            --  ERROR
      
            entry I (Item : Integer)
               with Max_Entry_Queue_Depth => -1;                           --  ERROR
      
            entry J (Item : Integer)
               with Max_Entry_Queue_Depth => 16#FFFF_FFFF_FFFF_FFFF_FFFF#; --  ERROR
      
            entry K (Item : Integer)
               with Max_Entry_Queue_Depth => False;                        --  ERROR
      
            entry L (Item : Integer)
               with Max_Entry_Queue_Depth => "JUNK";                       --  ERROR
      
            entry M (Item : Integer)
               with Max_Entry_Queue_Depth => 1.0;                          --  ERROR
      
            entry N (Item : Integer)
               with Max_Entry_Queue_Depth => Long_Integer'(3);             --  ERROR
      
            -- Entry family
      
            entry O (Boolean) (Item : Integer)
               with Max_Entry_Queue_Depth => 5;                            --  ERROR
      
         private
            Data : Integer := 0;
         end Protected_Failure;
      
         I : Positive := 1;
      
         Protected_Failure_Ex : Protected_Failure;
      
      end Fail;
      
      --  dtest.adb
      
      with Ada.Text_IO; use Ada.Text_IO;
      
      procedure Dtest is
         protected Prot is
            entry Wait;
              pragma Max_Entry_Queue_Depth (2);
            procedure Wakeup;
         private
            Barrier : Boolean := False;
         end Prot;
      
         protected body Prot is
            entry Wait when Barrier is
            begin
               null;
            end Wait;
      
            procedure Wakeup is
            begin
               Barrier := True;
            end Wakeup;
         end Prot;
      
         task type T;
      
         task body T is
         begin
            Put_Line ("Waiting...");
            Prot.Wait;
         exception
            when others =>
               Put_Line ("Got exception");
         end T;
      
         T1, T2 : T;
      begin
         delay 0.1;
      
         Prot.Wait;
         Put_Line ("Done");
      exception
         when others =>
            Put_Line ("Main got exception");
            Prot.Wakeup;
      end Dtest;
      
      ----------------------------
      -- Compilation and output --
      ----------------------------
      
      & gcc -c -g -gnatDG pass.ads
      & gcc -c -g fail.ads
      & grep -c "(2, 5, 0, 4, 6, 10, 11, 11, 11)" pass.ads.dg
      & gnatmake -g -q dtest
      fail.ads:5:04: pragma "Max_Queue_Length" must apply to a protected entry
      fail.ads:12:15: aspect "Max_Queue_Length" cannot apply to task entries
      fail.ads:17:15: aspect "Max_Queue_Length" cannot apply to task entries
      fail.ads:26:12: aspect "Max_Queue_Length" must apply to a protected entry
      fail.ads:36:07: pragma "Max_Queue_Length" must apply to a protected entry
      fail.ads:42:07: pragma "Max_Queue_Length" duplicates aspect declared at line 41
      fail.ads:46:07: pragma "Max_Queue_Length" duplicates pragma declared at line 45
      fail.ads:50:15: aspect "Max_Queue_Length" for "C" previously given at line 49
      fail.ads:56:07: pragma "Max_Queue_Length" duplicates aspect declared at line 55
      fail.ads:60:07: pragma "Max_Queue_Length" duplicates pragma declared at line 59
      fail.ads:64:15: aspect "Max_Queue_Length" for "CC" previously given at line 63
      fail.ads:69:15: aspect "Max_Queue_Length" must apply to a protected entry
      fail.ads:72:07: pragma "Max_Queue_Length" must apply to a protected entry
      fail.ads:75:15: aspect "Max_Queue_Length" must apply to a protected entry
      fail.ads:78:07: pragma "Max_Queue_Length" must apply to a protected entry
      fail.ads:83:35: entity for aspect "Max_Queue_Length" must be positive
      fail.ads:86:35: entity for aspect "Max_Queue_Length" must be positive
      fail.ads:89:35: entity for aspect "Max_Queue_Length" out of range of Integer
      fail.ads:92:35: expected an integer type
      fail.ads:92:35: found type "Standard.Boolean"
      fail.ads:95:35: expected an integer type
      fail.ads:95:35: found a string type
      fail.ads:98:35: expected an integer type
      fail.ads:98:35: found type universal real
      
      2018-05-30  Justin Squirek  <squirek@adacore.com>
      
      gcc/ada/
      
      	* aspects.adb, aspects.ads: Register new aspect.
      	* par-prag.adb (Prag): Register new pragma.
      	* sem_ch13.adb (Analyze_Aspect_Specifications): Add processing for new
      	aspect similar to Aspect_Max_Queue_Length.
      	* sem_prag.adb, sem_prag.ads (Analyze_Pragma): Register new pragma and
      	set it to use the same processing as Pragma_Max_Queue_Length.
      	* snames.ads-tmpl: Move definition of Name_Max_Entry_Queue_Depth so
      	that it can be processed as a pragma in addition to a restriction and
      	add an entry for the pragma itself.
      
      From-SVN: r260945
      Justin Squirek committed
    • [Ada] Extend the applicability of Thread_Local_Storage to composite types · d7db3f4f
      This patch allows the GNAT-specific Thread_Local_Storage to be applied
      to variables of a composite type initiallized with an aggregate with
      static components that requires no elaboration code.
      
      2018-05-30  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* freeze.adb (Freeze_Object_Declaration): A pragma Thread_Local_Storage
      	is now legal on a variable of composite type initialized with an
      	aggregate that is fully static and requires no elaboration code.
      	* exp_aggr.adb (Convert_To_Positional): Recognize additional cases of
      	nested aggregates that are compile-time static, so they can be used to
      	initialize variables declared with Threqd_Local_Storage.
      	* doc/gnat_rm/implementation_defined_pragmas.rst: Add documentation on
      	Thread_Local_Storage.
      	* gnat_rm.texi: Regenerate.
      
      gcc/testsuite/
      
      	* gnat.dg/tls1.adb, gnat.dg/tls1_pkg.ads: New testcase.
      
      From-SVN: r260944
      Ed Schonberg committed