1. 21 Aug, 2018 40 commits
    • Unconditionally use MAX_EXPR/MIN_EXPR for MAX/MIN intrinsics · fa3d2d38
      For floating point types, the question is what MAX(a, NaN) or MIN(a,
      NaN) should return (where "a" is a normal number).  There are valid
      usecases for returning either one, but the Fortran standard doesn't
      specify which one should be chosen.  Also, there is no consensus among
      other tested compilers.  In short, it's a mess.  So lets just do
      whatever is fastest, which is using MAX_EXPR/MIN_EXPR which are not
      defined to do anything in particular if one of the operands is a NaN.
      
      gcc/fortran/ChangeLog:
      
      2018-08-21  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	* trans-intrinsic.c (gfc_conv_intrinsic_minmax): Use
      	MAX_EXPR/MIN_EXPR unconditionally for real arguments.
      	* gfortran.texi (Compiler Characteristics): Document MAX/MIN
      	behavior wrt NaN.
      
      gcc/testsuite/ChangeLog:
      
      2018-08-21  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	* gfortran.dg/nan_1.f90: Remove tests that test MAX/MIN with NaNs.
      
      From-SVN: r263751
      Janne Blomqvist committed
    • re PR fortran/25829 ([F03] Asynchronous IO support) · 2b4c9065
      2018-08-21  Nicolas Koenig  <koenigni@gcc.gnu.org>
      	Thomas Koenig <tkoenig@gcc.gnu.org>
      
      	PR fortran/25829
      	* gfortran.texi: Add description of asynchronous I/O.
      	* trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables
      	as volatile.
      	* trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to
      	st_wait_async and change argument spec from ".X" to ".w".
      	(gfc_trans_wait): Pass ID argument via reference.
      
      2018-08-21  Nicolas Koenig  <koenigni@gcc.gnu.org>
      	Thomas Koenig <tkoenig@gcc.gnu.org>
      
      	PR fortran/25829
      	* gfortran.dg/f2003_inquire_1.f03: Add write statement.
      	* gfortran.dg/f2003_io_1.f03: Add wait statement.
      
      2018-08-21  Nicolas Koenig  <koenigni@gcc.gnu.org>
      	Thomas Koenig <tkoenig@gcc.gnu.org>
      
      	PR fortran/25829
      	* Makefile.am: Add async.c to gfor_io_src.
      	Add async.h to gfor_io_headers.
      	* Makefile.in: Regenerated.
      	* gfortran.map: Add _gfortran_st_wait_async.
      	* io/async.c: New file.
      	* io/async.h: New file.
      	* io/close.c: Include async.h.
      	(st_close): Call async_wait for an asynchronous unit.
      	* io/file_pos.c (st_backspace): Likewise.
      	(st_endfile): Likewise.
      	(st_rewind): Likewise.
      	(st_flush): Likewise.
      	* io/inquire.c: Add handling for asynchronous PENDING
      	and ID arguments.
      	* io/io.h (st_parameter_dt): Add async bit.
      	(st_parameter_wait): Correct.
      	(gfc_unit): Add au pointer.
      	(st_wait_async): Add prototype.
      	(transfer_array_inner): Likewise.
      	(st_write_done_worker): Likewise.
      	* io/open.c: Include async.h.
      	(new_unit): Initialize asynchronous unit.
      	* io/transfer.c (async_opt): New struct.
      	(wrap_scalar_transfer): New function.
      	(transfer_integer): Call wrap_scalar_transfer to do the work.
      	(transfer_real): Likewise.
      	(transfer_real_write): Likewise.
      	(transfer_character): Likewise.
      	(transfer_character_wide): Likewise.
      	(transfer_complex): Likewise.
      	(transfer_array_inner): New function.
      	(transfer_array): Call transfer_array_inner.
      	(transfer_derived): Call wrap_scalar_transfer.
      	(data_transfer_init): Check for asynchronous I/O.
      	Perform a wait operation on any pending asynchronous I/O
      	if the data transfer is synchronous. Copy PDT and enqueue
      	thread for data transfer.
      	(st_read_done_worker): New function.
      	(st_read_done): Enqueue transfer or call st_read_done_worker.
      	(st_write_done_worker): New function.
      	(st_write_done): Enqueue transfer or call st_read_done_worker.
      	(st_wait): Document as no-op for compatibility reasons.
      	(st_wait_async): New function.
      	* io/unit.c (insert_unit): Use macros LOCK, UNLOCK and TRYLOCK;
      	add NOTE where necessary.
      	(get_gfc_unit): Likewise.
      	(init_units): Likewise.
      	(close_unit_1): Likewise. Call async_close if asynchronous.
      	(close_unit): Use macros LOCK and UNLOCK.
      	(finish_last_advance_record): Likewise.
      	(newunit_alloc): Likewise.
      	* io/unix.c (find_file): Likewise.
      	(flush_all_units_1): Likewise.
      	(flush_all_units): Likewise.
      	* libgfortran.h (generate_error_common): Add prototype.
      	* runtime/error.c: Include io.h and async.h.
      	(generate_error_common): New function.
      
      2018-08-21  Nicolas Koenig  <koenigni@gcc.gnu.org>
      	Thomas Koenig <tkoenig@gcc.gnu.org>
      
      	PR fortran/25829
      	* testsuite/libgomp.fortran/async_io_1.f90: New test.
      	* testsuite/libgomp.fortran/async_io_2.f90: New test.
      	* testsuite/libgomp.fortran/async_io_3.f90: New test.
      	* testsuite/libgomp.fortran/async_io_4.f90: New test.
      	* testsuite/libgomp.fortran/async_io_5.f90: New test.
      	* testsuite/libgomp.fortran/async_io_6.f90: New test.
      	* testsuite/libgomp.fortran/async_io_7.f90: New test.
      
      
      Co-Authored-By: Thomas Koenig <tkoenig@gcc.gnu.org>
      
      From-SVN: r263750
      Nicolas Koenig committed
    • re PR c++/86499 (lambda-expressions with capture-default are allowed at namespace scope) · 774fb6c4
      	PR c++/86499
      	* parser.c (cp_parser_lambda_introducer): Give error if a non-local
      	lambda has a capture-default.
      
      	* g++.dg/cpp0x/lambda/lambda-non-local.C: New test.
      	* g++.dg/cpp0x/lambda/lambda-this10.C: Adjust dg-error.
      
      From-SVN: r263749
      Marek Polacek committed
    • decl.c (check_static_variable_definition): Change to return void. · 55082d81
      2018-08-21  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* decl.c (check_static_variable_definition): Change to return void.
      
      From-SVN: r263742
      Paolo Carlini committed
    • PR c++/86981, Implement -Wpessimizing-move. · 79ca9c35
      	* c.opt (Wpessimizing-move): New option.
      
      	* typeck.c (decl_in_std_namespace_p): New.
      	(is_std_move_p): New.
      	(maybe_warn_pessimizing_move): New.
      	(can_do_nrvo_p): New, factored out of ...
      	(check_return_expr): ... here.  Warn about potentially harmful
      	std::move in a return statement.
      
      	* doc/invoke.texi: Document -Wpessimizing-move.
      
      	* g++.dg/cpp0x/Wpessimizing-move1.C: New test.
      	* g++.dg/cpp0x/Wpessimizing-move2.C: New test.
      	* g++.dg/cpp0x/Wpessimizing-move3.C: New test.
      	* g++.dg/cpp0x/Wpessimizing-move4.C: New test.
      	* g++.dg/cpp1z/Wpessimizing-move1.C: New test.
      
      From-SVN: r263741
      Marek Polacek committed
    • re PR c++/65043 (Expected narrowing conversion during list initialization of bool from double) · 992931ba
      	PR c++/65043
      	* call.c (standard_conversion): Set check_narrowing.
      	* typeck2.c (check_narrowing): Use CP_INTEGRAL_TYPE_P rather
      	than comparing with INTEGER_TYPE.
      
      	* g++.dg/concepts/pr67595.C: Add dg-warning.
      	* g++.dg/cpp0x/Wnarrowing11.C: New test.
      	* g++.dg/cpp0x/Wnarrowing12.C: New test.
      	* g++.dg/cpp0x/rv-cast5.C: Add static_cast.
      
      From-SVN: r263739
      Marek Polacek committed
    • * cp-tree.h: Fix typo. · d3e993e9
      From-SVN: r263738
      Marek Polacek committed
    • [Ada] Minor reformattings · 92a68a04
      2018-08-21  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* checks.adb, contracts.adb, exp_aggr.adb, exp_attr.adb,
      	exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_unst.adb,
      	exp_util.adb, freeze.adb, gnatlink.adb, layout.adb,
      	lib-writ.adb, lib-xref-spark_specific.adb, sem_ch13.adb,
      	sem_ch3.adb, sem_ch6.adb, sem_res.adb, sem_util.adb, sinfo.ads,
      	sprint.adb: Minor reformatting.
      
      From-SVN: r263737
      Hristian Kirtchev committed
    • [Ada] Add a new gnat tool vxlink · 5ec8edb5
      VxLink is a helper tool used as a wrapper around g++/gcc to build
      VxWorks DKM (Downloadable Kernel Modules).
      
      Such DKM is a partially linked object that includes entry points for
      constructors and destructors.
      
      This tool thus uses g++ to generate an intermediate partially linked
      object, retrieves the list of constructors and destructors in it and
      produces a C file that lists those ctors/dtors in a way that is
      understood be VxWorks kernel. It then links this file with the
      intermediate object to produce a valid DKM.
      
      2018-08-21  Jerome Lambourg  <lambourg@adacore.com>
      
      gcc/ada/
      
      	* vxlink-bind.adb, vxlink-bind.ads, vxlink-link.adb,
      	vxlink-link.ads, vxlink-main.adb, vxlink.adb, vxlink.ads: Add a
      	new tool vxlink to handle VxWorks constructors in DKMs.
      	* gcc-interface/Makefile.in: add rules to build vxlink
      
      From-SVN: r263736
      Jerome Lambourg committed
    • [Ada] Crash on expression function and tagged types · 084e3bd1
      This patch fixes a compiler abort on an expression function whose
      expression includes tagged types that have not been frozen before the
      generated body of the function is analyzed, even though that body is
      inserted at the end of the current declarative part.
      
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch6.adb (Analyze_Subprogram_Body_Helper, Mask_Type):
      	Refine the handling of freezing types for expression functions
      	that are not completions, when analyzing the generated body for
      	the function: the body is inserted at the end of the enclosing
      	declarative part, and its analysis may freeze types declared in
      	the same scope that have not been frozen yet.
      
      gcc/testsuite/
      
      	* gnat.dg/expr_func7.adb, gnat.dg/expr_func7.ads: New testcase.
      
      From-SVN: r263735
      Ed Schonberg committed
    • [Ada] Spurious crash on expression function as completion with contracts · 0db1c386
      This patch fixes a compiler abort on an expression function that is a
      completion of a subprogram with preconditions. The problem is caused by
      the presence of types in the precondition that are not frozen when the
      subprogram body constructed for the expression function receives the
      code that enforces the precondition. These types must be frozen before
      the contract is expanded, so the freeze nodes for these types appear in
      the proper scope. This is analogous to what is done with type references
      that appear in the original expression of the expression function.
      
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch6.adb: Remove Freeze_Expr_Types.
      	* freeze.ads, freeze.adb (Freeze_Expr_Types): Moved from
      	sem_ch6.adb, and extended to handle other expressions that may
      	contain unfrozen types that must be frozen in their proper
      	scopes.
      	* contracts.adb (Analyze_Entry_Or_Subprogram_Contract): If the
      	contract is for the generated body of an expression function
      	that is a completion, traverse the expressions for pre- and
      	postconditions to freeze all types before adding the contract
      	code within the subprogram body.
      
      gcc/testsuite/
      
      	* gnat.dg/expr_func6.adb, gnat.dg/expr_func6.ads: New testcase.
      
      From-SVN: r263734
      Ed Schonberg committed
    • [Ada] Retention of with clauses for ignored Ghost units · 5b1c4547
      This patch ensures that with clauses that mention ignored Ghost units are
      retained in the tree. The retention is necessary for several reasons:
      
         * The with clauses allow the new elaboration order mechanism to
           produce the same library edges regardless of whether the Ghost unit
           is checked or ignored. This ensures that the elaboration order
           remains consistent.
      
         * The with clauses allow the unnesting mechanism to properly
           recognize that all units have been examined for unnesing purposes.
      
      No observable impact, no test needed.
      
      2018-08-21  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* sem_ch10.adb: Remove the with and use clause for unit Ghost.
      	(Analyze_With_Clause): Do not mark a with clause which mentions
      	an ignored Ghost code for elimination.
      
      From-SVN: r263733
      Hristian Kirtchev committed
    • [Ada] Crash processing SPARK annotate aspect · 322d87a9
      The compiler blows up writing the ALI file of a package that has a ghost
      subprogram with an annotate contract.
      
      2018-08-21  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* lib-writ.adb (Write_Unit_Information): Handle pragmas removed
      	by the expander.
      
      gcc/testsuite/
      
      	* gnat.dg/spark2.adb, gnat.dg/spark2.ads: New testcase.
      
      From-SVN: r263732
      Javier Miranda committed
    • [Ada] Spurious error on overriding protected function in instance · 24241bd0
      The conformance between an overriding protected operation with
      progenitors and the overridden interface operation requires subtype
      conformance; requiring equality of return types in the case of a
      function is too restrictive and leads to spurious errors when the return
      type is a generic actual.
      
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch6.adb (Check_Synchronized_Overriding): The conformance
      	between an overriding protected operation and the overridden
      	abstract progenitor operation requires subtype conformance;
      	requiring equality of return types in the case of a function is
      	too restrictive and leads to spurious errors when the return
      	type is a generic actual.
      
      gcc/testsuite/
      
      	* gnat.dg/prot6.adb, gnat.dg/prot6.ads: New testcase.
      
      From-SVN: r263731
      Ed Schonberg committed
    • [Ada] Properly set scope of artificial entities in blocks · 5bb9ebcb
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_ch9.adb (Expand_N_Timed_Entry_Call,
      	Expand_Conditional_Entry_Call): Use Reset_Scopes_Of to set
      	properly the scope of all entities created in blocks generated
      	by the expansion of these constructs.
      
      From-SVN: r263730
      Ed Schonberg committed
    • [Ada] Fix scope computation for loop statements · 6989a2bb
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch13.adb (Build_Predicate_Functioss): Apply
      	Reset_Quantified_Variables_Scope after predicate function has
      	been analyzed, so that the scope can be reset on the generated
      	loop statements that have replaced the quantified expressions.
      
      From-SVN: r263729
      Ed Schonberg committed
    • [Ada] Einfo: remove obsolete code · 09825f92
      2018-08-21  Bob Duff  <duff@adacore.com>
      
      gcc/ada
      
      	* einfo.ads, einfo.adb (Private_View, Shadow_Entities): Remove
      	obsolete code.
      
      From-SVN: r263728
      Bob Duff committed
    • [Ada] Update for Ownership rules for access types according to AI12-0240 · 7d8cc2b6
      The implementation of these Ownership rules for safe pointers and
      automatic memory management is still a prototype at an experimental
      stage.
      
      To activate the checks, the code should be compiled with the debug flag
      -gnatdF and the flag -gnatd.F for setting the context for formal
      verification of SPARK.
      
      These changes do not affect compilation.
      
      2018-08-21  Maroua Maalej  <maalej@adacore.com>
      
      gcc/ada/
      
      	* sem_spark.adb (Check_Call_Statement): Check global and formal
      	parameter permissions at call sites.
      	(Check_Callable_Body): Assume permissions on globals and
      	parameters depending on their modes then analyse the body
      	operations.
      	(Check_Declaration): Consider both deep (including elementary
      	access) object declarations and normal variables. First check
      	whether the deep object is of Ownership Aspec True or not, then,
      	depending on its initialization, assign the appropriate state.
      	Check related to non access type variables deal with
      	initialization value permissions.
      	(Check_Expression): Check nodes used in the expression being
      	analyzed.
      	(Check_Globals): Call by Check_Call_Statement to perform the
      	check on globals.
      	(Check_List): Call Check_Node on each element of the list.
      	(Check_Loop_Statement): Check the Iteration_Scheme and loop
      	statements.
      	(Check_Node): Main traversal procedure to check safe pointer usage.
      	(Check_Package_Body): Check subprogram's body.
      	(Check_Param_In): Take a formal and an actual parameter and
      	Check the permission of every in-mode parameter.
      	(Check_Param_Out): Take a formal and an actual parameter and
      	check the state of out-mode and in out-mode parameters.
      	(Check_Statement): Check statements other than procedure call.
      	(Get_Perm, Get_Perm_Or_Tree, Get_Perm_Tree): Find out the state
      	related to the given name.
      	(Is_Deep): Return True if an object is of access type or has
      	subfields of access type.
      	(Perm_Error, Perm_Error_Subprogram_End): Add an error message
      	whenever the found state on the given name is different from the
      	one expected (in the statement being analyzed).
      	(Process_Path): Given an operation and a current state, call
      	Perm_Error if there is any mismatch.
      	(Return_Declarations, Return_Globals, Return_The_Global): Check
      	the state of a given name at the end of the subprogram. These
      	procedures may change depending on how we shall finally deal
      	with globals and the rhs state in a move operation.
      	(Set_Perm_Extensions, Set_Perm_Prefixes_Borrow,
      	Set_Perm_Prefixes, Setup_Globals, Setup_Parameter_Or_Global,
      	Setup_Parameters): Set up the new states to the given node and
      	up and down the tree after an operation.
      	(Has_Ownership_Aspect_True): This function may disappear later
      	when the Ownership Aspect will be implemented in the FE.
      
      From-SVN: r263727
      Maroua Maalej committed
    • [Ada] Spurious ambiguity error on call returning an access type · 41306c0a
      If F is a function with a single defaulted parameter that returns an
      access_to_array type, then F (I) may designate either the return type or
      an indexing of the result of the call, after implicit dereferencing.  If
      the component type C of the array type AR is accces AR this is ambiguous
      in a context whose expected type is C. If F is parameterless the call is
      not ambiguous.
      
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_res.adb (Resolve_Call): Resolve correctly a parameterless
      	call that returns an access type whose designated type is the
      	component type of an array, when the function has no defaulted
      	parameters.
      
      gcc/testsuite/
      
      	* gnat.dg/access5.adb, gnat.dg/access5.ads: New testcase.
      
      From-SVN: r263726
      Ed Schonberg committed
    • [Ada] Document entries of the target parametrization file · 298e0c6b
      2018-08-21  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
      	Document entries of the target parametrization file.
      	* gnat_ugn.texi: Regenerate.
      
      From-SVN: r263725
      Yannick Moy committed
    • [Ada] Set scope of elaboration flag for 'Access · 78645ad8
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_attr.adb: Set scope of elaboration flag for 'Access.
      
      From-SVN: r263724
      Ed Schonberg committed
    • [Ada] Sprint: add guard on printing aspects · 1bd9b6a5
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sprint.adb: Add guard on printing aspects.
      
      From-SVN: r263723
      Ed Schonberg committed
    • [Ada] Crash compiling SPARK ghost functions with callgraph info · dc88759c
      The compiler blows up generating the callgraph output of SPARK ghost
      subprograms whose contracts invoke ghost functions.
      
      2018-08-21  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* exp_cg.adb (Generate_CG_Output): Handle calls removed by the
      	expander.
      
      From-SVN: r263722
      Javier Miranda committed
    • [Ada] Unnesting: do not set size of access subprograms · 5c0972ba
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* layout.adb: Do not set size of access subprogram if unnesting.
      
      From-SVN: r263721
      Ed Schonberg committed
    • [Ada] Unnesting: do not emit warnings for access to subprograms · c7fafef9
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* freeze.adb: Remove warnings for access to subprograms when
      	unnesting is active.
      
      From-SVN: r263720
      Ed Schonberg committed
    • [Ada] Improper copying of limited arrays with default initialization · d2a60e59
      This patch fixes an improper expansion of aggregates for limited array
      types in an object declaration. Prior to this patch, The presence of the
      aggregate (which can only consist of box initializations) would create a
      temporary that was then assigned to the object in the declaration.
      Apart from a violation of the semantics of build-in-place limited
      objects, this can also lead to out-of-scope access in LLVM.
      
      Executing the following;
      
         gcc -c -gnatDG nocopy.adb
         grep quintet nocopy.adb.dg | wc -l
      
      must yield:
      
         5
      
      ----
      procedure NoCopy is
      
        --  Task used in this example to test that the limited component
        --  is properly initialized.
      
        task type T_Task (Disc : Natural);
      
        task body T_Task is
        begin
           null;
        end T_Task;
      
        type My_Rec (D : Natural := 9999) is record
      
           --  Components initialized by means of the current value
           --  of the record discriminant
      
           T : T_Task (D);
        end record;
      
        type TR is array (1 .. 5) of My_Rec;
        Quintet : TR := (others => (others => <>));
      begin
         null;
      end NoCopy;
      
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_aggr.adb (Expand_Array_Aggregate): If the component type
      	is limited, the array must be constructed in place, so set flag
      	In_Place_Assign_OK_For_Declaration accordingly. This prevents
      	improper copying of an array of tasks during initialization.
      
      From-SVN: r263719
      Ed Schonberg committed
    • [Ada] Fix spurious error on unchecked conversion on VFA record type · 1ab1c4ee
      2018-08-21  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* gcc-interface/trans.c (Call_to_gnu): Always suppress an
      	unchecked conversion around the actual for an In parameter
      	passed by copy.
      
      From-SVN: r263718
      Eric Botcazou committed
    • [Ada] Fix internal error on extension of record with representation clause · 294e7bbb
      This fixes a long-standing issue present for extensions of tagged record
      types with a representation clause: the clause is correctly inherited
      for components inherited in the extension but the position and size are
      not, which fools the logic of Is_Possibly_Unaligned_Object.
      
      This can result in an attempt to take the address of a component not
      aligned on a byte boundary, which is then flagged as an internal error.
      
      2018-08-21  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* exp_util.adb (Is_Possibly_Unaligned_Object): For the case of a
      	selected component inherited in a record extension and subject
      	to a representation clause, retrieve the position and size from
      	the original record component.
      
      gcc/testsuite/
      
      	* gnat.dg/rep_clause7.adb: New testcase.
      
      From-SVN: r263717
      Eric Botcazou committed
    • [Ada] Spurious "Duplicated symbol" error with discriminated tasks · 2e5df295
      This patch fixes a spurious error in a program that contains a
      discriminated task type and several of its subtype in the same
      declarative part, when the corresponding discriminant constraints are
      expressions.
      
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_util.ads, sem_util.adb (New_External_Entity): Type of
      	Suffix_Index must be Int, not Nat, so that a negative value can
      	be used to generate a unique name for an external object, as
      	specified in Tbuild.New_External_Name.
      	(Scope_Within): Handle private type whose completion is a
      	synchronized type (For unnesting).
      	* itypes.ads, itypes.adb (Create_Itype): Ditto
      	* sem_ch3.adb (Constrain_Corresponding_Record): Generate a
      	unique name for the created subtype, because there may be
      	several discriminated tasks present in the same scope, and each
      	needs its distinct corresponding record subtype.
      
      gcc/testsuite/
      
      	* gnat.dg/task1.adb, gnat.dg/task1.ads, gnat.dg/task1_pkg.adb,
      	gnat.dg/task1_pkg.ads: New testcase.
      
      From-SVN: r263716
      Ed Schonberg committed
    • [Ada] Define versions of dimension system for Float and Long_Float · c4b9b291
      The dimension system in System.Dim.Mks is based on Long_Long_Float,
      which may not be convenient to people who want to use Float or
      Long_Float as basis. These new files provide units that define the
      dimension system based on Float in System.Dim.Float_Mks and on
      Long_Float in System.Dim.Long_Mks.
      
      Child packages Other_Prefixes and Mks_IO are also defined appropriately,
      with new instantiations for the various sizes of floating-point types.
      
      2018-08-21  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/gnat_and_program_execution.rst: Update
      	documentation of dimensionality analysis.
      	* gnat_ugn.texi: Regenerate.
      	* Makefile.rtl, impunit.adb: Consider the new units.
      	* libgnat/s-dfmkio.ads, libgnat/s-dfmopr.ads,
      	libgnat/s-diflmk.ads: New units based on Float.
      	* libgnat/s-dilomk.ads, libgnat/s-dlmkio.ads,
      	libgnat/s-dlmopr.ads: New units based on Long_Float.
      	* libgnat/s-dmotpr.ads: Rename to libgnat/s-dgmgop.ads and turn
      	into an instance of
      	System.Dim.Generic_Mks.Generic_Other_Prefixes.
      	* libgnat/s-dimmks.ads: Rename to libgnat/s-digemk.ads and turn
      	into an instance of System.Dim.Generic_Mks.
      
      From-SVN: r263715
      Yannick Moy committed
    • [Ada] General purpose doubly linked list for compiler and tool use · 2201fa7b
      This patch adds unit GNAT.Lists which currently contains the
      implementation of a general purpose doubly linked list intended for use
      by the compiler and the tools around it.
      
      2018-08-21  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* impunit.adb: Add g-lists to the set of non-implementation
      	units.
      	* libgnat/g-lists.adb, libgnat/g-lists.ads: New unit.
      	* Makefile.rtl: Add g-lists to the set of non-tasking units.
      	* gcc-interface/Make-lang.in: Add g-lists to the set of files
      	used by gnat1.
      
      gcc/testsuite/
      
      	* gnat.dg/linkedlist.adb: New testcase.
      
      From-SVN: r263714
      Hristian Kirtchev committed
    • [Ada] Fix scope computation for entry bodies and accept alternatives · c36d21ee
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_ch9.adb (Reset_Scopes): Do not recurse into type
      	declarations when resetting the scope of entities declared the
      	procedures generated for entry bodies and accept alternatives.
      	Use the entity of the procedure declaration, not its body, as
      	the new scope.
      
      From-SVN: r263713
      Ed Schonberg committed
    • [Ada] Crash on entry in generic with dynamic elaboration checks · 3f99a611
      This patch modifies the set of attributes that applies to entries and
      entry families to include elaboration entities used by the
      access-before-elaboration mechanism.
      
      2018-08-21  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* einfo.adb (Elaboration_Entity): Include entries and entry
      	families in the set of legal entities.
      	(Elaboration_Entity_Required): Include entries and entry
      	families in the set of legal entities.
      	(Set_Elaboration_Entity): Include entries and entry families in
      	the set of legal entities.
      	(Set_Elaboration_Entity_Required): Include entries and entry
      	families in the set of legal entities.
      	(Write_Field13_Name): Update the output of attribute
      	Elaboration_Entity.
      	* einfo.ads: Attributes Elaboration_Entity and
      	Elaboration_Entity_Required now apply to entries and entry
      	families.
      
      gcc/testsuite/
      
      	* gnat.dg/elab6.adb, gnat.dg/elab6.ads, gnat.dg/elab6_pkg.adb,
      	gnat.dg/elab6_pkg.ads: New testcase.
      
      From-SVN: r263712
      Hristian Kirtchev committed
    • [Ada] Set_Targ: add a CodePeer annotation · 83fadfd9
      2018-08-21  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* set_targ.adb: Mark some CodePeer message as Intentional.
      
      From-SVN: r263711
      Arnaud Charlet committed
    • [Ada] Compiler abort on call to expr. function for default discriminant · 8a2f6bbe
      If a discriminant specification has a default that is a call to an
      expression function, that function has to be frozen at the point of a
      call to the initialization procedure for an object of the record type,
      even though the call does not appear to come from source.
      
      2018-08-21  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_res.adb (Resolve_Call): Force the freezing of an
      	expression function that is called to provide a default value
      	for a defaulted discriminant in an object initialization.
      
      gcc/testsuite/
      
      	* gnat.dg/expr_func5.adb: New testcase.
      
      From-SVN: r263710
      Ed Schonberg committed
    • [Ada] Dynamically resizable, load factor-based hash table · d8251d00
      This patch introduces a dynamically resizable, load factor-based hash
      table in unit GNAT.Dynamic_HTables.
      
      2018-08-21  Hristian Kirtchev  <kirtchev@adacore.com>
      
      gcc/ada/
      
      	* libgnat/g-dynhta.adb, libgnat/g-dynhta.ads: New package
      	Dynamic_HTable.
      
      gcc/testsuite/
      
      	* gnat.dg/dynhash.adb: New testcase.
      
      From-SVN: r263709
      Hristian Kirtchev committed
    • [Ada] Enumeration types with non-standard representation · f20b5ef4
      The compiler may report errors on enumeration types with non-standard
      representation (i.e. at least one literal has a representation value
      different from its 'Pos value) processing attribute 'Enum_Rep.
      
      It may also generate wrong code for the evaluation of 'Enum_Rep raising
      Constraint_Error at runtime.
      
      2018-08-21  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* checks.ads (Determine_Range): Adding documentation.
      	* checks.adb (Determine_Range): Don't deal with enumerated types
      	with non-standard representation.
      	(Convert_And_Check_Range): For conversion of enumeration types
      	with non standard representation to an integer type perform a
      	direct conversion to the target integer type.
      
      gcc/testsuite/
      
      	* gnat.dg/enum4.adb: New testcase.
      
      From-SVN: r263708
      Javier Miranda committed
    • [Ada] Handle pragmas that come from aspects for GNATprove · b7e875ce
      In GNATprove we appear to abuse a routine related to cross-references and
      expect it to deliver exact results, which is not what it was designed for.
      
      This patch is a temporary solution to avoid crashes in GNATprove; it doesn't
      affect the frontend or other backends, because this code is used exclusively
      by GNATprove (it is located in the frontend for technical reasons). No tests
      provided.
      
      2018-08-21  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* lib-xref.ads, lib-xref-spark_specific.adb
      	(Enclosing_Subprogram_Or_Library_Package): Now roughtly works
      	for pragmas that come from aspect specifications.
      
      From-SVN: r263707
      Piotr Trojanek committed
    • [Ada] Add sa_messages.ad[sb] for SPARK 2014 · d40800cf
      These new source files will make it possible to build SPARK 2014 from
      a snapshot of GCC FSF sources.
      
      2018-08-21  Pierre-Marie de Rodat  <derodat@adacore.com>
      
      gcc/ada/
      
      	* sa_messages.ads, sa_messages.adb: New source files.
      
      From-SVN: r263706
      Pierre-Marie de Rodat committed
    • * testsuite/18_support/new_nothrow.cc: XFAIL on AIX. · bce17c39
      From-SVN: r263703
      David Edelsohn committed