1. 22 Aug, 2018 10 commits
  2. 21 Aug, 2018 30 commits
    • P0646R1 Improving the Return Value of Erase-Like Algorithms I · f7191a37
      2018-08-21  François Dumont  <fdumont@gcc.gnu.org>
      
      	P0646R1 Improving the Return Value of Erase-Like Algorithms I
      	* include/debug/forward_list (forward_list::__remove_return_type):
      	Define typedef as size_type or void, according to __cplusplus value.
      	(_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
      	empty, according to __cplusplus value.
      	(_GLIBCXX20_ONLY): Define macro.
      	(forward_list::remove, forward_list::unique): Use typedef and macro
      	to change return type and add abi-tag for C++2a. Return number of
      	removed elements for C++2a.
      	(forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use
      	typedef to change return type for C++2a. Return number of removed
      	elements for C++2a.
      	* include/debug/list (list::__remove_return_type): Define typedef as
      	size_type or void, according to __cplusplus value.
      	(_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or
      	empty, according to __cplusplus value.
      	(_GLIBCXX20_ONLY): Define macro.
      	(list::remove, list::unique): Use typedef and macro to change return
      	type and add abi-tag for C++2a. Return number of removed elements for
      	C++2a.
      	(list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use typedef
      	to change return type for C++2a. Return number of removed elements for
      	C++2a.
      
      From-SVN: r263752
      François Dumont committed
    • 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