Commit Graph

6242 Commits

Author SHA1 Message Date
Thomas Quinot a25ad01cfb freeze.adb (Check_Component_Storage_Order): Get full view of component type.
2016-05-02  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Check_Component_Storage_Order): Get full view of
	component type.

From-SVN: r235716
2016-05-02 11:29:09 +02:00
Hristian Kirtchev 558fbeb042 checks.adb, [...]: Minor reformatting.
2016-05-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb, freeze.adb, sem_res.adb, s-stposu.adb, repinfo.adb:
	Minor reformatting.

From-SVN: r235714
2016-05-02 11:27:18 +02:00
Arnaud Charlet 1e60643a12 [multiple changes]
2016-05-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch4.adb (Find_Indexing_Operations): Use the underlying type
	of the container base type in case the container is a subtype.
	* sem_ch5.adb (Analyze_Iterator_Specification): Ensure that
	the selector has an entity when checking for a component of a
	mutable object.

2016-05-02  Arnaud Charlet  <charlet@adacore.com>

	Remove dead code.
	* opt.ads (Latest_Ada_Only): New flag.
	* sem_prag.adb, par-prag.adb: Ignore pragma Ada_xx under this flag.
	* usage.adb, switch-c.adb: Disable support for -gnatxx under this flag.
	* einfo.ads (Has_Predicates, Predicate_Function):
	Clarify that Has_Predicates does not imply that Predicate_Function
	will return a non-empty entity.

2016-05-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Qualified_Expression): Generate a predicate
	check if type requires it.
	* checks.adb (Apply_Predicate_Check): Disable checks in the
	object declaration created for an expression with side-effects
	that requires a predicate check to prevent infinite recursion
	during expansion.

2016-05-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Process_Formals): Check properly the type of a
	formal to determine whether a given convention applies to it.

2016-05-02  Doug Rupp  <rupp@adacore.com>

	* tracebak.c: Add incantations for arm-vxworks[67] traceback.

2016-05-02  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Check_Component_Storage_Order): Make it a warning, not an
	error, to have a component with implicit SSO within a composite type
	that has explicit SSO.

2016-05-02  Bob Duff  <duff@adacore.com>

	* s-stposu.adb (Allocate_Any_Controlled): Don't lock/unlock twice.

2016-05-02  Ed Schonberg  <schonberg@adacore.com>

	* repinfo.adb (List_Entities): Make procedure recursive, to
	provide representation information for subprograms declared
	within subprogram bodies.

From-SVN: r235713
2016-05-02 11:23:49 +02:00
Arnaud Charlet f96fd197d2 [multiple changes]
2016-05-02  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch5.adb, layout.adb, gnatcmd.adb exp_attr.adb, make.adb,
	bindgen.adb, debug.adb, exp_pakd.adb, freeze.adb, sem_util.adb,
	gnatlink.adb, switch-m.adb, exp_ch4.adb, repinfo.adb, adabkend.adb,
	osint.adb: Remove dead code.

2016-05-02  Yannick Moy  <moy@adacore.com>

	* a-tigeli.adb (Get_Line): Fix bound for test to
	decide when to compensate for character 0 added by call to fgets.

From-SVN: r235710
2016-05-02 11:11:03 +02:00
Arnaud Charlet 3ba1a9eb6e [multiple changes]
2016-05-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Allocator): If the expression does not
	have a subtype indication and the type is an unconstrained tagged
	type with defaulted discriminants, create an explicit constraint
	for it during analysis to prevent out-of-order freezing actions
	on generated classwide types.

2016-05-02  Javier Miranda  <miranda@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement):
	In the runtime check that ensures that the tags of source an
	target match, add missing displacement of the pointer to the
	objects if they cover interface types.

2016-05-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Old): Do not use
	base type for attribute when type is discrete: transformation
	is not needed for such types, and leads to spurious errors if
	the context is a case construct.

From-SVN: r235709
2016-05-02 11:08:44 +02:00
Eric Botcazou 552cc5904c decl.c (elaborate_reference_1): Do not bother about operand #2 for COMPONENT_REF.
* gcc-interface/decl.c (elaborate_reference_1): Do not bother about
	operand #2 for COMPONENT_REF.
	* gcc-interface/utils2.c (gnat_save_expr): Likewise.
	(gnat_protect_expr): Likewise.
	(gnat_stabilize_reference_1): Likewise.
	(gnat_rewrite_reference): Do not bother about operand #3 for ARRAY_REF.
	(get_inner_constant_reference): Likewise.
	(gnat_invariant_expr): Likewise.
	* gcc-interface/trans.c (fold_constant_decl_in_expr): Likewise.

From-SVN: r235701
2016-05-02 07:46:05 +00:00
Eric Botcazou 3eaec28592 trans.c (Range_to_gnu): New static function.
* gcc-interface/trans.c (Range_to_gnu): New static function.
	(Raise_Error_to_gnu) <N_In>: Call it to translate the range.
	(gnat_to_gnu) <N_In>: Likewise.

From-SVN: r235699
2016-05-02 07:38:37 +00:00
Eric Botcazou f73036c179 Make-lang.in (ACATSCMD): New variable.
ada/
	* gcc-interface/Make-lang.in (ACATSCMD): New variable.
	(check-acats): Use it.
	(check_acats_targets): Likewise.
testsuite/
	* ada/acats/run_acats: Rename into...
	* ada/acats/run_acats.sh: ...this.  Only export BASE variable.
	* ada/acats/run_all.sh: Remove redundant test.
	(target_run): Move around.
	(target_gnatchop): Use newly built executable.
	(target_gnatmake): Likewise.
	Check that the compilation of impbit succeeds.

From-SVN: r235678
2016-04-30 10:42:14 +00:00
Eric Botcazou 24efbb3e41 re PR ada/70786 (Missing "not" breaks Ada.Text_IO.Get_Immediate(File, Item, Available))
PR ada/70786
	* a-textio.adb (Get_Immediate): Add missing 'not' in expression.

From-SVN: r235554
2016-04-28 10:58:38 +00:00
Eric Botcazou 1e55d29a0c sem_aux.adb (Is_By_Reference_Type): Also return true for a tagged incomplete type without full view.
* sem_aux.adb (Is_By_Reference_Type): Also return true for a tagged
	incomplete type without full view.
	* sem_ch6.adb (Exchange_Limited_Views): Change into a function and
	return the list of changes.
	(Restore_Limited_Views): New procedure to undo the transformation made
	by Exchange_Limited_Views.
	(Analyze_Subprogram_Body_Helper): Adjust call to Exchange_Limited_Views
	and call Restore_Limited_Views at the end, if need be.
	(Possible_Freeze): Do not delay freezing because of incomplete types.
	(Process_Formals): Remove kludges for class-wide types.
	* types.h (By_Copy_Return): Delete.
	* gcc-interface/ada-tree.h (TYPE_MAX_ALIGN): Move around.
	(TYPE_DUMMY_IN_PROFILE_P): New macro.
	* gcc-interface/gigi.h (update_profiles_with): Declare.
	(finish_subprog_decl): Likewise.
	(get_minimal_subprog_decl): Delete.
	(create_subprog_type): Likewise.
	(create_param_decl): Adjust prototype.
	(create_subprog_decl): Likewise.
	* gcc-interface/decl.c (defer_limited_with): Rename into...
	(defer_limited_with_list): ...this.
	(gnat_to_gnu_entity): Adjust to above renaming.
	(finalize_from_limited_with): Likewise.
	(tree_entity_vec_map): New structure.
	(gt_pch_nx): New helpers.
	(dummy_to_subprog_map): New hash table.
	(gnat_to_gnu_param): Set the SLOC here.  Remove MECH parameter and
	add FIRST parameter.  Deal with the mechanism here instead of...
	Do not make read-only variant of types.  Simplify expressions.
	In the by-ref case, test the mechanism before must_pass_by_ref
	and also TYPE_IS_BY_REFERENCE_P before building the reference type.
	(gnat_to_gnu_subprog_type): New static function extracted from...
	Do not special-case the type_annotate_only mode.  Call
	gnat_to_gnu_profile_type instead of gnat_to_gnu_type on return type.
	Deal with dummy return types.  Likewise for parameter types.  Deal
	with by-reference types explicitly and add a kludge for null procedures
	with untagged incomplete types.  Remove assertion on the types and be
	prepared for multiple elaboration of the declarations.  Skip the whole
	CICO processing if the profile is incomplete.  Handle the completion of
	a previously incomplete profile.
	(gnat_to_gnu_entity) <E_Variable>: Rename local variable.
	Adjust couple of calls to create_param_decl.
	<E_Access_Subprogram_Type, E_Anonymous_Access_Subprogram_Type>:
	Remove specific deferring code.
	<E_Access_Type>: Also deal with E_Subprogram_Type designated type.
	Simplify handling of dummy types and remove obsolete comment.
	Constify a couple of variables.  Do not set TYPE_UNIVERSAL_ALIASING_P
	on dummy types.
	<E_Access_Subtype>: Tweak comment and simplify condition.
	<E_Subprogram_Type>: ...here.  Call it and clean up handling.  Remove
	obsolete comment and adjust call to gnat_to_gnu_param.  Adjust call to
	create_subprog_decl.
	<E_Incomplete_Type>: Add a couple of 'const' qualifiers and get rid of
	inner break statements.  Tidy up condition guarding direct use of the
	full view.
	(get_minimal_subprog_decl): Delete.
	(finalize_from_limited_with): Call update_profiles_with on dummy types
	with TYPE_DUMMY_IN_PROFILE_P set.
	(is_from_limited_with_of_main): Delete.
	(associate_subprog_with_dummy_type): New function.
	(update_profile): Likewise.
	(update_profiles_with): Likewise.
	(gnat_to_gnu_profile_type): Likewise.
	(init_gnat_decl): Initialize dummy_to_subprog_map.
	(destroy_gnat_decl): Destroy dummy_to_subprog_map.
	* gcc-interface/misc.c (gnat_get_alias_set): Add guard for accessing
	TYPE_UNIVERSAL_ALIASING_P.
	(gnat_get_array_descr_info): Minor tweak.
	* gcc-interface/trans.c (gigi): Adjust calls to create_subprog_decl.
	(build_raise_check): Likewise.
	(Compilation_Unit_to_gnu): Likewise.
	(Identifier_to_gnu): Accept mismatches coming from a limited context.
	(Attribute_to_gnu): Remove kludge for dispatch table entities.
	(process_freeze_entity): Do not retrieve old definition if there is an
	address clause on the entity.  Call update_profiles_with on dummy types
	with TYPE_DUMMY_IN_PROFILE_P set.
	* gcc-interface/utils.c (build_dummy_unc_pointer_types): Also set
	TYPE_REFERENCE_TO to the fat pointer type.
	(create_subprog_type): Delete.
	(create_param_decl): Remove READONLY parameter.
	(finish_subprog_decl): New function extracted from...
	(create_subprog_decl): ...here.  Call it.  Remove CONST_FLAG and
	VOLATILE_FLAG parameters and adjust.
	(update_pointer_to): Also clear TYPE_REFERENCE_TO in the unconstrained
	case.

From-SVN: r235521
2016-04-27 18:08:39 +00:00
Arnaud Charlet 437244c773 [multiple changes]
2016-04-27  Arnaud Charlet  <charlet@adacore.com>

	* aa_util.adb, aa_util.ads: Removed, no longer used.

2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): An object
	renaming declaration resulting from the expansion of an object
	declaration is a suitable context for pragma Ghost.

2016-04-27  Doug Rupp  <rupp@adacore.com>

	* init.c: Refine last checkin so the only requirement is the
	signaling compilation unit is compiled with the same mode as
	the compilation unit containing the initial landing pad.

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Valid_Default_Iterator): Better filter of illegal
	specifications for Default_Iterator, including overloaded cases
	where no interpretations are legal, and return types that are
	not iterator types.

2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): Do not install
	an accessibility check when the left hand side of the assignment
	denotes a container cursor.
	* exp_util.ads, exp_util.adb (Find_Primitive_Operations): Removed.
	* sem_ch4.adb (Find_Indexing_Operations): New routine.
	(Try_Container_Indexing): Code cleanup.

From-SVN: r235505
2016-04-27 15:28:30 +02:00
Arnaud Charlet 57323d5bd3 [multiple changes]
2016-04-27  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch10.adb, sem_case.adb: Mark messages udner -gnatwr when needed.

2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* errout.adb, errutil.adb: Minor reformatting.

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications, case Pre/Post):
	Check that the classwide version is illegal when the prefix is
	an operation of an untagged synchronized type.

From-SVN: r235504
2016-04-27 15:25:54 +02:00
Arnaud Charlet ac566cbe4b [multiple changes]
2016-04-27  Arnaud Charlet  <charleT@adacore.com>

	* sinput-l.ads, sem_ch13.adb: Minor editing.

2016-04-27  Doug Rupp  <rupp@adacore.com>

	* init.c (__gnat_adjust_context_for_raise) [arm-linux thumb]:
	Bump the pc so the lower order bit is set.

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_case.adb, sem_case.ads (NO_Op): If appropriate warning is
	enabled, report an empty range in a case construct.

From-SVN: r235503
2016-04-27 15:22:48 +02:00
Arnaud Charlet 6616e39069 sinput.ads, [...]: Minor editing.
2016-04-27  Arnaud Charlet  <charlet@adacore.com>

	* sinput.ads, a-cfdlli.adb, a-crbtgo.adb, a-chtgop.adb, a-cbhama.adb,
	a-rbtgbo.adb, a-crdlli.adb, a-chtgbo.adb: Minor editing.

From-SVN: r235502
2016-04-27 15:15:25 +02:00
Arnaud Charlet 6d0d18dcb1 [multiple changes]
2016-04-27  Bob Duff  <duff@adacore.com>

	* a-chtgop.adb (Adjust): Zero the tampering counts on assignment,
	as is done for the other containers.

2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* ghost.adb (In_Subprogram_Body_Profile): New routine.
	(Is_OK_Declaration): Treat an unanalyzed expression
	function as an OK context.  Treat a reference to a Ghost entity
	as OK when it appears within the profile of a subprogram body.

2016-04-27  Bob Duff  <duff@adacore.com>

	* errout.ads: Document the fact that informational messages
	don't have to be warnings.
	* errout.adb (Error_Msg_Internal): In statistics counts, deal
	correctly with informational messages that are not warnings.
	(Error_Msg_NEL): Remove useless 'if' aroung Set_Posted, because
	Set_Posted already checks for errors and ignores others.
	* erroutc.adb (Prescan_Message): Set Is_Serious_Error to False
	if Is_Info_Msg; the previous code was assuming that Is_Info_Msg
	implies Is_Warning_Msg.
	* errutil.adb (Error_Msg): In statistics counts, deal correctly
	with informational messages that are not warnings.

From-SVN: r235500
2016-04-27 15:09:13 +02:00
Arnaud Charlet 680d5f6190 [multiple changes]
2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_util.adb (Is_Null_Record_Type): New predicate
	to determine whether a record type is a null record.
	* sem_ch3.adb (Analyze_Object_Declaration): If the type is a
	null record and there is no expression in the declaration,
	no predicate check applies to the object.

2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch7.adb (Analyze_Package_Body_Helper): The body of an
	instantiated package should not cause freezing of previous contracts.

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Analyze_Dimension): Handle subtype declarations
	that do not come from source.
	(Analyze_Dimension_Subtype_Declaration): Allow confirming
	dimensions on subtype entity, either inherited from base type
	or provided by aspect specification.

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* s-gearop.ads (Matrix_Vector_Solution, Matrix_Matrix_Solution):
	Add scalar formal object Zero, to allow detection and report
	when the matrix is singular.
	* s-gearop.adb (Matrix_Vector_Solution, Matrix_Matrix_Solution):
	Raise Constraint_Error if the Forward_Eliminate pass has
	determined that determinant is Zero.o
	* s-ngrear.adb (Solve): Add actual for Zero in corresponding
	instantiations.
	* s-ngcoar.adb (Solve): Ditto.

From-SVN: r235499
2016-04-27 15:05:41 +02:00
Arnaud Charlet 14f3895c40 [multiple changes]
2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb: Minor reformatting.

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Analyze_Dimension, case N_Identifier): Check
	that identifier has a usable type before analysis, to handle
	properly identifiers introduced after some lexical/syntactic
	recovery that created new identifiers.

From-SVN: r235498
2016-04-27 14:56:41 +02:00
Arnaud Charlet db99c46e1d [multiple changes]
2016-04-27  Bob Duff  <duff@adacore.com>

	* a-coinve.adb, a-comutr.adb, a-conhel.adb, a-convec.adb,
	exp_util.adb: Remove assertions that can fail in obscure cases when
	assertions are turned on but tampering checks are turned off.

2016-04-27  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Add_Call_By_Copy_Code,
	Add_Simple_Call_By_Copy_Code, Expand_Actuals): Handle formals
	whose type comes from the limited view.

2016-04-27  Yannick Moy  <moy@adacore.com>

	* a-textio.adb: Complete previous patch.

2016-04-27  Yannick Moy  <moy@adacore.com>

	* inline.adb (Expand_Inlined_Call): Use Cannot_Inline instead of
	Error_Msg_N to issue message about impossibility to inline call,
	with slight change of message.

2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_spark.adb (Expand_Potential_Renaming): Removed.
	(Expand_SPARK): Update the call to expand a potential renaming.
	(Expand_SPARK_Potential_Renaming): New routine.
	* exp_spark.ads (Expand_SPARK_Potential_Renaming): New routine.
	* sem.adb Add with and use clauses for Exp_SPARK.
	(Analyze): Expand a non-overloaded potential renaming for SPARK.

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Constrain_Discriminated_Type): In an instance,
	check full view for the presence of defaulted discriminants,
	even when the partial view of a private type has no visible and
	no unknown discriminants.

From-SVN: r235497
2016-04-27 14:55:18 +02:00
Arnaud Charlet c6c8d05942 [multiple changes]
2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-xref.adb, exp_ch3.adb: Minor reformatting.

2016-04-27  Nicolas Roche  <roche@adacore.com>

	* rtinit.c: Add weak symbol __gnat_do_argv_expansion.

From-SVN: r235496
2016-04-27 14:52:02 +02:00
Arnaud Charlet caa64a44ac [multiple changes]
2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Process_Atomic_Independent_Shared_Volatile): Code
	cleanup. Check the original node when trying to determine the node kind
	of pragma Volatile's argument to account for untagged derivations
	where the type is transformed into a constrained subtype.

2016-04-27  Olivier Hainque  <hainque@adacore.com>

	* mkdir.c (__gnat_mkdir): Rework the vxworks section to use a
	consistent posix interface on the caller side.

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Build_Limited_View, Decorate_Type): If this
	is a limited view of a type, initialize the Limited_Dependents
	field to catch misuses of the type in a client unit.

2016-04-27  Thomas Quinot  <quinot@adacore.com>

	* a-strunb-shared.adb (Finalize): add missing Reference call.
	* s-strhas.adb: minor grammar fix and extension of comment
	* sem_ch8.adb: minor whitespace fixes

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* lib-xref.adb (Get_Type_Reference): Handle properly the case
	of an object declaration whose type definition is a class-wide
	subtype and whose expression is a function call that returns a
	classwide type.

2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.ads, sem_util.adb (Output_Entity): New routine.
	(Output_Name): New routine.

2016-04-27  Bob Duff  <duff@adacore.com>

	* exp_ch3.adb (Rewrite_As_Renaming): Disable previous change for now.

From-SVN: r235495
2016-04-27 14:47:56 +02:00
Arnaud Charlet a6ac73115a [multiple changes]
2016-04-27  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: For "gnat ls -V -P", recognize switch
	--unchecked-shared-lib-imports and set the flag
	Opt.Unchecked_Shared_Lib_Imports accordingly.

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pre_Post_Condition_In_Decl_Part):
	A generic subprogram is never a primitive operation, and thus
	a classwide condition for it is not legal.

2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_aggr.adb, sem_dim.adb, sem_dim.ads, einfo.adb: Minor
	reformatting.

From-SVN: r235494
2016-04-27 14:42:03 +02:00
Arnaud Charlet 888be6b18a [multiple changes]
2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Flag_Effectively_Volatile_Objects): New routine.
	(Resolve_Actuals): Flag effectively volatile objects with enabled
	property Async_Writers or Effective_Reads as illegal.
	* sem_util.adb (Is_OK_Volatile_Context): Comment reformatting.

2016-04-27  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Make_Predefined_Primitive_Specs):
	Do not generate the profile of the equality operator if it has
	been explicitly defined as abstract in the parent type. Required
	to avoid reporting an spurious error.

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.ads, sem_dim.adb (Check_Expression_Dimensions): New
	procedure to compute the dimension vector of a scalar expression
	and compare it with the dimensions if its expected subtype. Used
	for the ultimate components of a multidimensional aggregate,
	whose components typically are themselves aggregates that are
	expanded separately. Previous to this patch, dimensionality
	checking on such aggregates generated spurious errors.
	* sem_aggr.adb (Resolve_Array_Aggregate): Use
	Check_Expression_Dimensions when needed.

2016-04-27  Javier Miranda  <miranda@adacore.com>

	* einfo.ads, einfo.adb (Corresponding_Function): New attribute
	(applicable to E_Procedure).
	(Corresponding_Procedure): New attribute (applicable to E_Function).
	* exp_util.adb (Build_Procedure_Form): Link the function with
	its internally built proc and viceversa.
	* sem_ch6.adb (Build_Subprogram_Declaration): Propagate the
	attribute Rewritten_For_C and Corresponding_Procedure to the body.
	* exp_ch6.adb (Rewritten_For_C_Func_Id): Removed.
	(Rewritten_For_C_Proc_Id): Removed.
	* exp_unst.adb (Note_Uplevel_Ref): Use the new attribute to
	locate the corresponding procedure.

From-SVN: r235493
2016-04-27 14:37:55 +02:00
Arnaud Charlet c7518e6f52 [multiple changes]
2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Export_Import): Signal that there is no
	corresponding pragma.

2016-04-27  Bob Duff  <duff@adacore.com>

	* exp_ch3.adb: Minor comment improvement.

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): If the
	return type is an untagged limited record with only access
	discriminants and no controlled components, the return value does not
	need to use the secondary stack.

2016-04-27  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Remove_Side_Effects): When
	generating C code handle object declarations that have
	discriminants and are initialized by means of a call to a
	function.

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* a-textio.adb (Get_Line function): Handle properly the case of
	a line that has the same length as the buffer (or a multiple
	thereof) and there is no line terminator.
	* a-tigeli.adb (Get_Line procedure): Do not store an end_of_file
	in the string when there is no previous line terminator and we
	need at most one additional character.

From-SVN: r235492
2016-04-27 14:30:49 +02:00
Arnaud Charlet 814cc240b8 [multiple changes]
2016-04-27  Arnaud Charlet  <charlet@adacore.com>

	* s-rident.ads: Make No_Implicit_Loops non partition wide.

2016-04-27  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch11.adb (Analyze_Handled_Statements): check useless
	assignments also in entries and task bodies, not only in
	procedures and declaration blocks.
	* sem_ch5.adb (Analyze_Block_Statement): check useless
	assignements in declaration blocks as part of processing their
	handled statement sequence, just like it was done for procedures
	and now is also done for entries and task bodies.
	* sem_warn.adb (Warn_On_Useless_Assignment): detect boundries
	of entries and task bodies just like of procedures.

2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Is_Volatile_Function): Recognize
	a function declared within a protected type as well as the
	protected/unprotected version of a function.

From-SVN: r235491
2016-04-27 14:26:50 +02:00
Bob Duff 24d2fbbeac exp_ch3.adb (Expand_N_Object_Declaration): Rewrite an object declaration of the form "X ...
2016-04-27  Bob Duff  <duff@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Rewrite an object
	declaration of the form "X : T := Func (...);", where T is
	controlled, as a renaming.
	* a-strunb-shared.adb (Finalize): Set the Unbounded_String Object
	to be an empty string, instead of null-ing out the Reference.
	* exp_util.adb (Needs_Finalization): Remove redundant code.

From-SVN: r235488
2016-04-27 14:20:54 +02:00
Arnaud Charlet 2e885a6f7c [multiple changes]
2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.ads Aspects Export and Import do not require delay. They
	were classified as delayed aspects, but treated as non-delayed
	by the analysis of aspects.
	* freeze.adb (Copy_Import_Pragma): New routine.
	(Wrap_Imported_Subprogram): Copy the import pragma by first
	resetting all semantic fields to avoid an infinite loop when
	performing the copy.
	* sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): Add
	comment on the processing of aspects Export and Import
	at the freeze point.
	(Analyze_Aspect_Convention: New routine.
	(Analyze_Aspect_Export_Import): New routine.
	(Analyze_Aspect_External_Link_Name): New routine.
	(Analyze_Aspect_External_Or_Link_Name): Removed.
	(Analyze_Aspect_Specifications): Factor out the analysis of
	aspects Convention, Export, External_Name, Import, and Link_Name
	in their respective routines.  Aspects Export and Import should
	not generate a Boolean pragma because their corresponding pragmas
	have a very different syntax.
	(Build_Export_Import_Pragma): New routine.
	(Get_Interfacing_Aspects): New routine.

2016-04-27  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Add_Inlined_Body): Overhaul implementation,
	robustify handling of -gnatn1, add special treatment for
	expression functions.

2016-04-27  Doug Rupp  <rupp@adacore.com>

	* g-traceb.ads: Update comment.
	* exp_ch2.adb: minor style fix in object declaration

From-SVN: r235483
2016-04-27 13:01:35 +02:00
Arnaud Charlet 2a253c5bba [multiple changes]
2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Check_Internal_Call): Do not
	consider a call when it appears within pragma Initial_Condition
	since the pragma is part of the elaboration statements of a
	package body and may only call external subprograms or subprograms
	whose body is already available.
	(Within_Initial_Condition): New routine.

2016-04-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Build_Procedure_Form): Prevent double generation
	of the procedure form when dealing with an expression function
	whose return type is an array.
	* sem_ch3.adb: Fix out-of order Has_Predicates setting.
	* exp_ch6.adb: Proper conversion for inherited operation in C.
	* sem_ch6.adb: Code cleanup.

2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-xref.ads, sem_ch10.adb: minor style fix in comment
	* g-socket.adb: Minor reformatting.
	* sinfo.ads: Minor comment correction.
	* sem_warn.ads: minor grammar fix in comment

From-SVN: r235482
2016-04-27 12:58:41 +02:00
Eric Botcazou afc737f052 gigi.h (gnat_to_gnu_entity): Adjust prototype.
* gcc-interface/gigi.h (gnat_to_gnu_entity): Adjust prototype.
	(maybe_pad_type): Adjust comment.
	(finish_record_type): Likewise.
	(rest_of_record_type_compilation): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Change DEFINITION type
	parameter from integer to boolean.  Adjust recursive calls.
	<E_Subprogram_Type>: Use copy_type and remove redundant assignments.
	<E_Signed_Integer_Subtype>:  Adjust comment.  Remove call to
	rest_of_record_type_compilation.  Set TYPE_PADDING_P flag earlier.
	Pass false to finish_record_type.  Set the debug type later.
	<E_Record_Subtype>: Remove call to rest_of_record_type_compilation.
	(gnat_to_gnu_component_type): Fix formatting.
	(gnat_to_gnu_field_decl): Adjust call to gnat_to_gnu_entity.
	(gnat_to_gnu_type): Likewise.
	* gcc-interface/trans.c (Identifier_to_gnu): Likewise.
	(Loop_Statement_to_gnu): Likewise.
	(Subprogram_Body_to_gnu): Likewise.
	(Exception_Handler_to_gnu_fe_sjlj): Likewise.
	(Exception_Handler_to_gnu_gcc): Likewise.
	(Compilation_Unit_to_gnu): Likewise.
	(gnat_to_gnu): Likewise.
	(push_exception_label_stack): Likewise.
	(elaborate_all_entities_for_package): Likewise.
	(process_freeze_entity): Likewise.
	(process_decls): Likewise.
	(process_type): Likewise.
	* gcc-interface/utils.c (struct deferred_decl_context_node): Tweak.
	(maybe_pad_type): Adjust comments.  Set the debug type later.  Remove
	call to rest_of_record_type_compilation.
	(rest_of_record_type_compilation): Use copy_type.
	(copy_type): Use correctly typed constants.
	(gnat_signed_or_unsigned_type_for): Use copy_type.
	* gcc-interface/utils2.c (nonbinary_modular_operation): Likewise.
	(build_goto_raise): Adjust call tognat_to_gnu_entity.

From-SVN: r235479
2016-04-27 10:49:35 +00:00
Eric Botcazou 06aed101fc re PR ada/70759 (Ada rts fails to build with -mabi=ilp32)
PR ada/70759
	* stor-layout.h (internal_reference_types): Delete.
	* stor-layout.c (reference_types_internal): Likewise.
	(internal_reference_types): Likewise.
	(layout_type) <REFERENCE_TYPE>: Adjust.
ada/
	* gcc-interface/misc.c (gnat_init): Do not call
	internal_reference_types.

From-SVN: r235472
2016-04-27 07:49:49 +00:00
Svante Signell 1ee806d8d7 Makefile.in (x86 GNU/Hurd): Use s-osinte-gnu.adb.
* gcc-interface/Makefile.in (x86 GNU/Hurd): Use s-osinte-gnu.adb.
	* s-osinte-gnu.ads: Small tweaks.
	* s-osinte-gnu.adb: New file.

From-SVN: r235467
2016-04-27 07:38:41 +00:00
Arnaud Charlet 6c7f7b8c69 [multiple changes]
2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Match_Constituent): Treat a constant as a legal
	constituent even if it is not to prevent spurious errors.

2016-04-21  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch4.adb: Minor typo fixes and reformatting.

2016-04-21  Dmitriy Anisimkov  <anisimko@adacore.com>

	* g-calend.ads (No_Time): The same value in any timezone.
	* g-socket.adb (Raise_Host_Error): Remove ending
	dot from original error message before append colon delimited
	host name.

From-SVN: r235331
2016-04-21 12:27:54 +02:00
Arnaud Charlet 0310af44bb [multiple changes]
2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb: Code cleanup.
	* sem_ch6.adb: Code cleanup.
	(Is_Matching_Limited_View): New routine.
	(Matches_Limited_With_View): Reimplemented.
	* sem_ch10.adb (Decorate_Type): Code cleanup.

2016-04-21  Doug Rupp  <rupp@adacore.com>

	* tracebak.c (PPC ELF): Add macro defs for lynxos178e.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Container_Indexing): If there are overloaded
	indexing functions, collect all overloadings of the call firts,
	and then transfer them to indexing node, to prevent interleaving
	of the set of interpretations of the nodes involved.
	* sem_res.adb (Resolve): Suppress cascaded errors that report
	ambiguities when one of the actuals in an overloaded generatlized
	indexing operation is illegal and has type Any_Type, as is done
	for similar cascaded errors in subprogram calls.
	(Valid_Tagged_Conversion): Cleanup conversion checks when one
	of the types involved is a class-wide subtype.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Load_Parent_Of_Generic): When looking for the
	subprogram declaration within a wrapper package, skip pragmas
	that may have been generated by aspect specifications on the
	generic instance.

2016-04-21  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Component_Not_OK_For_Backend): Generating C
	code return True for array identifiers since the backend needs
	to initialize such component by means of memcpy().

From-SVN: r235330
2016-04-21 12:25:59 +02:00
Arnaud Charlet 150346bd8d a-tasatt.adb, [...] (Fast_Path): Rewritten to avoid reading potentially uninitialized memory.
2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* a-tasatt.adb, a-tasatt.ads (Fast_Path): Rewritten to avoid reading
	potentially uninitialized memory.
	* sem_ch3.adb: Minor style fix in comment.

From-SVN: r235329
2016-04-21 12:21:56 +02:00
Arnaud Charlet c25f170d2d gnat_rm.texi, [...]: Update doc.
* gnat_rm.texi, gnat_ugn.texi,
        doc/gnat_ugn/gnat_project_manager.rst,
        doc/gnat_ugn/building_executable_programs_with_gnat.rst,
        doc/gnat_ugn/gnat_and_program_execution.rst,
        doc/gnat_ugn/gnat_utility_programs.rst,
        doc/gnat_ugn/the_gnat_compilation_model.rst,
        doc/gnat_rm/implementation_defined_attributes.rst,
        doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
        doc/gnat_rm/implementation_defined_pragmas.rst,
        doc/gnat_rm/the_gnat_library.rst,
        doc/gnat_rm/implementation_defined_aspects.rst: Update doc.
        * doc/Makefile: Cleanups.

From-SVN: r235328
2016-04-21 12:06:40 +02:00
Arnaud Charlet f76647c2ec [multiple changes]
2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_pakd.adb, sem_ch13.adb: Minor reformatting.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* exp_dbug.adb, exp_dbug.ads (Qualify_Entity_Name): Add suffixes to
	disambiguate local variables that may be hidden from inner visibility
	by nested block declarations or loop variables.

From-SVN: r235327
2016-04-21 11:54:42 +02:00
Arnaud Charlet 22a4f9d54d [multiple changes]
2016-04-21  Jerome Lambourg  <lambourg@adacore.com>

	* s-soflin.adb: Initialize the Stack_Limit global variable.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-writ.adb: Minor reformatting.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* exp_pakd.adb (Compute_Number_Components): New function to
	build an expression that computes the number of a components of
	an array that may be multidimensional.
	(Expan_Packed_Eq): Use it.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* g-traceb.ads: Update list of supported platforms.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Add_Predicates): if the type is declared in
	an inner package it may be frozen outside of the package, and
	the generated pragma has not been analyzed yet, the expression
	for the predicate must be captured and added to the predicate
	function at this point.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Analyze_Package_Body_Contract): Do not check
	for a missing package refinement because 1) packages do not have
	"refinement" and 2) the check for proper state refinement is
	performed in a different place.
	* einfo.adb (Has_Non_Null_Visible_Refinement): Reimplemented.
	(Has_Null_Visible_Refinement): Reimplemented.
	* sem_ch3.adb (Analyze_Declarations): Determine whether all
	abstract states have received a refinement and if not, emit
	errors.
	* sem_ch7.adb (Analyze_Package_Declaration): Code
	cleanup. Determine whether all abstract states of the
	package and any nested packages have received a refinement
	and if not, emit errors.
	(Requires_Completion_In_Body): Add new formal parameter
	Do_Abstract_States. Update the comment on usage. Propagate the
	Do_Abstract_States flag to all Unit_Requires_Body calls.
	(Unit_Requires_Body): Remove formal
	parameter Ignore_Abstract_States. Add new formal paramter
	Do_Abstract_States. Propagate the Do_Abstract_States flag to
	all Requires_Completion_In calls.
	* sem_ch7.ads (Unit_Requires_Body): Remove formal
	parameter Ignore_Abstract_States. Add new formal paramter
	Do_Abstract_States. Update the comment on usage.
	* sem_ch9.adb (Analyze_Single_Protected_Declaration): Do
	not initialize the constituent list as this is now done on a
	need-to-add-element basis.
	(Analyze_Single_Task_Declaration):
	Do not initialize the constituent list as this is now done on
	a need-to-add-element basis.
	* sem_ch10.adb (Decorate_State): Do not initialize the constituent
	lists as this is now done on a need-to-add-element basis.
	* sem_prag.adb (Analyze_Constituent): Set the
	refinement constituents when adding a new element.
	(Analyze_Part_Of_In_Decl_Part): Set the Part_Of constituents when
	adding a new element.
	(Analyze_Part_Of_Option): Set the Part_Of
	constituents when adding a new element.
	(Analyze_Pragma): Set the Part_Of constituents when adding a new
	element.
	(Check_Constituent_Usage (all versions)): Reimplemented.
	(Collect_Constituent): Set the refinement constituents when adding
	a new element.
	(Create_Abstract_State): Do not initialize the
	constituent lists as this is now done on a need-to-add-element basis.
	(Propagate_Part_Of): Set the Part_Of constituents when
	adding a new element.
	* sem_util.adb (Check_State_Refinements): New routine.
	(Has_Non_Null_Refinement): Reimplemented.
	(Has_Null_Refinement): Reimplemented.
	(Requires_State_Refinement): Removed.
	* sem_util.ads (Check_State_Refinements): New routine.
	(Requires_State_Refinement): Removed.

From-SVN: r235326
2016-04-21 11:46:18 +02:00
Hristian Kirtchev c4dc212506 lib-writ.adb, [...]: Minor reformatting and code cleanup.
2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-writ.adb, sem_ch6.adb: Minor reformatting and code cleanup.
	* sem.adb: Fix comment.

From-SVN: r235325
2016-04-21 11:41:45 +02:00
Arnaud Charlet c42aba6bb3 [multiple changes]
2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Subtype_Declaration): A subtype
	declaration with no aspects, whose subtype_mark is a subtype
	with predicates, inherits the list of subprograms for the type.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Has_Per_Object_Constraint): Refine previous
	change.

2016-04-21  Thomas Quinot  <quinot@adacore.com>

	* g-socket.adb (Raise_Host_Error): Include additional Name parameter.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* lib-writ.adb (Write_ALI): Do not record in ali file units
	that are present in the files table but not analyzed. These
	units are present because they appear in the context of units
	named in limited_with clauses, and the unit being compiled does
	not depend semantically on them.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Simplify code to
	create the procedure body for an function returning an array type,
	when generating C code. Reuse the subprogram body rather than
	creating a new one, both as an efficiency measure and because
	in an instance the body may contain global references that must
	be preserved.

From-SVN: r235324
2016-04-21 11:39:38 +02:00
Hristian Kirtchev bbe008b6e9 sem_ch3.adb, [...]: Minor reformatting.
2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb, exp_attr.adb, exp_ch6.adb, exp_aggr.adb: Minor
	reformatting.

From-SVN: r235322
2016-04-21 11:26:02 +02:00
Javier Miranda 35f4f23840 exp_aggr.adb (Component_Check): Extend the check that verifies that the aggregate has no function calls to...
2016-04-21  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Component_Check): Extend
	the check that verifies that the aggregate has no function
	calls to handle transformations performed by the frontend.
	(Ultimate_Original_Expression): New subprogram.

From-SVN: r235321
2016-04-21 11:18:57 +02:00
Arnaud Charlet a1ad79ed63 [multiple changes]
2016-04-21  Philippe Gil  <gil@adacore.com>

	* krunch.adb (Krunch): Fix krunching of i-java.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch8.adb (Evaluation_Required): Always return
	True when Modify_Tree_For_C.

From-SVN: r235320
2016-04-21 11:12:45 +02:00
Arnaud Charlet 9b7924dd17 [multiple changes]
2016-04-21  Eric Botcazou  <ebotcazou@adacore.com>

	* gnatlink.adb (Gnatlink): Robustify detection of Windows target.
	* alloc.ads: Minor comment fixes.
	* einfo.ads: Fix typo.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Component_Not_OK_For_Backend): Redo previous
	changes to handle all cases of components depending on the
	discriminant, not just string literals.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Subtype_Declaration): If the subtype
	declaration is the generated declaration for a generic actual,
	inherit predicates from the actual if it is a predicated subtype.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Rewrite_Function_Call_For_C): If the function is
	inherited and its result is controlling,  introduce a conversion
	on the actual for the corresponding procedure call, to avoid
	spurious type errors.

2016-04-21  Jerome Lambourg  <lambourg@adacore.com>

	* krunch.adb (Krunch): Fix krunching of i-vxworks.

From-SVN: r235317
2016-04-21 10:57:30 +02:00
Arnaud Charlet d74716b313 [multiple changes]
2016-04-21  Gary Dismukes  <dismukes@adacore.com>

	* exp_aggr.adb: Minor reformatting and code cleanup.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Resolve_Name): Omit quantified expressions from
	resolution, because they introduce local names. Full resolution
	will take place when predicate function is constructed.

From-SVN: r235316
2016-04-21 10:54:25 +02:00
Arnaud Charlet 0ef5cd0ad8 exp_aggr.adb (Component_Not_OK_For_Backend): Refine previous change to take into account Per_Object_Constraint field rather...
2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Component_Not_OK_For_Backend): Refine previous
	change to take into account Per_Object_Constraint field rather
	than special casing strings.
	* exp_ch6.adb: Fix typo in Replace_Returns.

From-SVN: r235314
2016-04-21 10:52:31 +02:00
Arnaud Charlet 2d6aa71558 [multiple changes]
2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch5.adb: Minor reformatting.

2016-04-21  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch2.adb (Expand_Current_Value): Make an appropriate
	character literal if the entity is of a character type.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Backend_Processing_Possible): Return False
	when generating C and aggregate contains function calls.

2016-04-21  Tristan Gingold  <gingold@adacore.com>

	* krunch.adb (Krunch): Only partially krunch children of
	Interfaces that aren't known.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Make_Inline): Handle properly the instantiation
	of a generic subpprogram that carries an Inline aspect. Place
	inline info on the anonymous subprogram that is constructed in
	the wrapper package.
	(Analyze_Pragma, case Pure): Do not check placement if pragma
	appears within an instantiation, which can be nested at any level.
	* sem_ch12.adb (Analyze_Instance_And_Renamings): Do not copy Freeze
	node from anonymous subprogram to its visible renaming. The
	freeze node will be constructed if the subprogram carries
	delayed aspects.
	(Set_Global): Preserve dimension information if present (from
	code reading).

2016-04-21  Vasiliy Fofanov  <fofanov@adacore.com>

	* gnatlink.adb: Change wording of the warning message on
	problematic filenames to be more neutral. Add a new substring
	"patch" introduced on Windows 10.

From-SVN: r235313
2016-04-21 10:50:36 +02:00
Arnaud Charlet 08f52d9f84 [multiple changes]
2016-04-21  Philippe Gil  <gil@adacore.com>

	* tracebak.c (__gnat_backtrace): handle bad RIP values (win64 only)

2016-04-21  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Component_Not_OK_For_Backend): Return true for string
	literals.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Has_Non_Null_Abstract_State): New routine.
	* einfo.ads New synthesized attribute
	Has_Non_Null_Abstract_State along with occurrences in entities.
	(Has_Non_Null_Abstract_State): New routine.
	* sem_ch7.adb (Unit_Requires_Body): Add local variable
	Requires_Body. A package declaring an abstract state requires
	a body only when the state is non-null and the package contains
	at least one other construct that requires completion in a body.
	* sem_util.adb (Mode_Is_Off): Removed.
	(Requires_State_Refinement): Remove an obsolete check. Code
	cleanup.

2016-04-21  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Analyze_Attribute): In processing
	the 'Old attribute, a warning is given for infinite recursion. Fix
	the code to not crash when the prefix of 'Old denotes a protected
	function.
	* sem_ch5.adb (Analyze_Iterator_Specification):
	Avoid calling Is_Dependent_Component_Of_Mutable_Object in cases
	where the parameter would not be an object.

2016-04-21  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_eval.adb (Compile_Time_Compare): Be prepared for an empty
	Etype or Underlying_Type of the operands.

2016-04-21  Eric Botcazou  <ebotcazou@adacore.com>

	* atree.adb (Print_Statistics): Protect against overflows and
	print the memory consumption in bytes.
	* table.adb (Reallocate): Do the intermediate calculation of the new
	size using the Memory.size_t type.

From-SVN: r235312
2016-04-21 10:48:04 +02:00
Arnaud Charlet b943a97113 [multiple changes]
2016-04-21  Gary Dismukes  <dismukes@adacore.com>

	* exp_attr.adb (Is_Inline_Floating_Point_Attribute): Suppress
	expansion of Attribute_Machine and Attribute_Model for AAMP.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb: Disable previous change for now.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Selected_Component): If prefix has an
	access type and designated type is a limited view, introduce
	an explicit dereference before continuing the analysis, and
	set its type to the non-limited view of the designated type,
	if we are in context where it is available.

From-SVN: r235311
2016-04-21 10:30:19 +02:00
Ed Schonberg 78bc7fe67e freeze.adb: Freeze profile in ASIS mode.
2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb: Freeze profile in ASIS mode.

From-SVN: r235309
2016-04-21 10:26:57 +02:00
Arnaud Charlet 6dc87f5f53 [multiple changes]
2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_aux.ads, sem_aux.adb (Has_Rep_Item): New variant.
	* sem_util.adb (Inherit_Rep_Item_Chain): Reimplemented.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb: Minor reformatting.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb: Minor comment update.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* freeze.ads, freeze.adb (Freeze_Entity, Freeze_Before): Add
	boolean parameter to determine whether freezing an overloadable
	entity freezes its profile as well. This is required by
	AI05-019. The call to Freeze_Profile within Freeze_Entity is
	conditioned by the value of this flag, whose default is True.
	* sem_attr.adb (Resolve_Attribute, case 'Access): The attribute
	reference freezes the prefix, but it the prefix is a subprogram
	it does not freeze its profile.

From-SVN: r235308
2016-04-21 10:25:21 +02:00
Arnaud Charlet a14bbbb4a4 [multiple changes]
2016-04-21  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Build_Procedure_Form): No action needed for
	subprogram renamings since the backend can generate the call
	using the renamed subprogram. This leaves the tree more clean
	to the backend.
	* exp_ch6.adb (Expand_Call): Extend previous patch for
	rewritten-for-c entities to handle subprogram renamings.
	(Rewrite_Function_Call_For_C): Handle subprogram renamings.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb: Code cleanup.

From-SVN: r235307
2016-04-21 10:23:05 +02:00
Ed Schonberg 17fd72cef4 sem_ch6.adb (Analyze_Subprogram_Body_Helper): If the body is created for SPARK_To_C...
2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): If the body is
	created for SPARK_To_C, the entity must remain invisible so it
	does not overload subsequent references to the original function.
	* exp_ch6.adb (Build_Procedure_Body_Form, Replace_Returns):
	Handle Extended_Return_Statements by replacing it with a block
	with assignments and a simple return statement.
	* exp_util.adb (Build_Procedure_Form): Make procedure entity
	invisible after analyzing declaration, to prevent improper
	overloading.

From-SVN: r235306
2016-04-21 10:21:47 +02:00
Javier Miranda aeb98f1dcd sem_ch6.adb (Build_Subprogram_Declaration): Propagate the attribute Rewritten_For_C to the body since since the expander...
2016-04-21  Javier Miranda  <miranda@adacore.com>

	* sem_ch6.adb (Build_Subprogram_Declaration): Propagate the
	attribute Rewritten_For_C to the body since since the expander
	may generate calls using that entity.
	* exp_ch6.adb (Expand_Call): For internally generated
	calls ensure that they reference the entity of the spec
	of the called function.
	(Rewritten_For_C_Func_Id): New subprogram.
	(Rewritten_For_C_Proc_Id): New subprogram.
	(Rewrite_Function_Call_For_C): Invoke the new subprogram to
	ensure that we skip freezing entities.
	* exp_util.adb (Build_Procedure_Form): No action needed if the
	procedure was already built.

From-SVN: r235305
2016-04-21 10:20:59 +02:00
Arnaud Charlet 2cc7967fbe [multiple changes]
2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb, exp_util.adb, sem_ch13.adb, exp_unst.adb: Minor
	reformatting.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Denotes_Iterator): Use root type to determine
	whether the ultimate ancestor is the predefined iterator
	interface pakage.
	* exp_ch5.adb (Expand_Iterator_Over_Container): simplify code
	and avoid reuse of Pack local variable.

2016-04-21  Olivier Hainque  <hainque@adacore.com>

	* system-vxworks-arm.ads, system-vxworks-sparcv9.ads,
	system-vxworks-ppc.ads, system-vxworks-m68k.ads,
	system-vxworks-mips.ads, system-vxworks-x86.ads: Define
	Executable_Extension to ".out".

From-SVN: r235304
2016-04-21 10:19:35 +02:00
Javier Miranda 29a56f611a frontend.adb: Update call to Unnest_Subprograms.
2016-04-21  Javier Miranda  <miranda@adacore.com>

	* frontend.adb: Update call to Unnest_Subprograms.
	* exp_ch6.ads, exp_ch6.adb, exp_unst.ads, exp_unst.adb
	(Unnest_Subprograms): Moved to package exp_unst.
	* exp_unst.ads (Unnest_Subprogram): Moved to the body of the
	package.
	* exp_dbug.adb (Qualify_Entity_Name): Enable qualification of
	enumeration literals when generating C code.

From-SVN: r235303
2016-04-21 10:14:08 +02:00
Arnaud Charlet e379beb56f [multiple changes]
2016-04-21  Javier Miranda  <miranda@adacore.com>

	* frontend.adb: Remove call to initialize Exp_Ch6.
	* exp_ch6.ads, exp_ch6.adb (Initialize): removed.
	(Unest_Entry/Unest_Bodies): Removed.
	(Unnest_Subprograms): Code cleanup.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* set_targ.adb (Read_Target_Dependent_Values):
	close target description file once its contents is read.
	* s-os_lib.adb (Non_Blocking_Spawn, version with Stdout_File
	and Stderr_File): Close local file descriptors before spawning
	child process.
	* exp_util.adb (Containing_Package_With_Ext_Axioms): Limit scope of
	local variables to make the code easier to understand and avoid
	duplicated calls to Parent and Generic_Parent.

From-SVN: r235302
2016-04-21 10:11:46 +02:00
Arnaud Charlet 6905a0499b [multiple changes]
2016-04-20  Bob Duff  <duff@adacore.com>

	* s-os_lib.ads: Minor comment fix.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): Do no generate
	a discriminant check for a type whose partial view has unknown
	discriminants when the full view has discriminants with defaults.

2016-04-20  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Remove_Side_Effects): When generating C code
	remove side effect of type conversion of access to unconstrained
	array type.
	(Side_Effect_Free): Return false for the type
	conversion of access to unconstrained array type when generating
	C code.
	* sem_res.adb (Resolved_Type_Conversion): Remove side effects
	of access to unconstrained array type conversion when generating
	C code.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Build_Predicate_Function_Declaration): New
	function, to construct the declaration of a predicate function
	at the end of the current declarative part rather than at the
	(possibly later) freeze point of the type. This also allows uses
	of a type with predicates in instantiations elsewhere.
	(Resolve_Aspect_Expression): New procedure to detect visiblity
	errors in aspect expressions, at the end of the declarative part
	that includes the type declaration.
	* sem_ch3.adb (Complete_Private_Subtype): Propagate properly the
	predicate function from private to full view.
	* einfo.adb (Predicate_Function): Refine search for predicate
	function when type has a full view and predicate function may
	be defined on either view.

2016-04-20  Javier Miranda  <miranda@adacore.com>

	* frontend.adb: Passing the root of the tree to
	Unnest_Subprograms().
	* exp_ch6.adb (Expand_N_Subprogram_Body): Remove code that
	took care of adding subprograms to the Unest_Bodies table since
	performing such action too early disables the ability to process
	generic instantiations.
	(Unnest_Subprograms): Adding parameter.
	(Search_Unnesting_Subprograms): New subprogram.
	* exp_ch6.ads (Unnest_Subrograms): Update documentation.

From-SVN: r235268
2016-04-20 12:56:12 +02:00
Arnaud Charlet 268aeaa902 [multiple changes]
2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb, freeze.adb, sem_util.adb: Minor reformatting.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_unst.adb (Check_Static_Type): For a private type, check
	full view.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Check_Type): Reject an attribute reference in
	an aspect expression, when the prefix of the reference is the
	current instance of the type to which the aspect applies.

From-SVN: r235267
2016-04-20 12:51:01 +02:00
Arnaud Charlet 51b42ffa5e [multiple changes]
2016-04-20  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Enter_Overloaded_Entity): Do not warn about
	hiding unless we're actually hiding something. The previous
	code would (for example) warn about a "<" on a record type
	because it incorrectly thought it was hiding the "<" on Boolean
	in Standard. We need to check that the homonym S is in fact a
	homograph of a predefined operator.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.ads, exp_util.adb (Build_Procedure_Form): Moved here
	from exp_ch6.adb, for use in SPARK_To_C mode when creating the
	procedure equivalent to a function returning an array, when this
	construction is deferred to the freeze point of the function.
	* sem_util.adb (Is_Unchecked_Conversion_Instance): Include a
	function that renames an instance of Unchecked_Conversion.
	* freeze.adb (Freeze_Subprogram): Generate the proper procedure
	declaration for a function returning an array.
	* exp_ch6.adb (Build_Procedure_Form): Moved to exp_util.

From-SVN: r235266
2016-04-20 12:49:24 +02:00
Ed Schonberg f73dc37f75 sem_util.ads, [...] (Is_Expanded_Priority_Attribute): New predicate to determine that in a context with full run-time...
2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_util.adb (Is_Expanded_Priority_Attribute):
	New predicate to determine that in a context with full run-time,
	a function call is an expansion of a reference to attribute
	Priority.
	* sem_ch5.adb (Analyze_Function_Call): use it.
	* exp_ch5.adb (Expand_N_Subprogram_Call): use it.

From-SVN: r235265
2016-04-20 12:46:57 +02:00
Arnaud Charlet 75a957f5db [multiple changes]
2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb Flag286 is now used as Is_Exception_Handler.
	(Is_Exception_Handler): New routine.
	(Set_Is_Exception_Handler): New routine.
	(Write_Entity_Flags): Output the status of Is_Exception_Handler.
	* einfo.ads New attribute Is_Exception_Handler along with
	occurrences in entities.
	(Is_Exception_Handler): New routine along with pragma Inline.
	(Set_Is_Exception_Handler): New routine along with pragma Inline.
	* exp_ch7.adb (Make_Transient_Block): Ignore blocks generated
	for exception handlers with a choice parameter.
	* sem_ch11.adb (Analyze_Exception_Handlers): Mark the scope
	generated for a choice parameter as an exception handler.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Derived_Access_Type): Remove dead code.
	(Constrain_Discriminated_Type): In an instance, if the type has
	unknown discriminants, use its full view.
	(Process_Subtype): Check that the base type is private before
	adding subtype to Private_Dependents list.

2016-04-20  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb: Minor comment fix.

From-SVN: r235264
2016-04-20 12:45:55 +02:00
Yannick Moy bc795e3e03 sem_ch4.adb: Fix typos in comments.
2016-04-20  Yannick Moy  <moy@adacore.com>

	* sem_ch4.adb: Fix typos in comments.
	* sem_res.adb (Resolve_Case_Expression): Fix type of case alternatives.

From-SVN: r235263
2016-04-20 12:44:17 +02:00
Arnaud Charlet 0f8b3e5ddd [multiple changes]
2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): A reference to the
	current instance of a task type is legal if the prefix is an
	expression of that task type and the selector is an entry or
	entry family.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* a-cfdlli.ads (List): Type is no longer tagged, not needed. Move
	varsize field at the end for efficiency.

From-SVN: r235261
2016-04-20 12:43:03 +02:00
Arnaud Charlet 0c61772a12 [multiple changes]
2016-04-20  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: Do not invoke gprls when the invocation of "gnat
	ls" includes the switch -V.
	* clean.adb: "<target>-gnatclean -P" now calls "gprclean
	--target=<target>"
	* make.adb: "<target>-gnatmake -P" now calls "gprbuild
	--target=<target>"

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Qualify_Type): Do not perform
	partial qualification when the immediate scope is a generic unit.

From-SVN: r235260
2016-04-20 12:40:48 +02:00
Hristian Kirtchev 61d1b085b9 exp_unst.adb: Minor reformatting.
2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_unst.adb: Minor reformatting.

From-SVN: r235259
2016-04-20 12:38:24 +02:00
Arnaud Charlet 18431dc503 [multiple changes]
2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): Ensure that the
	tag assignment and adjustment preceed the accessibility check.
	* exp_ch7.adb (Is_Subprogram_Call): Reimplemented.

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_prag.adb (Expand_Attributes): Ensure that
	the temporary used to capture the value of attribute 'Old's
	prefix is properly initialized.

2016-04-20  Javier Miranda  <miranda@adacore.com>

	* exp_unst.ads, exp_unst.adb (Get_Level, Subp_Index): Moved to library
	level.

From-SVN: r235258
2016-04-20 12:36:01 +02:00
Arnaud Charlet dfbc6cbe30 [multiple changes]
2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch9.adb (Analyze_Task_Type_Declaration): Shut down warning
	in codepeer mode.

2016-04-20  Vincent Celier  <celier@adacore.com>

	* make.adb: Code cleanup.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): Help C code
	generation.

From-SVN: r235257
2016-04-20 12:31:59 +02:00
Arnaud Charlet 06f6c43f5c [multiple changes]
2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Copy_Generic_Node): Handle the special
	qualification installed for universal literals that act as
	operands in binary or unary operators.	(Qualify_Operand): Mark
	the qualification to signal the instantiation mechanism how to
	handle global reference propagation.
	* sinfo.adb (Is_Qualified_Universal_Literal): New routine.
	(Set_Is_Qualified_Universal_Literal): New routine.
	* sinfo.ads New attribute Is_Qualified_Universal_Literal along
	with occurrences in nodes.
	(Is_Qualified_Universal_Literal):
	New routine along with pragma Inline.
	(Set_Is_Qualified_Universal_Literal): New routine along with
	pragma Inline.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem.adb (Do_Analyze): Save and restore Style_Max_Line_Length
	so that the corresponding checks are preserved across compilations
	that include System.Constants in their context.

2016-04-20  Gary Dismukes  <dismukes@adacore.com>

	* sem_type.adb: Minor typo fix and reformatting.
	* a-conhel.ads: Update comment.

2016-04-20  Bob Duff  <duff@adacore.com>

	* a-cihama.adb, a-cihase.adb, a-coinve.adb (Copy): Rewrite the
	code so it doesn't trigger an "uninit var" warning.

From-SVN: r235256
2016-04-20 12:29:26 +02:00
Arnaud Charlet 71129dded1 [multiple changes]
2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.ads Add new table Universal_Type_Attribute.
	* sem_util.adb (Yields_Universal_Type): Use a table lookup when
	checking attributes.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Init_Stored_Discriminants,
	Init_Visible_Discriminants): New procedures, subsidiary of
	Build_Record_Aggr_Code, to handle properly the construction
	of aggregates for a derived type that constrains some parent
	discriminants and renames others.

From-SVN: r235255
2016-04-20 12:26:48 +02:00
Hristian Kirtchev 5c63aafa2e sem_ch12.adb (Qualify_Universal_Operands): New routine.
2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Qualify_Universal_Operands): New routine.
	(Save_References_In_Operator): Add explicit qualifications in
	the generic template for all operands of universal type.
	* sem_type.adb (Disambiguate): Update the call to Matches.
	(Matches): Reimplemented.
	* sem_util.ads, sem_util.adb (Yields_Universal_Type): New routine.

From-SVN: r235254
2016-04-20 12:19:57 +02:00
Arnaud Charlet 7e22a38c2f [multiple changes]
2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Rep_Item_Too_Late): Better error message for
	an illegal aspect that freezes the entity to which it applies.

2016-04-20  Bob Duff  <duff@adacore.com>

	* a-stwibo.ads, a-stzbou.ads
	("="): Add overriding keyword before function to avoid crash when
	compiler is called with -gnatyO (check overriding indicators).

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Check_Policy):  If this
	is a configuration pragma and it uses the ARG syntax, insert
	the rewritten pragma after the current one rather than using
	Insert_Actions.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Backend_Processing_Possible): Add handling of
	C back-end.

From-SVN: r235253
2016-04-20 12:10:32 +02:00
Hristian Kirtchev b83dd5ecea s-imgllu.adb, [...]: Minor reformatting.
2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-imgllu.adb, sem_util.adb, s-imgint.adb, s-imguns.adb,
	s-imglli.adb: Minor reformatting.

From-SVN: r235251
2016-04-20 12:05:41 +02:00
Hristian Kirtchev d566e90a16 sem_res.adb (Rewrite_Renamed_Operator): Do not rewrite the renamed operator when the associated node appears within a...
2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Rewrite_Renamed_Operator): Do not rewrite the
	renamed operator when the associated node appears within a
	pre/postcondition.
	* sem_util.ads, sem_util.adb (In_Pre_Post_Condition): New routine.

From-SVN: r235249
2016-04-20 11:22:59 +02:00
Arnaud Charlet 9a476d752d [multiple changes]
2016-04-20  Yannick Moy  <moy@adacore.com>

	* osint.adb (Relocate_Path): Fix test when Path is shorter than Prefix.
	* einfo.adb (Set_Overridden_Operation): Add assertion.
	* sem_util.adb (Unique_Entity): for renaming-as-body return the spec
	entity.

2016-04-20  Javier Miranda  <miranda@adacore.com>

	* exp_unst.adb (Append_Unique_Call): New subprogram.
	(Unnest_Subprogram): Replace the unique occurrence
	of Call.Append() by Append_Unique_Call() which protects us from
	adding to the Calls table duplicated entries.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* exp_attr.adb (Is_GCC_Target): Fix for C backend.
	* xref_lib.ads (Dependencies_Tables): instantiate
	Table package with types that guarantee its safe use.
	* s-imgllu.adb, s-imgint.adb, s-imguns.adb, s-imglli.adb: Avoid nested
	procedures.

From-SVN: r235248
2016-04-20 11:21:59 +02:00
Arnaud Charlet 88438c0e87 exp_attr.adb (Expand_N_Attribute_Reference [Attribute_Valid]): Disable expansion when generating C code.
2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference [Attribute_Valid]):
	Disable expansion when generating C code.
	* sinfo.ads, inline.ads: Minor editing.

From-SVN: r235247
2016-04-20 11:18:59 +02:00
Hristian Kirtchev c37e6613f5 sem_util.adb, [...]: Minor reformatting.
2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb, contracts.adb, ghost.adb, exp_ch6.adb: Minor
	reformatting.

From-SVN: r235246
2016-04-20 11:17:15 +02:00
Javier Miranda 7f5e1dee7c contracts.adb (Build_Postconditions_Procedure): Code cleanup.
2016-04-20  Javier Miranda  <miranda@adacore.com>

	* contracts.adb (Build_Postconditions_Procedure): Code cleanup.
	* ghost.adb (Os_OK_Ghost_Context.Is_OK_Declaration): Handle the
	declaration of the internally built _postcondition procedure.

From-SVN: r235245
2016-04-20 11:15:47 +02:00
Arnaud Charlet 31ae1b4629 [multiple changes]
2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* snames.ads-tmpl (Internal_Attribute_Id, Attribute_Class_Array): Fix
	indentation.
	* sem_util.adb (Is_Unchecked_Conversion_Instance):
	defense against library-level renamings of other functions,
	which are never instances of Unchecked_Conversion.
	* einfo.ads: minor fix of casing in comment

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_N_Subprogram_Stub): Do not expand a body
	that has been analyzed and expanded already. Qualify the names
	in the proper body for use in the generation of C code.

From-SVN: r235244
2016-04-20 11:14:02 +02:00
Arnaud Charlet 1ba563f5f9 [multiple changes]
2016-04-20  Javier Miranda  <miranda@adacore.com>

	* contracts.adb (Build_Postconditions_Procedure): Force its
	inlining when generating C code.
	* sem_attr.adb (Analyze_Attribute_Old_Result): Handle inlined
	_postconditions when generating C code.
	* exp_ch6.adb (Inlined_Subprogram): Inline calls to
	_postconditions when generating C code.
	* sinfo.ads, sinfo.adb (Corresponding_Spec, Set_Corresponding_Spec):
	types of return value and argument changed from Node_Id to
	Entity_Id.

2016-04-20  Vincent Celier  <celier@adacore.com>

	* make.adb, clean.adb, gnatname.adb: Revert previous change for now.

2016-04-20  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch12.adb (Analyze_Instance_And_Renamings): Do not reset
	the Has_Delayed_Freeze flag on the anonymous instance node.

From-SVN: r235243
2016-04-20 11:11:42 +02:00
Arnaud Charlet e361e9a1db [multiple changes]
2016-04-20  Javier Miranda  <miranda@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): Remove transient
	scope associated with the renaming object declaration.
	* exp_util.adb (Insert_Actions): Remove handling of iterator
	loop marked as requiring the secondary stack.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Image): Implement
	AI12-0124, which extends the functionality of the attribute so it
	reflects the semantics of GNAT 'Img when applied to scalar types.
	* lib-xref.adb: minor whitespace layout fix.

From-SVN: r235242
2016-04-20 11:08:55 +02:00
Arnaud Charlet d67ffa886d [multiple changes]
2016-04-20  Vincent Celier  <celier@adacore.com>

	* clean.adb (Gnatclean): Fail if project file specified and
	gprclean is not available.
	* gnatname.adb: Fail is -P is used and gprname is not available.
	* make.adb (Initialize): Fail if project file specified and
	gprbuild is not available.

2016-04-20  Bob Duff  <duff@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): Do not use secondary
	stack when possible.

From-SVN: r235241
2016-04-20 11:07:12 +02:00
Arnaud Charlet 93e90bf474 [multiple changes]
2016-04-20  Gary Dismukes  <dismukes@adacore.com>

	* par_sco.adb, sem_util.adb, sem_ch13.adb: Minor typo corrections and
	reformatting.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Default_Storage_Pool):
	If the pragma comes from an aspect specification, verify that
	the aspect applies to an entity with a declarative part.
	* exp_ch5.adb: Code cleanup.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_If_Expression): If first expression is
	universal, resolve subsequent ones with the corresponding class
	type (Any_Integer or Any_Real).

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): If expansion is
	disabled, complete the analysis of the iterator name to ensure
	that reference for entities within are properly generated.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* a-dispat.ads (Yield): add Global contract.
	* a-calend.ads, a-reatim.ads: Added Initializes => Clock_Time.
	* a-taside.adb: Added Initializes => Tasking_State.

From-SVN: r235240
2016-04-20 11:04:48 +02:00
Hristian Kirtchev ae3d8837bd sem_ch13.adb (Build_Invariant_Procedure): Reimplement the invariant procedure spec and body insertion.
2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Build_Invariant_Procedure):
	Reimplement the invariant procedure spec and body insertion.

From-SVN: r235239
2016-04-20 11:00:58 +02:00
Arnaud Charlet 776fbb7478 [multiple changes]
2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Add_Invariant): Do not replace
	the saved expression of an invariatn aspect when inheriting
	a class-wide type invariant as this clobbers the existing
	expression. Do not use New_Copy_List as it is unnecessary
	and leaves the parent pointers referencing the wrong part of
	the tree. Do not replace the type references for ASIS when
	inheriting a class-wide type invariant as this clobbers the
	existing replacement.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Build_Explicit_Dereference): If the designated
	expression is an entity name, generate reference to the entity
	because it will not be resolved again.

From-SVN: r235238
2016-04-20 10:59:02 +02:00
Arnaud Charlet a017690335 standard_and_implementation_defined_restrictions.rst, [...]: Update documentation.
* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
        gnat_rm.texi: Update documentation.

From-SVN: r235205
2016-04-19 15:30:03 +02:00
Arnaud Charlet 009c026845 [multiple changes]
2016-04-19  Olivier Hainque  <hainque@adacore.com>

	* par_sco.adb (Traverse_One, case N_Case_Statement):
	Skip pragmas before the first alternative.
	(Traverse_Handled_Statement_Sequence, Exception_Handlers): Likewise.

2016-04-19  Tristan Gingold  <gingold@adacore.com>

	* adaint.c (__gnat_lwp_self): New function (for darwin).
	* s-osinte-darwin.ads, s-osinte-darwin.adb (lwp_self): Import
	of __gnat_lwp_self.

From-SVN: r235204
2016-04-19 15:24:36 +02:00
Olivier Hainque 27b95a6541 sem_util.adb (Build_Elaboration_Entity): Always request an elab counter when preserving control-flow.
2016-04-19  Olivier Hainque  <hainque@adacore.com>

	* sem_util.adb (Build_Elaboration_Entity): Always request an
	elab counter when preserving control-flow.

2016-04-19  Olivier Hainque  <hainque@adacore.com>

	* sem_ch13.adb (Build_Invariant_Procedure_Declaration): Set
	Needs_Debug_Info when producing SCOs.
	* par_sco.adb (Traverse_Aspects): Fix categorization of
	Type_Invariant to match actual processing as activated depending
	on pragma Assertion_Policy.
	* sem_prag.adb (Analyze_Pragma): Remove special case for
	Name_Invariant regarding SCO generation, which completely disabled
	the production of SCOs for Invariant pragmas and aspects.

From-SVN: r235202
2016-04-19 15:19:45 +02:00
Arnaud Charlet b4213ffdaf [multiple changes]
2016-04-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb, sem_util.adb, sem_res.adb, sem_attr.adb: Minor
	reformatting.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Profile): Refine predicate that checks
	whether a function that returns a limited view is declared in
	another unit and cannot be frozen at this point.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Component_Count): Handle properly superflat
	arrays, i.e. empty arrays where Hi < Lo - 1, to ensure that the
	return value of the function is Natural, rather than leaving
	the handling of such arrays to the caller of this function.

From-SVN: r235200
2016-04-19 15:10:35 +02:00
Arnaud Charlet b314303784 [multiple changes]
2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb, sem_attr.adb, par-prag.adb, exp_aggr.adb, sem_type.adb
	sem_ch12.adb, sem_ch3.adb, exp_ch7.adb, exp_ch9.adb: Code cleanup.
	* sem_res.adb, sem_util.ads, sem_util.adb (Is_OK_Volatile_Context):
	Promoted from being a nested subprogram in Sem_Res.Resolve_Entity_Name
	to publicly visible routine in Sem_Util.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Parameter_Aliasing_Checks): Do not apply
	the check if the type of the actual is By_Reference.

From-SVN: r235199
2016-04-19 15:09:07 +02:00
Arnaud Charlet e90e9503df sem_res.adb (Within_Subprogram_Call): Detect also nodes that appear in entry calls.
2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_res.adb (Within_Subprogram_Call): Detect
	also nodes that appear in entry calls.
	(Resolve_Actuals, Insert_Default): Propagate
	dimension information if any, from default expression to the
	copy that appears in the list of actuals.
	* uintp.ads: minor whitespace fix in comment.
	* sem_prag.adb, stringt.adb, inline.adb, lib-xref-spark_specific.adb:
	Minor code cleanup.
	* set_targ.adb (Set_Targ): convert directly from
	Natural to Pos, without intermediate conversion to Int.

From-SVN: r235197
2016-04-19 15:06:01 +02:00
Arnaud Charlet db7e372172 sem_ch6.adb (Process_Formals): Mark suspicious reference to SPARK RM in comment.
2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch6.adb (Process_Formals): Mark suspicious reference to
	SPARK RM in comment.
	* sem_prag.adb (Analyze_Global_Item): Fix reference to SPARK RM
	in comment.
	* sem_res.adb (Property_Error, Resolve_Actuals): Fix reference
	to SPARK RM in both comment and error message.

From-SVN: r235196
2016-04-19 15:03:49 +02:00
Eric Botcazou 681014998b sem_ch6.adb (Possible_Freeze): If the type is an incomplete CW type...
2016-04-19  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch6.adb (Possible_Freeze): If the type is an incomplete
	CW type, then the subprogram must have a delayed freeze. This
	ensures that the backend can properly recover the full view when
	elaborating the access subprogram declaration.

From-SVN: r235195
2016-04-19 15:02:27 +02:00
Arnaud Charlet 16e764a7f4 [multiple changes]
2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Resolve_Attribute, case 'Access): Freeze
	overloadable entity if originally overloaded.

2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb, exp_ch3.adb, exp_ch7.adb, exp_ch9.adb, exp_code.adb,
	exp_fixd.adb, namet.adb, osint.adb, osint.ads, par-ch2.adb,
	sem_ch10.adb, sem_ch12.adb, sem_disp.adb, sem_elab.adb, sem_elim.adb
	sem_util.adb, styleg.adb, styleg.ads, stylesw.ads: Minor code
	clean up.

From-SVN: r235194
2016-04-19 14:59:27 +02:00
Arnaud Charlet 4754d4e86a sem_util.adb (Copy_Node_With_Replacement): use Set_Comes_From_Source instead of directly manipulating internals of the...
2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb (Copy_Node_With_Replacement):
	use Set_Comes_From_Source instead of directly manipulating
	internals of the node table.
	* sem_util.adb (Within_Scope): refactored to remove duplicated code.
	* sem_aux.adb (Get_Rep_Pragma,
	Subprogram_Body_Entity, Subprogram_Spec): declare variables that
	do not change as constants and initialize them in the declaration.
	(Get_Rep_Pragma, Subprogram_Body_Entity, Subprogram_Spec): declare
	variables that do not change as constants and initialize them
	in the declaration.

From-SVN: r235193
2016-04-19 14:24:29 +02:00
Arnaud Charlet 87fd683607 [multiple changes]
2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Entry_Call): If the entry has
	preconditions it is rewritten by means of a wrapper that
	incorporates the original call. Before rewriting generate a
	reference to the entry being called to prevent spurious warnings
	and provide correct cross-reference information.

2016-04-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_disp.adb (Check_Dispatching_Context): Code cleanup. Add
	local constant Scop. Ignore any internally generated loops when
	performing the check concerning an abstract subprogram call
	without a controlling argument.
	* sem_util.ads, sem_util.adb (Current_Scope_No_Loops): New routine.

From-SVN: r235192
2016-04-19 14:22:12 +02:00
Arnaud Charlet b35e5dcb14 [multiple changes]
2016-04-19  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Check_A_Call): There are cases where we have No
	(Ent) after the Alias loop, even when there was no previous error,
	so we can't assert that there was an error.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Access_Attribute, OK_Self_Reference):
	Reject use of type name as a prefix to 'access within an aggregate
	in a context that is not the declarative region of a type.

2016-04-19  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: Make "gnat ls -P" invoke gprls Make "gnat bind
	-P" invoke "gprbuild -b" Make "gnat link -P" invoke "gprbuild
	-l" Fail if the invocation is "gnat find -P" or "gnat xref -P"
	Remove anything related to project files
	* g-mbdira.adb: minor whitespace cleanup
	* g-spipat.adb: minor removal of extra spaces after closing paren

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Actuals):  If post-statements are present
	and the enclosing context is a function call or indexing, build
	an Expression_With_Actions for the call.

2016-04-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-writ.adb (Write_With_Lines): Code cleanup. Do not generate
	a with line for an ignored Ghost unit.
	* sem_ch7.adb (Analyze_Package_Declaration): Add local constant
	Par. A child package is Ghost when its parent is Ghost.
	* sem_prag.adb (Analyze_Pragma): Pragma Ghost can now apply to
	a subprogram declaration that acts as a compilation unit.

From-SVN: r235191
2016-04-19 14:18:59 +02:00
Michael Matz fe37c7afd1 tree.h (TYPE_ALIGN, DECL_ALIGN): Return shifted amount.
* tree.h (TYPE_ALIGN, DECL_ALIGN): Return shifted amount.
	(SET_TYPE_ALIGN, SET_DECL_ALIGN): New.
	* tree-core.h (tree_type_common.align): Use bit-field.
	(tree_type_common.spare): New.
	(tree_decl_common.off_align): Make smaller.
	(tree_decl_common.align): Use bit-field.

	* expr.c (expand_expr_addr_expr_1): Use SET_TYPE_ALIGN.
	* omp-low.c (install_var_field): Use SET_DECL_ALIGN.
	(scan_sharing_clauses): Ditto.
	(finish_taskreg_scan): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
	(omp_finish_file): Ditto.
	* stor-layout.c (do_type_align): Use SET_DECL_ALIGN.
	(layout_decl): Ditto.
	(relayout_decl): Ditto.
	(finalize_record_size): Use SET_TYPE_ALIGN.
	(finalize_type_size): Ditto.
	(finish_builtin_struct): Ditto.
	(layout_type): Ditto.
	(initialize_sizetypes): Ditto.
	* targhooks.c (std_gimplify_va_arg_expr): Use SET_TYPE_ALIGN.
	* tree-nested.c (insert_field_into_struct): Use SET_TYPE_ALIGN.
	(lookup_field_for_decl): Use SET_DECL_ALIGN.
	(get_chain_field): Ditto.
	(get_trampoline_type): Ditto.
	(get_nl_goto_field): Ditto.
	* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Use
	SET_DECL_ALIGN.
	(unpack_ts_type_common_value_fields): Use SET_TYPE_ALIGN.
	* gimple-expr.c (copy_var_decl): Use SET_DECL_ALIGN.
	* tree.c (make_node_stat): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
	(build_qualified_type): Use SET_TYPE_ALIGN.
	(build_aligned_type, build_range_type_1): Ditto.
	(build_atomic_base): Ditto.
	(build_common_tree_nodes): Ditto.
	* cfgexpand.c (align_local_variable): Use SET_DECL_ALIGN.
	(expand_one_stack_var_at): Ditto.
	* coverage.c (build_var): Use SET_DECL_ALIGN.
	* except.c (init_eh): Ditto.
	* function.c (assign_parm_setup_block): Ditto.
	* symtab.c (increase_alignment_1): Ditto.
	* tree-ssa-ccp.c (fold_builtin_alloca_with_align): Ditto.
	* tree-vect-stmts.c (ensure_base_align): Ditto.
	* varasm.c (align_variable): Ditto.
	(assemble_variable): Ditto.
	(build_constant_desc): Ditto.
	(output_constant_def_contents): Ditto.

	* config/arm/arm.c (arm_relayout_function): Use SET_DECL_ALIGN.
	* config/avr/avr.c (avr_adjust_type_node): Use SET_TYPE_ALIGN.
	* config/mips/mips.c (mips_std_gimplify_va_arg_expr): Ditto.
	* config/msp430/msp430.c (msp430_gimplify_va_arg_expr): Ditto.
	* config/spu/spu.c (spu_build_builtin_va_list): Use SET_DECL_ALIGN.

ada/
	* gcc-interface/decl.c (gnat_to_gnu_entity): Use SET_TYPE_ALIGN.
	(gnat_to_gnu_field): Ditto.
	(components_to_record): Ditto.
	(create_variant_part_from): Ditto.
	(copy_and_substitute_in_size): Ditto.
	(substitute_in_type): Ditto.
	* gcc-interface/utils.c (make_aligning_type): Use SET_TYPE_ALIGN.
	(make_packable_type): Ditto.
	(maybe_pad_type): Ditto.
	(finish_fat_pointer_type): Ditto.
	(finish_record_type): Ditto and use SET_DECL_ALIGN.
	(rest_of_record_type_compilation): Use SET_TYPE_ALIGN.
	(create_field_decl): Use SET_DECL_ALIGN.

c-family/
	* c-common.c (handle_aligned_attribute): Use SET_TYPE_ALIGN
	and SET_DECL_ALIGN.

c/
	* c-decl.c (merge_decls): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
	(grokdeclarator, parser_xref_tag, finish_enum): Use SET_TYPE_ALIGN.

cp/
	* class.c (build_vtable): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
	(layout_class_type): Ditto.
	(build_base_field): Use SET_DECL_ALIGN.
	(fixup_attribute_variants): Use SET_TYPE_ALIGN.
	* decl.c (duplicate_decls): Use SET_DECL_ALIGN.
	(record_unknown_type): Use SET_TYPE_ALIGN.
	(cxx_init_decl_processing): Ditto.
	(copy_type_enum): Ditto.
	(grokfndecl): Use SET_DECL_ALIGN.
	(copy_type_enum): Use SET_TYPE_ALIGN.
	* pt.c (instantiate_class_template_1): Use SET_TYPE_ALIGN.
	(tsubst): Ditto.
	* tree.c (cp_build_qualified_type_real): Use SET_TYPE_ALIGN.
	* lambda.c (maybe_add_lambda_conv_op): Use SET_DECL_ALIGN.
	* method.c (implicitly_declare_fn): Use SET_DECL_ALIGN.
	* rtti.c (emit_tinfo_decl): Ditto.

fortran/
	* trans-io.c (gfc_build_io_library_fndecls): Use SET_TYPE_ALIGN.
	* trans-common.c (build_common_decl): Use SET_DECL_ALIGN.
	* trans-types.c (gfc_add_field_to_struct): Use SET_DECL_ALIGN.

go/
	* go-gcc.cc (Gcc_backend::implicit_variable): Use SET_DECL_ALIGN.

java/
	* class.c (add_method_1): Use SET_DECL_ALIGN.
	(make_class_data): Ditto.
	(emit_register_classes_in_jcr_section): Ditto.
	* typeck.c (build_java_array_type): Ditto.

objc/
	* objc-act.c (objc_build_struct): Use SET_DECL_ALIGN.

libcc1/
	* plugin.cc (plugin_finish_record_or_union): Use SET_TYPE_ALIGN.

From-SVN: r235172
2016-04-18 20:36:27 +00:00
Arnaud Charlet be0355585f [multiple changes]
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* einfo.adb (Overridden_Operation): assert that
	function is called for valid arguments.
	* sem_aggr.adb, sem_ch3.adb, sem_ch5.adb, sem_type.adb,
	s-osinte-vxworks.ads, a-ngcefu.adb, sem_ch10.adb, einfo.ads,
	sem_prag.adb, sem_ch12.adb, sem.adb, i-cobol.ads, freeze.adb,
	sem_util.adb, a-chtgop.ads, s-rannum.adb, exp_ch6.adb, s-bignum.adb,
	s-osinte-freebsd.ads, par-ch5.adb, a-chtgbo.ads, a-cofove.adb:
	No space after closing parenthesis except where required for
	layout.
	* sem_res.adb: Minor reformatting.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb (Expand_N_Case_Expression): Convert into a case
	statement when relevant.

2016-04-18  Bob Duff  <duff@adacore.com>

	* a-cuprqu.adb (Enqueue): Properly handle the
	case where the new element has a unique priority.

2016-04-18  Tristan Gingold  <gingold@adacore.com>

	* adaint.h: Define stat structures and functions for iOS
	simulator.

From-SVN: r235146
2016-04-18 14:58:22 +02:00
Arnaud Charlet 9d4f983251 [multiple changes]
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* sem_res.adb (Resolve_Entry_Call): reset
	Is_Overloaded flag after resolving calls to overloaded protected
	operations.
	* exp_spark.adb (Expand_SPARK): call
	Qualify_Entity_Names for tasking nodes, i.e. protected types,
	task types and entries.
	* exp_ch4.adb (Expand_N_If_Expression): Refine previous change
	in case of an unconstrained type.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_eval.adb, sem_eval.ads (Check_Non_Static_Context): Add
	comment to document usage of subprogram in GNATprove.

From-SVN: r235145
2016-04-18 14:53:35 +02:00
Arnaud Charlet a65dcb0d6e [multiple changes]
2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Test_Case): Improve error
	message for wrong placement of aspect Test_Case.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.ads: Update the documentation of attribute Renamed_Object.
	* exp_spark.adb (Expand_Potential_Renaming): Reimplemented.

2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch4.adb (Optimize_Length_Comparison): Return immediately
	in the case of AAMP (same as for use of the -gnatd.P switch) to
	suppress this optimization, which avoids creating a dependence
	on the 64-bit arithmetic package.

From-SVN: r235144
2016-04-18 14:48:42 +02:00
Arnaud Charlet 7548f2cb23 [multiple changes]
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb: Update comment.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch6.adb (Expand_Call): Make sure instantiations are
	registered only once as pending here.

From-SVN: r235142
2016-04-18 14:47:02 +02:00
Arnaud Charlet f916243bde [multiple changes]
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb, gnat1drv.adb, opt.ads, sem_res.adb
	(Minimize_Expression_With_Actions): New flag.
	(Adjust_Global_Switches): Set Minimize_Expression_With_Actions
	when generating C.
	(Resolve_Short_Circuit): Redo previous change
	using Minimize_Expression_With_Actions.
	(Expand_N_If_Expression,
	Expand_Short_Circuit_Operator): Restore old code to avoid
	Expression_With_Actions when Minimize_Expression_With_Actions
	is set.

2016-04-18  Vincent Celier  <celier@adacore.com>

	* s-os_lib.adb (Non_Blocking_Spawn, version with Stdout_File and
	Stderr_File): Close local file descriptors when no longer needed.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): Remove SPARK
	mode check that the type of the cursor in an iteration over
	a formal container is not volatile. The proper check on the
	element type is done elsewhere.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Process_Formals): Do not set a delay freeze on
	a subprogram that returns a class-wide type, if the subprogram
	is a compilation unit, because otherwise gigi will treat the
	subprogram as external, leading to link errors.

From-SVN: r235141
2016-04-18 14:44:01 +02:00
Arnaud Charlet 22071092ed sem_res.adb (Resolve_Short_Circuit): Do not use expression-with-actions when generating C.
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* sem_res.adb (Resolve_Short_Circuit): Do not use
	expression-with-actions when generating C.

From-SVN: r235140
2016-04-18 14:41:08 +02:00
Arnaud Charlet ad81cb782b [multiple changes]
2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Apply_Compile_Time_Constraint_Error): Do not generate
	raise node in GNATprove mode.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-fileio.adb: Minor reformatting.
	* sem_prag.adb (Analyze_Input_Item): Add local
	variable Input_OK. Do not consider mappings of generic formal
	parameters to actuals.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Get_Cursor_Type): If iterator type is a derived
	type, the cursor is declared in the scope of the parent type.
	(Analyze_Parameter_Specification): A qualified expression with an
	iterator type indicates an iteration over a container (explicit
	or implicit).

From-SVN: r235139
2016-04-18 14:39:36 +02:00
Arnaud Charlet 520c0201eb [multiple changes]
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* osint-c.ads, osint-c.adb (Delete_C_File, Delete_H_File): New.
	* gnat1drv.adb (Gnat1drv): Delete old C files before regenerating them.
	* debug.adb: Reserve -gnatd.4 to force generation of C files.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_eval.adb (Eval_Arithmetic_Op): Do not issue error on static
	division by zero, instead possibly issue a warning.
	* sem_res.adb (Resolve_Arithmetic_Op): Do not issue error on
	static division by zero, instead add check flag on original
	expression.
	* sem_util.adb, sem_util.ads (Compile_Time_Constraint_Error):
	Only issue error when both SPARK_Mode is On and Warn is False.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): Force
	warning instead of error when SPARK_Mode is On, on index out of
	bounds, and set check flag for GNATprove.

From-SVN: r235138
2016-04-18 14:33:46 +02:00
Arnaud Charlet 274c2cda3e [multiple changes]
2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_In_Out_States.Check_Constituent_Usage):
	Update the comment on usage.  Reimplemented.
	(Check_Input_States.Check_Constituent_Usage): Update the comment
	on usage. A Proof_In constituent can now refine an Input state
	as long as there is at least one Input constituent present.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Inline_Pragma): Use the Sloc of the
	body id as the sloc of the entity in the generated subprogram
	declaration, to avoid spurious conformance errors when style
	checks are enabled.

From-SVN: r235137
2016-04-18 14:30:55 +02:00
Arnaud Charlet a6363ed30e [multiple changes]
2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component, Has_Dereference):
	Refine check on illegal calls to entities within a task body,
	when the entity is declared in an object of the same type. In
	a generic context there might be no explicit dereference but if
	the prefix includes an access type the construct is legal.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* rtsfind.ads, rtsfind.adb (RE_Id, RE_Unit_Table): add
	RE_Default_Priority.

2016-04-18  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Check_Arg_Is_Local_Name): Don't do the check
	if the pragma came from an aspect specification.

2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* gnat1drv.adb, contracts.adb: Minor reformatting and wording fixes.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): To suppress
	superfluous conformance check on an inlined body with a previous
	spec, use the fact that the generated declaration does not come
	from source. We must treat the entity as coming from source to
	enable some back-end inlining when pragma appears after the body.

From-SVN: r235136
2016-04-18 14:29:53 +02:00
Arnaud Charlet 4afcf3a5a0 [multiple changes]
2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* lib-xref-spark_specific.adb, par-ch2.adb, errout.ads,
	exp_intr.adb: Minor reformatting and typo corrections.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: Code cleanup.

2016-04-18  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb: Minor reformatting and error message tweaking
	(remove extraneous spaces).

2016-04-18  Johannes Kanig  <kanig@adacore.com>

	* gnat1drv.adb (Gnat1drv): Force loading of System unit for SPARK.

2016-04-18  Bob Duff  <duff@adacore.com>

	* s-fileio.adb (Fopen_Mode): If Mode = Out_File, and the file
	exists, and it's a fifo, we use "w" as the open string instead of
	"r+". This is necessary to make a write to the fifo block until
	a reader is ready.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb (Denote_Same_Function): Account
	for a special case where a primitive of a tagged type inherits
	a class-wide postcondition from a parent type.

From-SVN: r235135
2016-04-18 14:27:10 +02:00
Hristian Kirtchev 58ba241591 par-ch2.adb (P_Expression_Or_Reserved_Word): New routine.
2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* par-ch2.adb (P_Expression_Or_Reserved_Word): New routine.
	(P_Pragma): Signal Scan_Pragma_Argument_Association when the use
	of reserved words is OK.
	(Scan_Pragma_Argument_Association):
	Add new formal Reserved_Words_OK and update the comment on
	usage. Code cleanup. Parse an expression or a reserved word in
	identifier form for pragmas Restriction_Warnings and Restrictions
	No_Use_Of_Attribute.
	* restrict.adb (Check_Restriction_No_Use_Of_Attribute):
	Reimplemented.	(Check_Restriction_No_Use_Of_Pragma): Code cleanup.
	(Set_Restriction_No_Specification_Of_Aspect): Properly set the warning
	flag for an aspect.
	(Set_Restriction_No_Use_Of_Attribute): Properly set the warning
	flag for an attribute.	(Set_Restriction_No_Use_Of_Entity):
	Update the parameter profile.
	(Set_Restriction_No_Use_Of_Pragma): Properly set the warning flag for
	a pragma.
	* restrict.ads (Check_Restriction_No_Use_Of_Attribute): Update
	the comment on usage.
	(Set_Restriction_No_Use_Of_Entity): Update the parameter profile.
	* sem_attr.adb (Analyze_Attribute): Check restriction
	No_Use_Of_Attribute.
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Check
	restriction No_Use_Of_Attribute before any rewritings have
	taken place.
	* sem_prag.adb (Analyze_Pragma): Check restriction
	No_Use_Of_Pragma before any rewritings have taken place.

From-SVN: r235134
2016-04-18 14:18:16 +02:00
Bob Duff b269f47786 sem_ch6.adb (Is_Inline_Pragma): The pragma argument can be a selected component...
2016-04-18  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Is_Inline_Pragma): The pragma
	argument can be a selected component, which has no Chars field,
	so we need to deal with that case (use the Selector_Name).
	(Check_Inline_Pragma): We need to test Is_List_Member before
	calling In_Same_List, because in case of a library unit, they're
	not in lists, so In_Same_List fails an assertion.

2016-04-18  Bob Duff  <duff@adacore.com>

	* namet.ads, namet.adb: Add an Append that appends a
	Bounded_String onto a Bounded_String. Probably a little more
	efficient than "Append(X, +Y);". Also minor cleanup.
	(Append_Decoded, Append_Decoded_With_Brackets, Append_Unqualified,
	Append_Unqualified_Decoded): Make sure these work with non-empty
	buffers.
	* casing.ads, casing.adb (Set_Casing): Pass a Bounded_String
	parameter, defaulting to Global_Name_Buffer.
	* errout.ads, errout.adb (Adjust_Name_Case): Pass a
	Bounded_String parameter, no default.
	* exp_ch11.adb (Expand_N_Raise_Statement): Use local
	Bounded_String instead of Global_Name_Buffer.
	* exp_intr.ads, exp_intr.adb (Write_Entity_Name): Rename it
	to Append_Entity_Name, and pass a Bounded_String parameter,
	instead of using globals.
	(Add_Source_Info): Pass a Bounded_String parameter, instead of
	using globals.
	(Expand_Source_Info): Use local instead of globals.
	* stringt.ads, stringt.adb (Append): Add an Append procedure
	for appending a String_Id onto a Bounded_String.
	(String_To_Name_Buffer, Add_String_To_Name_Buffer): Rewrite in
	terms of Append.
	* sem_prag.adb (Set_Error_Msg_To_Profile_Name): Adjust for new
	Adjust_Name_Case parameter.
	* erroutc.adb, uname.adb: Don't pass D => Mixed_Case to
	Set_Casing; that's the default.
	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Pretend that calls to
	protected subprograms are entry calls; otherwise it is not possible to
	distinguish them from regular subprogram calls.

From-SVN: r235129
2016-04-18 12:53:32 +02:00
Arnaud Charlet 876f16240d [multiple changes]
2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch13.adb (Has_Good_Profile): Improvement
	of error message. Now indicates subtype_mark of formal parameter
	rather than the formal's name, plus minor rewording.

2016-04-18  Pascal Obry  <obry@adacore.com>

	* adaint.c, adaint.h, s-os_lib.ads: Add new routine Current_Process_Id.

From-SVN: r235128
2016-04-18 12:52:05 +02:00
Arnaud Charlet 77039fe27c [multiple changes]
2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* stringt.adb, exp_ch6.adb, sem_ch13.adb: Minor reformatting.

2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* par-ch4.adb, sem_prag.adb: Minor reformatting.

From-SVN: r235127
2016-04-18 12:50:37 +02:00
Bob Duff ea1027992d sinput.ads, sinput.adb (Build_Location_String): Take a parameter instead of using a global variable.
2016-04-18  Bob Duff  <duff@adacore.com>

	* sinput.ads, sinput.adb (Build_Location_String): Take a
	parameter instead of using a global variable.  The function
	version no longer destroys the Name_Buffer.
	* stringt.ads, stringt.adb (String_From_Name_Buffer): Take a
	parameter, which defaults to the Global_Name_Buffer, so some
	calls can avoid the global.
	* exp_ch11.adb, exp_intr.adb: Use new interfaces above
	to avoid using globals. All but one call to Build_Location_String
	avoids the global. Only one call to String_From_Name_Buffer
	avoids it.

From-SVN: r235126
2016-04-18 12:48:33 +02:00
Arnaud Charlet 87feba051d [multiple changes]
2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* namet.adb, namet.ads, exp_unst.adb: Minor reformatting.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_eval.adb (Choice_Matches): Check the expression
	against the predicate values when the choice denotes a
	subtype with a static predicate.
	(Eval_Membership_Op): Code cleanup. Remove the suspicious guard which
	tests for predicates.
	(Is_OK_Static_Subtype): A subtype with a dynamic predicate
	is not static.	(Is_Static_Subtype): A subtype with a dynamic
	predicate is not static.
	* sem_eval.ads (Is_OK_Static_Subtype): Update the comment on usage.
	(Is_Static_Subtype): Update the comment on usage.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Input_Item): Allow
	generic formals to appear as initialization items.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Stream_TSS_Definition,
	Has_Good_Profile): Additional error message to indicate that
	the second parameter of the subprogram must be a first subtype.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper, Is_Inline_Pragma):
	Use the pragma lookahead that determines whether a subprogram
	is to be inlined, when some level of backend optimization is
	required.
	* sem_ch12.ads, sem_ch12.adb (Add_Pending_Instantiation): Factorize
	code used to create an instance body when needed for inlining.
	* exp_ch6.adb (Expand_Call): When a call is to be inlined, and the
	call appears within an instantiation that is not a compilation
	unit, add a pending instantiation for the enclosing instance,
	so the backend can inline in turn the calls contained in the
	inlined body.

From-SVN: r235124
2016-04-18 12:46:40 +02:00
Arnaud Charlet 3e20cb680f [multiple changes]
2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Build_Pragma_Check_Equivalent): The mapping
	that relates operations of the parent type to the operations of
	the derived type has three distinct sources:
	a) explicit operations of the derived type carry an
	Overridden_Operation that designates the operation in the
	ancestor.
	b) Implicit operations that are inherited by the derived type
	carry an alias that may be an explicit subprogram (in which case
	it may have an Overridden_ Operation indicator) or may also be
	inherited and carry its own alias.
	c) If the parent type is an interface, the operation of the
	derived type does not override, but the interface operation
	indicates the operation that implements it.
	* sem_prag.adb: Minor reformatting.
	* sem_prag.adb (Check_External_Property): Update
	the comment on usage. Reimplement.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Assignment_Statement): In restricted
	profiles such as ZFP, ceiling priority is not available.

2016-04-18  Bob Duff  <duff@adacore.com>

	* namet-sp.ads: Minor typo fix, ironically in 'Spelling_Checker'.

2016-04-18  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Output_Calls): Use
	Get_Name_String, to clearly indicate that the global Name_Buffer
	is being used. The previous code used Is_Internal_Name, which
	returns a Boolean, but also has a side effect of setting the
	Name_Buffer. Then it called the other Is_Internal_Name, which uses
	the Name_Buffer for its input. And then it called Error_Msg_N,
	again using the Name_Buffer. We haven't eliminated the global
	usage here, but we've made it a bit clearer.
	This also allows us to have a side-effect-free version of
	Is_Internal_Name.
	* namet.ads, namet.adb: Provide a type Bounded_String, along with
	routines that can be used without using global variables. Provide
	Global_Name_Buffer so existing code can continue to use the
	global. Mark the routines that use globals as obsolete.  New code
	shouldn't call the obsolete ones, and we should clean up existing
	code from time to time.
	Name_Find_Str is renamed as Name_Find.
	* namet.h: Changed as necessary to interface to the new version
	of Namet.
	* bindgen.adb, exp_unst.adb: Name_Find_Str is renamed as
	Name_Find.

From-SVN: r235123
2016-04-18 12:44:09 +02:00
Arnaud Charlet 1f55088db5 [multiple changes]
2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_util.adb, sem_util.ads (Has_Full_Default_Initialization): used
	outside of GNATprove, hence it should not be removed.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Refinement_Clause):
	The refinement of an external abstract state can now mention
	non-external constituents.
	(Check_External_Property): Update all SPARK RM references.

2016-04-18  Bob Duff  <duff@adacore.com>

	* exp_intr.adb: Remove some duplicated code.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* a-nudira.adb, a-nudira.ads, a-nuflra.adb, a-nuflra.ads: Mark
	package spec and body out of SPARK.

2016-04-18  Johannes Kanig  <kanig@adacore.com>

	* spark_xrefs.ads: Minor comment update.

2016-04-18  Johannes Kanig  <kanig@adacore.com>

	* gnat1drv.adb (Gnat1drv): Force loading of System
	unit for SPARK.

2016-04-18  Bob Duff  <duff@adacore.com>

	* a-cuprqu.adb: Correction to previous change. If a new node
	is inserted at the front of the queue (because it is higher
	priority than the previous front node), we need to update
	Header.Next_Unequal -- not just in the case where the queue was
	previously empty.

From-SVN: r235122
2016-04-18 12:41:18 +02:00
Arnaud Charlet 142870f570 [multiple changes]
2016-04-18  Bob Duff  <duff@adacore.com>

	* a-cuprqu.ads: Change the representation of List_Type from a
	singly-linked list to a doubly-linked list. In addition, add a
	pointer Next_Unequal, which points past a possibly-long chain
	of equal-priority items. This increases efficiency, especially
	in the case of many equal-priority items.
	* a-cuprqu.adb (Dequeue, Enqueue): Rewrite algorithms to take
	advantage of new data structure.
	(Finalize): Rewrite in terms of Dequeue, for simplicity.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* contracts.adb (Analyze_Object_Contract,
	Analyze_Protected_Contract): Remove tests performed in GNATprove.
	* sem_util.adb, sem_util.ads (Has_Full_Default_Initialization):
	Remove query for tests performed in GNATprove.

From-SVN: r235121
2016-04-18 12:37:47 +02:00
Arnaud Charlet ec3c7387ac [multiple changes]
2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Record_Aggregate): If
	Warn_On_Redundant_Constructs is enabled, report a redundant box
	association that does not cover any components, as it done for
	redundant others associations in case statements.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Collect_Inherited_Class_Wide_Conditions):
	Analyze the generated Check pragma for an inherited condition so
	that it does not freeze the dispatching type of the primitive
	operation, because it is pre-analyzed at the point of the
	subprogram declaration (and not in the subprogram body, as is
	done during regular expansion).

2016-04-18  Vincent Celier  <celier@adacore.com>

	* ali.ads: Increase the range of all _Id types to 100 millions.

2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* sem_warn.adb (Check_References): Change warning to suggest
	using pragma Export rather than saying "volatile has no effect".

2016-04-18  Bob Duff  <duff@adacore.com>

	* g-souinf.ads (Compilation_ISO_Date): New function to return
	the current date in ISO form.
	* exp_intr.adb (Expand_Source_Info, Add_Source_Info): Expand
	a call to Compilation_ISO_Date into a string literal containing
	the current date in ISO form.
	* exp_intr.ads (Add_Source_Info): Improve documentation.
	* sem_intr.adb (Check_Intrinsic_Subprogram): Recognize
	Compilation_ISO_Date.
	* snames.ads-tmpl (Name_Compilation_ISO_Date): New Name_Id.

From-SVN: r235120
2016-04-18 12:35:36 +02:00
Arnaud Charlet 0f6251c7ac [multiple changes]
2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* layout.adb (Set_Elem_Alignment): Extend setting of alignment
	to subtypes that are not first subtypes.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.ads (Collect_Inherited_Class_Wide_Conditions):
	Simplify interface.
	* sem_prag.adb (Collect_Inherited_Class_Wide_Conditions): Insert
	generated pragmas after subprogram declaration, rather than in
	the corresponding subprogram body.
	* sem_ch6.adb (New_Overloaded_Entity): In GNATProve
	mode, if the operation is overridding, call
	Collect_Inherited_Class_Wide_Conditions to generate the
	corresponding pragmas immediately after the corresponding
	subprogram declaration.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* spark_xrefs.ads (Xref_Index, Scope_Index, File_Index): restrict
	type to natural numbers.
	(Stype): document code characters for concurrent entities.

2016-04-18  Olivier Hainque  <hainque@adacore.com>

	* targparm.ads: Update the Frontend_Exceptions default internal
	value.
	(Frontend_Exceptions_On_Target): Change default value to True.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Refine error
	detection when a selected component in the body of a synchronized
	type is a reference to an object of the same type declared
	elsewhere. The construct is legal if the prefix of the selected
	component includes an explicit dereference at any point.

From-SVN: r235118
2016-04-18 12:30:27 +02:00
Hristian Kirtchev 070d862dde sem_ch3.adb (Analyze_Object_Declaration): Do not consider internally generated expressions when...
2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): Do not consider
	internally generated expressions when trying to determine whether
	a formal parameter of a tagged type subject to Extensions_Visible
	False is used to initialize an object.
	* sem_ch4.adb (Analyze_Type_Conversion): Do not consider
	internally generated expressions when trying to determine whether
	a formal parameter of a tagged type subject to Extensions_Visible
	False is used in a type conversion.

From-SVN: r235117
2016-04-18 12:27:19 +02:00
Arnaud Charlet 933aa0ac81 [multiple changes]
2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Is_Protected_Operation_Call):
	Add guards to account for a non-decorated selected component.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Improve
	implementation of Body_Has_SPARK_Mode_On.
	* sem_prag.adb, sem_prag.ads (Get_SPARK_Mode_From_Annotation):
	New function replacing previous Get_SPARK_Mode_From_Pragma, that
	deals also with aspects.
	(Get_SPARK_Mode_Type): Make function internal again.
	* inline.adb, sem_ch7.adb, sem_util.adb: Use new
	Get_SPARK_Mode_From_Annotation.

From-SVN: r235116
2016-04-18 12:24:03 +02:00
Hristian Kirtchev 4179af278f contracts.adb (Analyze_Object_Contract): Update references to SPARK RM.
2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Analyze_Object_Contract): Update references to
	SPARK RM.
	* freeze.adb (Freeze_Entity): Update references to SPARK RM.
	* ghost.adb Add with and use clauses for Sem_Disp.
	(Check_Ghost_Derivation): Removed.
	(Check_Ghost_Overriding):
	Reimplemented.	(Check_Ghost_Policy): Update references to SPARK RM.
	(Check_Ghost_Primitive): New routine.
	(Check_Ghost_Refinement): New routine.	(Is_OK_Ghost_Context):
	Update references to SPARK RM.	(Is_OK_Pragma): Update references
	to SPARK RM. Predicates are now a valid context for references
	to Ghost entities.
	* ghost.ads (Check_Ghost_Derivation): Removed.
	(Check_Ghost_Overriding): Update the comment on usage.
	(Check_Ghost_Primitive): New routine.
	(Check_Ghost_Refinement): New routine.
	(Remove_Ignored_Ghost_Code): Update references to SPARK RM.
	* sem_ch3.adb (Process_Full_View): Remove the now obsolete check
	related to Ghost derivations
	* sem_ch6.adb (Check_Conformance): Remove now obsolete check
	related to the convention-like behavior of pragma Ghost.
	(Check_For_Primitive_Subprogram): Verify that the Ghost policy
	of a tagged type and its primitive agree.
	* sem_prag.adb (Analyze_Pragma): Update references to SPARK
	RM. Move the verification of pragma Assertion_Policy Ghost
	to the proper place. Remove the now obsolete check related
	to Ghost derivations.
	(Collect_Constituent): Add a call to Check_Ghost_Refinement.
	* sem_res.adb (Resolve_Actuals): Update references to SPARK RM.

From-SVN: r235115
2016-04-18 12:22:13 +02:00
Arnaud Charlet 0d6014fad7 [multiple changes]
2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* layout.adb: Fix more minor typos in comments.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-calend.ads, sem_prag.adb, sem_ch6.adb: Minor reformatting.

From-SVN: r235114
2016-04-18 12:19:26 +02:00
Arnaud Charlet 539ca5ec98 [multiple changes]
2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): In GNATprove
	mode, collect inherited class-wide conditions to generate the
	corresponding pragmas.
	* sem_prag.ads (Build_Pragma_Check_Equivalent): Moved from contracts
	* contracts.adb (Collect_Inherited_Class_Wide_Conditions): New
	procedure for overriding subprograms, used to generate the pragmas
	corresponding to an inherited class- wide pre- or postcondition.
	* sem_prag.adb (Build_Pragma_Check_Equivalent): moved here
	from contracts.adb (Replace_Condition_Entities): Subsidiary
	Build_Pragma_Check_Equivalent, to implement the proper semantics
	of inherited class-wide conditions, as given in AI12-0113.
	(Process_Class_Wide_Condition): Removed.
	(Collect_Inherited_Class_Wide_Conditions): Iterate over pragmas
	in contract of subprogram, to collect inherited class-wide
	conditions.
	(Build_Pragma_Check_Equivalent): Moved to sem_prag.adb

2016-04-18  Yannick Moy  <moy@adacore.com>

	* a-calend.adb (Ada.Calendar): Mark package body as SPARK_Mode Off.
	* a-calend.ads (Ada.Calendar): Mark package spec as
	SPARK_Mode and add synchronous external abstract state Clock_Time.

From-SVN: r235113
2016-04-18 12:17:17 +02:00
Arnaud Charlet fd22e260b5 [multiple changes]
2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Call): Prevent inlining of
	calls inside expression functions.  Factor previous code issuing
	errors to call Cannot_Inline instead, which does appropriate
	processing of message for GNATprove.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* einfo.ads, sem_ch3.adb, sem_ch8.adb, osint-l.adb, rtsfind.adb,
	osint-b.adb: Cleanups.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Only create
	body to inline in GNATprove mode when SPARK_Mode On applies to
	subprogram body.
	* sem_prag.adb, sem_prag.ads (Get_SPARK_Mode_Type): Make function
	public.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* layout.adb: Fix minor typo in comment.
	* inline.adb: Fix minor pasto.
	* sem_ch12.ads: Fix minor typos in comments.

From-SVN: r235111
2016-04-18 12:02:58 +02:00
Arnaud Charlet 0d66b5969f [multiple changes]
2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Check_Dispatching_Call): Major rewriting to
	handle some complex cases of tag indeterminate calls that are
	actuals in other dispatching calls that are themselves tag
	indeterminate.
	(Check_Dispatching_Context): Add parameter to support recursive
	check for an enclosing construct that may provide a tag for a
	tag-indeterminate call.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Depends_In_Decl_Part):
	Add global variables Task_Input_Seen and Task_Output_Seen.
	(Analyze_Global_Item): Detect an illegal use of the current
	instance of a single protected/task type in a global annotation.
	(Analyze_Input_Output): Inputs and output related to the current
	instance of a task unit are now tracked.
	(Check_Usage): Require
	the presence of the current instance of a task unit only when
	one input/output is available.	(Current_Task_Instance_Seen):
	New routine.
	(Is_CCT_Instance): New parameter profile. Update
	the comment on usage. The routine now properly recognizes several
	cases related to single protected/task types.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* freeze.adb (Freeze_Entity): Use New_Freeze_Node
	to create a brand new freeze node. This handles a case where an
	ignored Ghost context is freezing something which is not ignored
	Ghost and whose freeze node should not be removed from the tree.
	(New_Freeze_Node): New routine.

2016-04-18  Jerome Lambourg  <lambourg@adacore.com>

	* sigtramp.h (__gnat_set_is_vxsim) New function to
	tell sigtramp-vxworks to handle vxsim signal contexts.	*
	sigtramp-vxworks.c (__gnat_sigtramp) Take into account the
	differences in the sigcontext structure between the expected
	regular x86 or x86_64 ones and the ones received in case of
	exexution on the vxworks simulator.
	* init.c: also compute is_vxsim in case of x86_64-vx7 target. Provide
	this information to sigtramp-vxworks.c. Remove the old mechanism for
	vxsim.
	* init-vxsim.c, sigtramp-vxworks-vxsim.c: remove, now obsolete.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch3.adb (Inline_Init_Proc): New function returning
	whether the initialization procedure of a type should be
	inlined.  Return again True for controlled type themselves.
	(Build_Array_Init_Proc): Call it to set Set_Is_Inlined on Init_Proc.
	(Build_Record_Init_Proc): Likewise.

From-SVN: r235110
2016-04-18 11:57:49 +02:00
Arnaud Charlet a86c18d9fa gnatvsn.ads (Library_Version): Bump to 7.
* gnatvsn.ads (Library_Version): Bump to 7.

From-SVN: r235109
2016-04-18 11:54:17 +02:00
Ed Schonberg 88fa9a245c sem_ch6.adb (Analyze_Expression_Function): Set Inlined flag on the entity of a subprogram declaration that is completed by...
2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Set Inlined flag
	on the entity of a subprogram declaration that is completed by
	an expression function.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Current_Instance): A entity given by a subtype
	declaration can appear in an aspect specification for a dynamic
	predicate, and a pragma for aspect Predicate_Failure.
	* exp_util.adb (Replace_Subtype_References): Replace current
	occurrences of the subtype to which a dynamic predicate applies,
	byt the expression that triggers a predicate check. Needed to
	implement new aspect Predicate_Failure.

From-SVN: r235107
2016-04-18 11:52:22 +02:00
Arnaud Charlet 7b47778e62 [multiple changes]
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* a-intsig.ads, a-intsig.adb: Removed, no longer used.
	* Makefile.rtl: update accordingly.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_type.adb (Disambiguate): Call Covers only when necessary
	for standard operators.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* atree.ads (Num_Extension_Nodes): Add couple of figures
	to comment.
	* atree.adb: Add GNAT.Heap_Sort_G dependency.
	(Print_Statistics): New exported procedure to print statistics.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch3.adb (Build_Record_Init_Proc): Do not mark the procedure
	as to be inlined if the type needs finalization.

From-SVN: r235106
2016-04-18 11:48:31 +02:00
Vincent Celier 6e9ecd1ff0 * gcc-interface/decl.c: Rename Descendent -> Descendant
From-SVN: r235104
2016-04-18 11:28:16 +02:00
Jerome Lambourg 84538074d9 sigtramp-vxworks-target.inc: sigtramp-vxworks: force the stack alignment for x86_64.
2016-04-18  Jerome Lambourg  <lambourg@adacore.com>

	* sigtramp-vxworks-target.inc: sigtramp-vxworks: force the stack
	alignment for x86_64.
	* init.c: Better fix for guard page reset on x86_64-vx7.
	Do not try to retrieve the page that actually raised
	the signal as the probing mechanism used on x86_64 do not allow
	such retrieval. We thus just test if the guard page is active,
	and re-activate it if not.

From-SVN: r235102
2016-04-18 11:24:08 +02:00
Arnaud Charlet 230ad36918 [multiple changes]
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* a-sytaco.adb (Suspension_Object): Aspect Default_Initial_Condition
	added.

2016-04-18  Jerome Lambourg  <lambourg@adacore.com>

	* affinity.c: Use the proper type for task id.
	* init.c (__gnat_inum_to_ivec): ivec is a pointer.

From-SVN: r235101
2016-04-18 11:22:50 +02:00
Arnaud Charlet d9d25d048f [multiple changes]
2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Process_Convention): Relax rule on exporting
	Intrinsic types if Relaxed_RM_Semantics is True.

2016-04-18  Vincent Celier  <celier@adacore.com>

	* sem_ch3.adb, lib.ads, sinfo.ads, sem_ch10.adb, einfo.adb, einfo.ads,
	checks.ads, sem_ch12.adb, sem.adb, sem_util.adb, sem_util.ads,
	sem_res.adb, sem_attr.adb, par.adb, exp_ch4.adb, errout.ads,
	sem_ch4.adb, atree.adb, atree.ads, sem_warn.adb, treepr.adb,
	exp_ch3.ads, exp_unst.adb: Change "descendent" to
	"descendant" in comments, error messages and identifiers.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_type.adb (Operator_Matches_Spec): Call First_Formal on
	New_S only once at the beginning of the function.

From-SVN: r235100
2016-04-18 11:20:56 +02:00
Eric Botcazou 7d9979e629 decl.c (components_to_record): Restrict the previous change to fields with variable size.
* gcc-interface/decl.c (components_to_record): Restrict the previous
	change to fields with variable size.

From-SVN: r234696
2016-04-02 08:56:19 +00:00
Eric Botcazou 81ec91f3ef Fix typo
From-SVN: r234496
2016-03-27 10:00:54 +00:00
Eric Botcazou a1799e5ef7 decl.c (components_to_record): Add special case for single field with representation clause at offset 0.
* gcc-interface/decl.c (components_to_record): Add special case for     
	single field with representation clause at offset 0.

From-SVN: r234494
2016-03-27 09:57:36 +00:00
Svante Signell b462f86075 Makefile.in: Add support for x86 GNU/Hurd.
* gcc-interface/Makefile.in: Add support for x86 GNU/Hurd.
	* s-osinte-gnu.ads: New file.

From-SVN: r234252
2016-03-16 10:04:01 +00:00
Eric Botcazou 3488bd6bb3 vxworks.h (STACK_CHECK_STATIC_BUILTIN): Define.
* config/arm/vxworks.h (STACK_CHECK_STATIC_BUILTIN): Define.
	(STACK_CHECK_PROTECT): Likewise.
	* config/i386/vxworks.h (STACK_CHECK_STATIC_BUILTIN): Likewise
	(STACK_CHECK_PROTECT): Likewise.
	* config/rs6000/vxworks.h (STACK_CHECK_STATIC_BUILTIN): Likewise
	(STACK_CHECK_PROTECT): Likewise.
	* config/rs6000/vxworksae.h (STACK_CHECK_PROTECT): Likewise.
	* config/sparc/vxworks.h (STACK_CHECK_STATIC_BUILTIN): Likewise.
	(STACK_CHECK_PROTECT): Likewise.
ada/
	* system-vxworks-m68k.ads (Stack_Check_Probes): Set to True.
	(Stack_Check_Limits): Set to False.
	* system-vxworks-mips.ads (Stack_Check_Probes): Set to True.
	(Stack_Check_Limits): Set to False.
	* system-vxworks-ppc.ads (Stack_Check_Probes): Set to True.
	(Stack_Check_Limits): Set to False.
	* system-vxworks-sparcv9.ads (Stack_Check_Probes): Set to True.
	(Stack_Check_Limits): Set to False.
	* system-vxworks-x86.ads (Stack_Check_Probes): Set to True.
	(Stack_Check_Limits): Set to False.

From-SVN: r234171
2016-03-13 20:35:48 +00:00
Eric Botcazou 4c33516338 trans.c (statement_node_p): New predicate.
* gcc-interface/trans.c (statement_node_p): New predicate.
	(gnat_to_gnu): Invoke it to detect statement nodes.  In ASIS mode, do
	not return dummy results for expressions attached to packed array
	implementation types.

From-SVN: r234020
2016-03-07 08:46:52 +00:00
Eric Botcazou 1878be3223 decl.c (gnat_to_gnu_entity): Always mark the expression of a renaming manually in case #3.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Always mark
	the expression of a renaming manually in case #3.

From-SVN: r234018
2016-03-07 08:08:27 +00:00
Dominik Vogt 22e3fa19cb S/390: Ada: Enable Stack_Check_Probes.
gcc/ada/ChangeLog

	* system-linux-s390.adsx: Enable Stack_Check_Probes.
	* system-linux-s390.ads: Likewise.

From-SVN: r233893
2016-03-02 07:50:29 +00:00
Martin Liska 4232ebbbc9 Replace ENABLE_CHECKING macro with flag_checking in GNAT
* gcc-interface/utils.c (set_reverse_storage_order_on_pad_type):
	Replace ENABLE_CHECKING macro with flag_checking.

From-SVN: r233815
2016-02-29 15:30:08 +00:00
Eric Botcazou 8ea456b94a decl.c (gnat_to_gnu_entity): Retrofit handling of unconstrained array types as designated types into common...
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Type>: Retrofit
	handling of unconstrained array types as designated types into common
	processing.  Also handle array types as incomplete designated types.

From-SVN: r233807
2016-02-29 09:30:09 +00:00
Eric Botcazou 68ec561342 decl.c (gnat_to_gnu_entity): In ASIS mode, fully lay out the minimal record type.
* gcc-interface/decl.c (gnat_to_gnu_entity) <Concurrent types>: In
	ASIS mode, fully lay out the minimal record type.

From-SVN: r233806
2016-02-29 09:21:12 +00:00
Eric Botcazou 5d2a63dc7b trans.c (finalize_nrv_r): Remove obsolete code.
* gcc-interface/trans.c (finalize_nrv_r): Remove obsolete code.
	(build_return_expr): Likewise.
	(Call_to_gnu): If this is a function call and there is no target,
	create a temporary for the return value for all aggregate types,
	but never create it for a return statement.  Push a binding level
	around the call in more cases.  Remove obsolete code.

From-SVN: r233805
2016-02-29 09:16:57 +00:00
Eric Botcazou 93e708f9c3 ada-tree.h (DECL_RETURN_VALUE_P): New macro.
* gcc-interface/ada-tree.h (DECL_RETURN_VALUE_P): New macro.
	* gcc-interface/gigi.h (gigi): Remove useless attribute.
	(gnat_gimplify_expr): Likewise.
	(gnat_to_gnu_external): Declare.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: Factor out
	code dealing with the expression of external constants into...
	Invoke gnat_to_gnu_external instead.
	<E_Variable>: Invoke gnat_to_gnu_external to translate renamed objects
	when not for a definition.  Deal with COMPOUND_EXPR and variables with
	DECL_RETURN_VALUE_P set for renamings and with the case of a dangling
	'reference to a function call in a renaming.  Remove obsolete test and
	adjust associated comment.
	* gcc-interface/trans.c (Call_to_gnu): Set DECL_RETURN_VALUE_P on the
	temporaries created to hold the return value, if any.
	(gnat_to_gnu_external): ...this.  New function.
	* gcc-interface/utils.c (create_var_decl): Detect a constant created
	to hold 'reference to function call.
	* gcc-interface/utils2.c (build_unary_op) <ADDR_EXPR>: Add folding
	for COMPOUND_EXPR in the DECL_RETURN_VALUE_P case.

From-SVN: r233804
2016-02-29 09:02:46 +00:00
Eric Botcazou e2f0522e06 exp_ch4.adb (Expand_N_Indexed_Component): Active synchronization if the prefix denotes an entity which Has_Atomic_Components.
* exp_ch4.adb (Expand_N_Indexed_Component): Active synchronization if
	the prefix denotes an entity which Has_Atomic_Components.
	* gcc-interface/trans.c (node_is_atomic): Return true if the prefix
	denotes an entity which Has_Atomic_Components.

From-SVN: r233485
2016-02-17 09:21:58 +00:00
Eric Botcazou bf17fe3f73 utils2.c (gnat_protect_expr): Make a SAVE_EXPR only for fat pointer or scalar types.
* gcc-interface/utils2.c (gnat_protect_expr): Make a SAVE_EXPR only
	for fat pointer or scalar types.

From-SVN: r233484
2016-02-17 09:08:09 +00:00
Eric Botcazou 7005800cd1 gigi.h (maybe_debug_type): New inline function.
* gcc-interface/gigi.h (maybe_debug_type): New inline function.
	* gcc-interface/misc.c (gnat_get_array_descr_info): Use it.
	Call maybe_character_value on the array bounds.  Get to the base type
	of the index type and call maybe_debug_type on it.
	* gcc-interface/utils.c (finish_character_type): Add special treatment

From-SVN: r233469
2016-02-16 18:01:04 +00:00
Eric Botcazou 8c7eac6260 misc.c (gnat_enum_underlying_base_type): New function.
* gcc-interface/misc.c (gnat_enum_underlying_base_type): New function.
	(LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE): Define to above.

From-SVN: r233467
2016-02-16 17:51:56 +00:00
Jakub Jelinek 9c58255170 cgraph.c: Spelling fixes - behaviour -> behavior and neighbour -> neighbor.
* cgraph.c: Spelling fixes - behaviour -> behavior and
	neighbour -> neighbor.
	* target.def: Likewise.
	* sel-sched.c: Likewise.
	* config/mips/mips.c: Likewise.
	* config/arc/arc.md: Likewise.
	* config/arm/cortex-a57.md: Likewise.
	* config/arm/arm.c: Likewise.
	* config/arm/neon.md: Likewise.
	* config/arm/arm-c.c: Likewise.
	* config/vms/vms-c.c: Likewise.
	* config/s390/s390.c: Likewise.
	* config/i386/znver1.md: Likewise.
	* config/i386/i386.c: Likewise.
	* config/ia64/hpux-unix2003.h: Likewise.
	* config/msp430/msp430.md: Likewise.
	* config/rx/rx.c: Likewise.
	* config/rx/rx.md: Likewise.
	* config/aarch64/aarch64-simd.md: Likewise.
	* config/aarch64/aarch64.c: Likewise.
	* config/nvptx/nvptx.c: Likewise.
	* config/bfin/bfin.c: Likewise.
	* config/cris/cris.opt: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* target.h: Likewise.
	* spellcheck.c: Likewise.
	* ira-build.c: Likewise.
	* tree-inline.c: Likewise.
	* builtins.c: Likewise.
	* lra-constraints.c: Likewise.
	* explow.c: Likewise.
	* hwint.h: Likewise.
	* targhooks.c: Likewise.
	* tree-vect-data-refs.c: Likewise.
	* expr.c: Likewise.
	* doc/tm.texi: Likewise.
	* doc/extend.texi: Likewise.
	* doc/install.texi: Likewise.
	* doc/md.texi: Likewise.
	* tree-ssa-tail-merge.c: Likewise.
	* sched-int.h: Likewise.
	* match.pd: Likewise.
	* sched-ebb.c: Likewise.
	* target.def (omit_struct_return_reg): Likewise.
	* gimple-ssa-isolate-paths.c: Likewise.
	(find_implicit_erroneous_behaviour): Renamed to...
	(find_implicit_erroneous_behavior): ... this.
	(find_explicit_erroneous_behaviour): Renamed to...
	(find_explicit_erroneous_behavior): ... this.
	(gimple_ssa_isolate_erroneous_paths): Adjust caller.
gcc/cp/
	* error.c: Spelling fixes - behaviour -> behavior and
	neighbour -> neighbor.
	* decl.c: Likewise.
	* typeck.c (cp_build_binary_op): Fix up behavior spelling in
	diagnostics.
	* init.c (build_delete): Likewise.
gcc/objc/
	* objc-act.c: Spelling fixes - behaviour -> behavior and
	neighbour -> neighbor.
	* objc-map.h: Likewise.
gcc/go/
	* gofrontend/lex.cc: Spelling fixes - behaviour -> behavior and
	neighbour -> neighbor.
	* gccgo.texi: Likewise.
gcc/ada/
	* prj-tree.ads: Spelling fixes - behaviour -> behavior and
	neighbour -> neighbor.
	* prep.adb: Likewise.
	* prj.ads: Likewise.
	* prepcomp.adb: Likewise.
	* g-socket.ads: Likewise.
	* s-imgrea.adb: Likewise.
	* a-calend.adb: Likewise.
	* exp_disp.adb: Likewise.
	* doc/gnat_ugn/gnat_utility_programs.rst: Likewise.
	* g-socket.adb: Likewise.
	* sem_ch12.adb: Likewise.
	* terminals.c: Likewise.
gcc/testsuite/
	* objc.dg/gnu-api-2-method.m: Spelling fixes - behaviour -> behavior
	and neighbour -> neighbor.
	* objc.dg/attributes/method-nonnull-1.m: Likewise.
	* objc.dg/gnu-api-2-class-meta.m: Likewise.
	* c-c++-common/Wvarargs.c: Likewise.
	* c-c++-common/goacc/host_data-5.c: Likewise.
	* obj-c++.dg/gnu-api-2-class-meta.mm: Likewise.
	* obj-c++.dg/attributes/method-nonnull-1.mm: Likewise.
	* obj-c++.dg/gnu-api-2-method.mm: Likewise.
	* gcc.target/aarch64/pr60697.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vldX_lane.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vqshl.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vshuffle.inc: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vrshl.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vldX_dup.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vstX_lane.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vqrshl.c: Likewise.
	* gcc.target/aarch64/advsimd-intrinsics/vldX.c: Likewise.
	* gcc.target/aarch64/aapcs64/ice_2.c: Likewise.
	* gcc.target/aarch64/aapcs64/test_23.c: Likewise.
	* gcc.target/aarch64/vrnd_f64_1.c: Likewise.
	* g++.dg/warn/Wconversion-real-integer-3.C: Likewise.
	* g++.dg/lookup/koenig5.C: Likewise.
	* g++.dg/ext/no-asm-2.C: Likewise.
	* gfortran.dg/bounds_check_array_ctor_3.f90: Likewise.
	* gfortran.dg/bounds_check_array_ctor_7.f90: Likewise.
	* gfortran.dg/used_types_16.f90: Likewise.
	* gfortran.dg/assumed_rank_bounds_1.f90: Likewise.
	* gfortran.dg/bounds_check_array_ctor_1.f90: Likewise.
	* gfortran.dg/assumed_rank_bounds_2.f90: Likewise.
	* gfortran.dg/bounds_check_array_ctor_4.f90: Likewise.
	* gfortran.dg/abstract_type_6.f03: Likewise.
	* gfortran.dg/bounds_check_array_ctor_5.f90: Likewise.
	* gfortran.dg/used_types_15.f90: Likewise.
	* gfortran.dg/bounds_check_array_ctor_8.f90: Likewise.
	* gfortran.dg/exit_3.f08: Likewise.
	* gfortran.dg/open_status_2.f90: Likewise.
	* gfortran.dg/derived_pointer_recursion_2.f90: Likewise.
	* gfortran.dg/intrinsic_std_1.f90: Likewise.
	* gfortran.dg/associate_1.f03: Likewise.
	* gfortran.dg/bounds_check_array_ctor_2.f90: Likewise.
	* gfortran.dg/intrinsic_std_6.f90: Likewise.
	* gfortran.dg/bounds_check_array_ctor_6.f90: Likewise.
	* gcc.dg/builtin-object-size-1.c: Likewise.
	* gcc.dg/noreturn-6.c: Likewise.
	* gcc.dg/builtin-stringop-chk-1.c: Likewise.
	* gcc.dg/globalalias.c: Likewise.
	* gcc.dg/builtins-config.h: Likewise.
	* gcc.dg/pr30457.c: Likewise.
	* gcc.c-torture/compile/volatile-1.c: Likewise.
	* gcc.c-torture/execute/20101011-1.c: Likewise.
	* c-c++-common/Waddress-1.c: Likewise.

From-SVN: r233358
2016-02-12 00:53:54 +01:00
Bernd Schmidt 2746ac67d6 Add missing entry
From-SVN: r233238
2016-02-09 07:12:22 +00:00
Eric Botcazou ffe9a0a76e utils.c (create_var_decl): Set again DECL_COMMON and DECL_IGNORED_P last.
* gcc-interface/utils.c (create_var_decl): Set again DECL_COMMON and
	DECL_IGNORED_P last.

From-SVN: r233210
2016-02-08 09:40:46 +00:00
Eric Botcazou e0ef6912de gigi.h (enum attr_type): Rename into...
* gcc-interface/gigi.h (enum attr_type): Rename into...
	(enum attrib_type): ...this.
	(struct attrib): Adjust.
	* gcc-interface/decl.c (prepend_one_attribute): Likewise.

From-SVN: r232923
2016-01-28 11:59:14 +00:00
Eric Botcazou 825da0d20f exp_ch2.adb (Expand_Current_Value): Make an appropriate character literal if the entity is of a character type.
* exp_ch2.adb (Expand_Current_Value): Make an appropriate character
	literal if the entity is of a character type.
	* gcc-interface/lang.opt (fsigned-char): New option.
	* gcc-interface/misc.c (gnat_handle_option): Accept it.
	(gnat_init): Adjust comment.
	* gcc-interface/gigi.h (finish_character_type): New prototype.
	(maybe_character_type): New inline function.
	(maybe_character_value): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Enumeration_Type>: For
	a character of CHAR_TYPE_SIZE, make a signed type if flag_signed_char.
	Set TYPE_ARTIFICIAL early and call finish_character_type on the type.
	<E_Enumeration_Subtype>: For a subtype of character with RM_Size and
	Esize equal to CHAR_TYPE_SIZE, make a signed type if flag_signed_char.
	Copy TYPE_STRING_FLAG from type to subtype.
	<E_Array_Type>: Deal with character index types.
	<E_Array_Subtype>: Likewise.
	* gcc-interface/trans.c (gigi): Replace unsigned_char_type_node with
	char_type_node throughout.
	(build_raise_check): Likewise.
	(get_type_length): Deal with character types.
	(Attribute_to_gnu) <Attr_Pos>: Likewise.  Remove obsolete range check
	code.  Minor tweak.
	<Attr_Pred>: Likewise.
	(Loop_Statement_to_gnu): Likewise.
	(Raise_Error_to_gnu): Likewise.
	<N_Indexed_Component>: Deal with character index types.  Remove
	obsolete code.
	<N_Slice>: Likewise.
	<N_Type_Conversion>: Deal with character types.  Minor tweak.
	<N_Unchecked_Type_Conversion>: Likewise.
	<N_In>: Likewise.
	<N_Op_Eq>: Likewise.
	(emit_index_check): Delete.
	* gcc-interface/utils.c (finish_character_type): New function.
	(gnat_signed_or_unsigned_type_for): Deal with built-in character types.
	* gcc-interface/utils2.c (expand_sloc): Replace unsigned_char_type_node
	with char_type_node.
	(build_call_raise): Likewise.
	(build_call_raise_column): Likewise.
	(build_call_raise_range): Likewise.

From-SVN: r232604
2016-01-20 09:01:34 +00:00
Eric Botcazou 9a1bdc314b gigi.h (build_call_raise_column): Adjust prototype.
* gcc-interface/gigi.h (build_call_raise_column): Adjust prototype.
	(build_call_raise_range): Likewise.
	(gnat_unsigned_type): Delete.
	(gnat_signed_type): Likewise.
	(gnat_signed_or_unsigned_type_for): New prototype.
	(gnat_unsigned_type_for): New inline function.
	(gnat_signed_type_for): Likewise.
	* gcc-interface/cuintp.c (build_cst_from_int): Call build_int_cst.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Likewise.
	(gnat_to_gnu_entity) <E_Array_Type>: Always translate the index types
	and compute their base type from that.
	<E_Array_Subtype>: Remove duplicate declaration.
	* gcc-interface/misc.c (get_array_bit_stride): Call build_int_cst.
	* gcc-interface/trans.c (get_type_length): Likewise.
	(Attribute_to_gnu): Likewise.
	(Loop_Statement_to_gnu): Likewise.
	(Call_to_gnu): Likewise.
	(gnat_to_gnu): Call build_real, build_int_cst, gnat_unsigned_type_for
	and gnat_signed_type_for.  Minor tweaks.
	(build_binary_op_trapv): Likewise.
	(emit_check): Likewise.
	(convert_with_check): Likewise.
	(Raise_Error_to_gnu): Adjust calls to the build_call_raise family of
	functions.  Minor tweaks.
	(Case_Statement_to_gnu): Remove dead code.
	(gnat_to_gnu): Call gnat_unsigned_type_for and gnat_signed_type_for.
	(init_code_table): Minor reordering.
	* gcc-interface/utils.c (gnat_unsigned_type): Delete.
	(gnat_signed_type): Likewise.
	(gnat_signed_or_unsigned_type_for): New function.
	(unchecked_convert): Use directly the size in the test for precision
	vs size adjustments.
	(install_builtin_elementary_types): Call gnat_signed_type_for.
	* gcc-interface/utils2.c (nonbinary_modular_operation): Call
	build_int_cst.
	(build_goto_raise): New function taken from...
	(build_call_raise): ...here.  Call it.
	(build_call_raise_column): Add KIND parameter and call it.
	(build_call_raise_range): Likewise.

From-SVN: r232503
2016-01-18 11:29:00 +00:00
Eric Botcazou 7c775aca29 ada-tree.h (TYPE_IMPLEMENTS_PACKED_ARRAY_P): Rename to
* gcc-interface/ada-tree.h (TYPE_IMPLEMENTS_PACKED_ARRAY_P): Rename to
	(TYPE_IMPL_PACKED_ARRAY_P): ...this.
	(TYPE_CAN_HAVE_DEBUG_TYPE_P): Do not test TYPE_DEBUG_TYPE.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Simplify NULL_TREE tests
	and tweak gnat_encodings tests throughout.
	(initial_value_needs_conversion): Likewise.
	(intrin_arglists_compatible_p): Likewise.
	* gcc-interface/misc.c (gnat_print_type): Likewise.
	(gnat_get_debug_type): Likewise.
	(gnat_get_fixed_point_type_info): Likewise.
	(gnat_get_array_descr_info): Likewise.
	(get_array_bit_stride): Likewise.
	(gnat_get_type_bias): Fix formatting.
	(enumerate_modes): Likewise.
	* gcc-interface/trans.c (gnat_to_gnu): Likewise.
	(add_decl_expr): Simplify NULL_TREE test.
	(end_stmt_group): Likewise.
	(build_binary_op_trapv): Fix formatting.
	(get_exception_label): Use switch statement.
	(init_code_table): Move around.
	* gcc-interface/utils.c (global_bindings_p): Simplify NULL_TREE test.
	(gnat_poplevel): Likewise.
	(gnat_set_type_context): Likewise.
	(defer_or_set_type_context): Fix formatting.
	(gnat_pushdecl): Simplify NULL_TREE test.
	(maybe_pad_type): Likewise.
	(add_parallel_type): Likewise.
	(create_range_type): Likewise.
	(process_deferred_decl_context): Likewise.
	(convert): Likewise.
	(def_builtin_1): Likewise.
	* gcc-interface/utils2.c (find_common_type): Likewise.
	(build_binary_op): Likewise.
	(gnat_rewrite_reference): Likewise.
	(get_inner_constant_reference): Likewise.

From-SVN: r232501
2016-01-18 11:10:42 +00:00
Eric Botcazou ae5a77fa96 re PR ada/69219 (error on nested subprograms with Inline_Always and Intrinsic)
PR ada/69219
	* gcc-interface/trans.c (check_inlining_for_nested_subprog): Consider
	the parent function instead of the current function in order to issue
	the warning or the error.  Add guard for ignored functions.

From-SVN: r232498
2016-01-18 10:27:10 +00:00
Jakub Jelinek e9dcf0a447 * adaint.c (__gnat_killprocesstree): Avoid -Wparentheses warning.
From-SVN: r232485
2016-01-17 19:07:39 +01:00
Jakub Jelinek 4c0f272cfc adaint.c (__gnat_locate_exec_on_path): Use const char * instead of char * for path_val to avoid warnings.
* adaint.c (__gnat_locate_exec_on_path): Use const char * instead
	of char * for path_val to avoid warnings.

From-SVN: r232448
2016-01-15 21:15:44 +01:00
Pierre-Marie de Rodat 396a2ee2ec Ada: add XVE/XVU parallel types to lexical scopes
This change adds TYPE_DECL nodes for XVE/XVU parallel types to lexical
scopes so that these types are properly scoped in the debug information.

gcc/ada/ChangeLog:

	* gcc-interface/utils.c: Bump copyright year.
	(rest_of_record_type_compilation): Add XVE/XVU parallel types to
	the current lexical scope.

From-SVN: r232098
2016-01-06 09:18:26 +00:00
Jakub Jelinek 21fa2a29dc gcc.c (process_command): Update copyright notice dates.
gcc/
	* gcc.c (process_command): Update copyright notice dates.
	* gcov-dump.c (print_version): Ditto.
	* gcov.c (print_version): Ditto.
	* gcov-tool.c (print_version): Ditto.
	* gengtype.c (create_file): Ditto.
	* doc/cpp.texi: Bump @copying's copyright year.
	* doc/cppinternals.texi: Ditto.
	* doc/gcc.texi: Ditto.
	* doc/gccint.texi: Ditto.
	* doc/gcov.texi: Ditto.
	* doc/install.texi: Ditto.
	* doc/invoke.texi: Ditto.
gcc/ada/
	* gnat_ugn.texi: Bump @copying's copyright year.
	* gnat_rm.texi: Likewise.
gcc/fortran/
	* gfortranspec.c (lang_specific_driver): Update copyright notice
	dates.
	* gfc-internals.texi: Bump @copying's copyright year.
	* gfortran.texi: Ditto.
	* intrinsic.texi: Ditto.
	* invoke.texi: Ditto.
gcc/go/
	* gccgo.texi: Bump @copyrights-go year.
gcc/java/
	* jcf-dump.c (version): Update copyright notice dates.
libgomp/
	* libgomp.texi: Bump @copying's copyright year.
libitm/
	* libitm.texi: Bump @copying's copyright year.
libjava/
	* classpath/gnu/java/rmi/registry/RegistryImpl.java (version): Update
	copyright notice dates.
	* classpath/tools/gnu/classpath/tools/orbd/Main.java (run): Ditto.
	* gnu/gcj/convert/Convert.java (version): Update copyright notice
	dates.
	* gnu/gcj/tools/gcj_dbtool/Main.java (main): Ditto.
libquadmath/
	* libquadmath.texi: Bump @copying's copyright year.

From-SVN: r232053
2016-01-04 14:03:35 +01:00
Eric Botcazou 783bfcce44 * gnatvsn.ads: Bump copyright year.
From-SVN: r232039
2016-01-03 00:41:43 +00:00
Eric Botcazou 60424a41dd utils2.c (gnat_rewrite_reference): New case identical to FLOAT_EXPR.
* gcc-interface/utils2.c (gnat_rewrite_reference) <REALPART_EXPR>: New
	case identical to FLOAT_EXPR.
	<IMAGPART_EXPR>: Likewise.

From-SVN: r231861
2015-12-20 10:38:09 +00:00
Eric Botcazou c00d5b12b0 decl.c (gnat_to_gnu_entity): During layout in type_annotate_only mode...
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: During
	layout in type_annotate_only mode, skip discriminants of derived
	tagged types renaming those of the parent type.
	In type_annotate_only mode, if the type is tagged, do not override a
	size clause but take into account the alignment of the tag.
	(annotate_rep): In type_annotate_only mode, deal with  discriminants
	of derived tagged types renaming those of the parent type.

From-SVN: r231860
2015-12-20 10:30:27 +00:00
Eric Botcazou 80746f5d88 utils.c (maybe_pad_type): In type_annotate_only mode...
* gcc-interface/utils.c (maybe_pad_type): In type_annotate_only mode,
	retrieve the component type if this is an array and do not issue the
	warning for concurrent types.

From-SVN: r231859
2015-12-20 10:27:37 +00:00
Eric Botcazou feac22a782 * gcc-interface/ada-tree.h (TYPE_DEBUG_TYPE): Remove duplicate.
From-SVN: r231823
2015-12-18 18:04:03 +00:00
Pierre-Marie de Rodat 2d5958875d DWARF: describe properly Ada packed arrays
gcc/ada/ChangeLog:

	* gcc-interface/ada-tree.h
	(TYPE_IMPLEMENTS_PACKED_ARRAY_P, TYPE_CAN_HAVE_DEBUG_TYPE_P,
	TYPE_ORIGINAL_PACKED_ARRAY, SET_TYPE_ORIGINAL_PACKED_ARRAY): New
	macros.
	* gcc-interface/decl.c (add_parallel_type_for_packed_array):
	Rename to associate_original_type_to_packed_array.  When
	-fgnat-encodings=minimal, set original packed array type as so
	instead of as a parallel type to the implementation type.  In
	this case, also rename the implementation type to the name of
	the original array type.
	(gnat_to_gnu_entity): Update invocations to
	add_parallel_type_for_packed_array.  Tag ARRAY_TYPE nodes for
	packed arrays with the TYPE_PACKED flag.
	When -fgnat-encodings=minimal:
	  - strip ___XP suffixes in packed arrays' names;
	  - set the debug type for padding records around packed arrays
	    to the packed array;
	  - do not attach ___XUP types as parallel types of constrained
	    array types.
	* gcc-interface/misc.c (gnat_print_type): Update to handle
	orignal packed arrays.
	(gnat_get_debug_type): Update to reject packed arrays
	implementation types.
	(get_array_bit_stride): New.
	(gnat_get_array_descr_info): Add packed arrays handling.
	* gcc-interface/utils.c (maybe_pad_type): When
	-fgnat-encodings=minimal, set the name of the padding type to
	the one of the original packed type, if any.  Fix TYPE_DECL
	peeling around the name of the input type.

From-SVN: r231768
2015-12-17 14:10:32 +00:00
Pierre-Marie de Rodat 69c5f9d7b5 DWARF: add a language hook for scalar biased types
Front-ends like GNAT for Ada sometimes use biased encodings for integral
types.  This change creates a new language hook so that the bias
information can make it into the debugging information back-end and
introduces an experimental DWARF attribute to hold it.

gcc/ada/ChangeLog:

	* gcc-interface/misc.c (gnat_get_type_bias): New.
	(LANG_HOOKS_GET_TYPE_BIAS): Redefine macro to implement the
	get_type_bias language hook.

gcc/ChangeLog:

	* langhooks.h (struct lang_hooks_for_types): New get_bias_field.
	* langhooks-def.h (LANG_HOOKS_GET_TYPE_BIAS): New.
	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Initialize the
	get_bias_field.
	* dwarf2out.c
	(base_type_die): In non-strict DWARF mode, invoke the
	get_type_bias language hook for INTEGER_TYPE nodes.  If it
	returns a bias, emit an attribute for it.
	(subrange_type_die): Change signature to handle bias.  If
	non-strict DWARF mode, emit an attribute for it, if one passed.
	(modified_type_die): For subrange types, invoke the
	get_type_bias langage hook and pass the bias to
	subrange_type_die.

From-SVN: r231767
2015-12-17 14:10:24 +00:00
Pierre-Marie de Rodat 98088266e5 DWARF: create a macro for max dimensions for array descr. lang. hook
The array descriptor language hook can hold the description of a limited
number of array dimensions.  This macro will ease preventing overflow in
front-ends.

gcc/ada/ChangeLog:

	* gcc-interface/misc.c (gnat_get_array_descr_info): When the
	array has more dimensions than the language hook can handle,
	fall back to a nested arrays description.  Handle context-less
	array types.

gcc/ChangeLog:

	* dwarf2out.h (DWARF2OUT_ARRAY_DESCR_INFO_MAX_DIMEN): New macro.
	(struct array_descr_info): Use it for the dimensions array's
	size.
	* dwarf2out.c (gen_type_die_with_usage): Check that the array
	descr. language hook does not return an array with more
	dimensions that it should.

From-SVN: r231766
2015-12-17 14:10:12 +00:00
Pierre-Marie de Rodat 24bd3c6e80 DWARF: describe Ada dynamic arrays as proper arrays
gcc/ada/ChangeLog:

	* gcc-interface/decl.c (gnat_to_gnu_entity): When
	-fgnat-encodings-minimal, do not add ___XUP/XUT suffixes to type
	names and do not generate ___XA parallel types.
	* gcc-interface/misc.c (gnat_get_array_descr_info): Match fat
	and thin pointers and generate the corresponding array type
	descriptions.

From-SVN: r231765
2015-12-17 14:10:03 +00:00
Pierre-Marie de Rodat 2971780e40 DWARF: add a language hook for fixed-point types
Support for fixed-point types in GCC is not powerful enough for Ada
fixed-point types: GNAT uses regular scalar types to implement them.
This new language hook makes it possible to output the desired debugging
information anyway.

gcc/ada/ChangeLog:

	* gcc-interface/ada-tree.def (POWER_EXPR): New binary operation.
	* gcc-interface/ada-tree.h (TYPE_FIXED_POINT_P): New macro.
	(TYPE_IS_FIXED_POINT_P): New macro.
	(TYPE_SCALE_FACTOR): New macro.
	(SET_TYPE_SCALE_FACTOR): New macro.
	* gcc-interface/decl.c: Include urealp.h
	(gnat_to_gnu_entity): Attach trees to encode scale factors to
	fixed-point types.
	* gcc-interface/misc.c (gnat_print_type): Print scale factors
	for fixed-point types.
	(gnat_get_fixed_point_type_info): New.
	(gnat_init_ts): Initialize data for the POWER_EXPR binary
	operation.
	(LANG_HOOKS_GET_FIXED_POINT_INFO): Redefine macro to implement
	the get_fixed_point_type_info language hook.

gcc/ChangeLog:

	* langhooks.h (struct lang_hooks_for_types): Add a
	get_fixed_point_type_info field.
	* langhooks-def.h (LANG_HOOKS_GET_FIXED_POINT_TYPE_INFO): New
	macro.
	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Initialize the
	get_fixed_point_type_info field.
	* dwarf2out.h (enum fixed_point_scale_factor): New.
	(struct fixed_point_type_info): New.
	* dwarf2out.c (base_type_die): In DWARFv3 or non-strict DWARF
	mode, get fixed-point type information using the debugging hook
	and describe it in DWARF, if any.

From-SVN: r231764
2015-12-17 14:09:55 +00:00
Pierre-Marie de Rodat eb59e42800 DWARF: add a language hook to override types in debugging information
Many artificial types are introduced by GNAT in order to satisfy
constraints in GCC's internal trees or to generate optimal code.  These
hide original types from sources and miss useful information in the
debugging information or add noise to it and make debugging confusing.
This change introduces a new language hook to give a chance to
front-ends to restore the source types in the debugging information.

This change also enhance the array descriptor language hook to handle
array-wide bit/byte stride.  Some arrays may contain dynamically-sized
objects.  Debuggers need for these a hint to know the size allocated for
each element, hence the need for the array-wide bit/byte stride.

The Ada front-end is enhanced to take advantage of both hooks when
-fgnat-encodings=minimal, in order to keep compatibility with GDB.

gcc/ada/ChangeLog:

	* gcc-interface/ada-tree.h (struct lang_type): Rename the t
	field as t1 and add a t2 one.
	(get_lang_specific): New.
	(GET_TYPE_LANG_SPECIFIC): Refactor to use get_lang_specific.
	(SET_TYPE_LANG_SPECIFIC): Likewise.
	(GET_TYPE_LANG_SPECIFIC2): New macro.
	(SET_TYPE_LANG_SPECIFIC2): New macro.
	(TYPE_DEBUG_TYPE): New macro.
	(SET_TYPE_DEBUG_TYPE): New macro.
	* gcc-interface/decl.c (gnat_to_gnu_entity): When
	-fgnat-encodings=minimal, set padding types' debug type to the
	padded one (i.e. strip ___PAD GNAT encodings) and set
	constrained record subtypes's debug type to the base type.
	* gcc-interface/misc.c (gnat_print_type): Print debug types.
	(gnat_get_debug_type): New.
	(gnat_get_array_descr_info): When -fgnat-encodings=minimal, set
	a byte stride for arrays that contain a type whose debug type
	has variable length.
	(LANG_HOOKS_GET_DEBUG_TYPE): Redefine macro to implement the
	debug type language hook.
	* gcc-interface/utils.c (maybe_pad_type): When
	-fgnat-encodings=minimal, set padding types' debug type to the
	padded one.  Restore XVZ variables creation when
	-fgnat-encodings-minimal and use them to hold padding types'
	byte size.  For library-level padding types, share this variable
	across translation units.  Tag XVZ variables as artificial.

gcc/ChangeLog:

	* langhooks.h (struct lang_hooks_for_types): Add a
	get_debug_type field.
	* langhooks-def.h (LANG_HOOKS_GET_DEBUG_TYPE): New macro.
	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Initialize the
	get_debug_type field.
	* dwarf2out.h (struct array_descr_info): Add an array-wide
	stride field.
	* dwarf2out.c (modified_type_die): Invoke the get_debug_type
	language hook, process its result instead, if any.
	(gen_descr_array_type_die): Add array-wide stride processing.

From-SVN: r231763
2015-12-17 14:09:45 +00:00
Pierre-Marie de Rodat 986ccd2171 DWARF: handle variable-length records and variant parts
Enhance the DWARF back-end to emit proper descriptions for
variable-length records as well as variant parts in records.

In order to achieve this, generate DWARF expressions ("location
descriptions" in dwarf2out's parlance) for size and data member location
attributes.  Also match QUAL_UNION_TYPE data types as variant parts,
assuming the formers appear only to implement the latters (which is the
case at the moment: only the Ada front-end emits them).

Note that very few debuggers can handle these descriptions (GDB does not
yet), so in order to ease the the transition enable these only when
-fgnat-encodings=minimal.

gcc/ada/ChangeLog:

	* gcc-interface/decl.c (gnat_to_gnu_entity): Disable ___XVS GNAT
	encodings when -fgnat-encodings=minimal.
	(components_to_record): Disable ___XVE, ___XVN, ___XVU and
	___XVZ GNAT encodings when -fgnat-encodings=minimal.
	* gcc-interface/utils.c (maybe_pad_type): Disable __XVS GNAT
	encodings when -fgnat-encodings=minimal.

gcc/ChangeLog:

	* debug.h (struct gcc_debug_hooks): Add a new size_function
	hook.
	* debug.c (do_nothing_debug_hooks): Set the size_function field
	to no-op.
	* dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
	* sdbout.c (sdb_debug_hooks): Likewise.
	* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
	* stor-layout.c (finalize_size_functions): Let the debug info
	back-end know about the implementation of size functions.
	* dwarf2out.h (dw_discr_list_ref): New typedef.
	(enum dw_val_class): Add value classes for discriminant values
	and discriminant lists.
	(struct dw_discr_value): New structure.
	(struct dw_val_node): Add discriminant values and discriminant
	lists to the union.
	(struct dw_loc_descr_node): Add frame_offset_rel and
	dw_loc_frame_offset (only for checking) fields to handle DWARF
	procedures generation.
	(struct dw_discr_list_node): New structure.
	* dwarf2out.c (dwarf2out_size_function): New.
	(dwarf2_debug_hooks): Set the size_function field to
	dwarf2out_size_function.
	(dwarf2_lineno_debug_hooks): Set the size_function field to
	no-op.
	(new_loc_descr): Initialize the
	dw_loc_frame_offset field.
	(dwarf_proc_stack_usage_map): New.
	(dw_val_equal_p): Handle discriminants.
	(size_of_discr_value): New.
	(size_of_discr_list): New.
	(size_of_die): Handle discriminants.
	(add_loc_descr_to_each): New.
	(add_loc_list): New.
	(print_discr_value): New.
	(print_dw_val): Handle discriminants.
	(value_format): Handle discriminants.
	(output_discr_value): New.
	(output_die): Handle discriminants.
	(output_loc_operands): Handle DW_OP_call2 and DW_OP_call4.
	(uint_loc_descriptor): New.
	(uint_comparison_loc_list): New.
	(loc_list_from_uint_comparison): New.
	(add_discr_value): New.
	(add_discr_list): New.
	(AT_discr_list): New.
	(loc_descr_to_next_no_op): New.
	(free_loc_descr): New.
	(loc_descr_without_nops): New.
	(struct loc_descr_context): Add a dpi field.
	(struct dwarf_procedure_info): New helper structure.
	(new_dwarf_proc_die): New.
	(is_handled_procedure_type): New.
	(resolve_args_picking_1): New.
	(resolve_args_picking): New.
	(function_to_dwarf_procedure): New.
	(copy_dwarf_procedure): New.
	(copy_dwarf_procs_ref_in_attrs): New.
	(copy_dwarf_procs_ref_in_dies): New.
	(break_out_comdat_types): Copy DWARF procedures along with the
	types that reference them.
	(loc_list_from_tree): Rename into loc_list_from_tree_1.  Handle
	CALL_EXPR in the cases suitable for DWARF procedures.  Handle
	for PARM_DECL when generating a location description for a DWARF
	procedure.  Handle big unsigned INTEGER_CST nodes.  Handle
	NON_LVALUE_EXPR, EXACT_DIV_EXPR and all unsigned comparison
	operators.  Add a wrapper for loc_list_from_tree that strips
	DW_OP_nop operations from the result.
	(type_byte_size): New.
	(struct vlr_context): New helper structure.
	(field_byte_offset): Change signature to return either a
	constant offset or a location description for dynamic ones.
	Handle dynamic byte offsets with constant bit offsets and handle
	fields in variant parts.
	(add_data_member_location): Change signature to handle dynamic
	member offsets and fields in variant parts.  Update call to
	field_byte_offset.  Handle location lists.  Emit a variable data
	member location only when -fgnat-encodings=minimal.
	(add_bound_info): Emit self-referential bounds only when
	-fgnat-encodings=minimal.
	(add_byte_size_attribute): Use type_byte_size in order to handle
	dynamic type sizes.  Emit variable byte size only when
	-fgnat-encodings=minimal and when the target DWARF version
	allows them.
	(add_bit_offset_attribute): Change signature to handle
	variable-length records.  Update call to field_byte_offset.
	(gen_descr_array_type_die): Update call to gen_field_die.
	Update loc_descr_context literal.
	(gen_type_die_for_member): Likewise.
	(gen_subprogram_die): Update calls to get_decl_die.
	(gen_field_die): Change signature to handle variable-length
	records.  Update calls to add_bit_offset_attribute and
	add_data_member_location_attribute.
	(gen_inheritance_die): Update call to
	add_data_member_location_attribute.
	(gen_decl_die): Change signature to handle variable-length
	records.  Update call to gen_field_die.
	(gen_inheritance_die): Change signature to handle
	variable-length records.  Update call to
	add_data_member_location_attribute.
	(is_variant_part): New.
	(analyze_discr_in_predicate): New.
	(get_discr_value): New.
	(analyze_variants_discr): New.
	(gen_variant_part): New.
	(gen_member_die): Update calls to gen_decl_die.  Call instead
	gen_variant_part for variant parts.
	(gen_type_die_with_usage): Update calls to gen_decl_die.
	(process_scope_var): Likewise.
	(force_decl_die): Likewise.
	(declare_in_namespace): Likewise.
	(dwarf2out_decl): Likewise.
	(prune_unused_types_walk_loc_descr): New.
	(prune_unused_types_walk_attribs): Mark DIEs referenced by
	location descriptions and loc. descr. lists.
	(prune_unused_types_walk): Don't mark DWARF procedures by
	default.  Mark variant parts since nothing is supposed to
	reference them.
	(dwarf2out_init): Allocate dwarf_proc_stack_usage_map.
	(dwarf2out_c_finalize): Deallocate and reset
	dwarf_proc_stack_usage_map.

gcc/testsuite/ChangeLog:

	* gnat.dg/specs/debug1.ads: Update the expected number of
	DW_AT_artificial attribute in compiler output.

From-SVN: r231762
2015-12-17 14:09:36 +00:00
Pierre-Marie de Rodat 6592d14b43 Add a flag to control the balance between GNAT encodings and std. DWARF
In order to accomodate the debugger's support evolution for "new" DWARF
constructs, we need to have an flag that controls the amount of GNAT
encodings/standard DWARF information that is emitted in the debug info.
Propagate this new parameter into the Ada front-end.

gcc/ChangeLog:

	* common.opt (gnat_encodings): New variable
	(dwarf_gnat_encodings): New enum type.
	(fgnat_encodings): New option.
	* flag-types.h (enum dwarf_gnat_encodings): New.

gcc/ada/ChangeLog:

	* gcc-interface/misc.c (gnat_encodings): Undefine macro and
	declare a global variable.
	(gnat_post_options): Initialize this global from options.

From-SVN: r231761
2015-12-17 14:09:26 +00:00
Eric Botcazou 102a163189 re PR ada/48013 (generic instantiation breaks the No_Elaboration_Code restriction)
PR ada/48013
	* gcc-interface/trans.c (empty_stmt_list_p): New predicate.
	(gigi): Invoke it to compute the No_Elaboration_Code property.
	(insert_code_for): Do not insert the code if it's empty.

From-SVN: r231515
2015-12-10 14:20:50 +00:00
Eric Botcazou d747d0057c trans.c (Call_to_gnu): Remove guard for NULL_EXPR.
* gcc-interface/trans.c (Call_to_gnu): Remove guard for NULL_EXPR.
	* gcc-interface/utils2.c (gnat_rewrite_reference) <ERROR_MARK>: Return
	the reference unmodified.
	<NULL_EXPR>: New case.  Likewise.

From-SVN: r231513
2015-12-10 14:06:15 +00:00
Eric Botcazou 2ade427a37 gigi.h (create_var_decl): Adjust comment.
* gcc-interface/gigi.h (create_var_decl): Adjust comment.
	(create_subprog_decl): Likewise.
	* gcc-interface/utils.c (create_var_decl): Likewise.
	(create_subprog_decl): Likewise.

From-SVN: r231511
2015-12-10 13:46:38 +00:00
Tom de Vries e53ed9f4c5 Fix warnings from including fdl.texi into gnat-style.texi
2015-12-10  Tom de Vries  <tom@codesourcery.com>

	PR ada/65102
	* doc/include/fdl.texi: Add nodefaultgnufreedocumentationlicensenode
	ifdef to allow disabling default @node GNU Free Documentation License.

	* gnat-style.texi: Set nodefaultgnufreedocumentationlicensenode and
	define @node GNU Free Documentation License locally.

From-SVN: r231497
2015-12-10 09:19:04 +00:00
Eric Botcazou d4a0078bf8 re PR ada/66526 (apparent use of uninitialized variables in g-expect.adb)
PR ada/66526
	* g-expect.adb (Set_Up_Child_Communications): Add matching condition
	for uses of Input, Ouput and Error variables after the Execvp call.

From-SVN: r231450
2015-12-09 11:07:08 +00:00
Eric Botcazou 7b7597c6a4 Minor fixes
From-SVN: r231445
2015-12-09 08:45:41 +00:00
Jakub Jelinek 63bbf46d5f re PR c/48088 (-Werror=frame-larger-than=100 does not work as expected)
PR c/48088
	PR c/68657
	* common.opt (Wframe-larger-than=): Add Warning.
	* opts.h (control_warning_option): Add ARG argument.
	* opts-common.c (cmdline_handle_error): New function.
	(read_cmdline_option): Use it.
	(control_warning_option): Likewise.  Add ARG argument.
	If non-NULL, decode it if needed and pass through
	to handle_generated_option.  Handle CLVC_ENUM like
	CLVC_BOOLEAN.
	* opts.c (common_handle_option): Adjust control_warning_option
	caller.
	(enable_warning_as_error): Likewise.
c-family/
	* c.opt (Wfloat-conversion, Wsign-conversion): Add Warning.
	* c-pragma.c (handle_pragma_diagnostic): Adjust
	control_warning_option caller.
ada/
	* gcc-interface/trans.c (Pragma_to_gnu): Adjust
	control_warning_option caller.
testsuite/
	* c-c++-common/pr68657-1.c: New test.
	* c-c++-common/pr68657-2.c: New test.
	* c-c++-common/pr68657-3.c: New test.
	* gcc.dg/cpp/warn-normalized-3.c: Use
	-Werror=normalized=nfc instead of -Werror=normalized=
	in dg-options.

From-SVN: r231406
2015-12-08 14:26:35 +01:00
Piotr Trojanek 8b1cbdab73 re PR ada/60164 (Missing parenthesis in the documentation)
PR ada/60164
	* doc/gnat_ugn/gnat_and_program_execution.rst (gnatmem): Fix typo.

From-SVN: r231342
2015-12-06 18:53:37 +00:00
Eric Botcazou e4b2093f3c re PR ada/50048 ("cc1: note: obsolete option -I- used, please use -iquote instead" during bootstrap)
gnattools/
	PR ada/50048
	* Makefile.in (ftop_srcdir): New variable.
	(INCLUDES_FOR_SUBDIR): Use -iquote and $(ftop_srcdir).
gcc/ada/
	PR ada/50048
	* gcc-interface/Makefile.in (INCLUDES): Use -iquote.

From-SVN: r231341
2015-12-06 18:44:56 +00:00
Eric Botcazou 2097a8906f re PR ada/56274 (libada bootstrap failure on kfreebsd ("pthread_rwlock_t" not declared in "OS_Interface"))
PR ada/56274
	* s-osinte-kfreebsd-gnu.ads (pthread_rwlock_t): New subtype.
	(pthread_rwlockattr_t): Likewise.

From-SVN: r231337
2015-12-06 15:28:16 +00:00
Ludovic Brenta 928b5b523b re PR ada/49944 (Bootstrapping on x86_64-pc-kfreebsd-gnu fails with "s-taprop.adb:856:10: "pthread_attr_setaffinity_np" is undefined (more references follow)")
PR ada/49944
	* s-osinte-freebsd.ads: Minor reformatting.
	(Stack_Base_Available): Correct comments.
	* s-osinte-kfreebsd-gnu.ads (Time_Slice_Supported, nanosleep,
	clock_id_t, clock_gettime, Stack_Base_Available, Get_Page_Size,
	mprotect, pthread_mutexattr_setprotocol,pthread_mutexattr_getprotocol
	pthread_mutexattr_setprioceiling, pthread_mutexattr_getprioceiling,
	pthread_attr_setscope, pthread_attr_getscope,
	pthread_attr_setinheritsched, pthread_attr_getinheritsched,
	Time_Slice_Supported): Copy from s-osinte-freebsd.ads.
	* gcc-interface/Makefile.in (x86/kfreebsd): Use the POSIX version of
	the System.Task_Primitives.Operations package.

From-SVN: r231333
2015-12-06 14:11:17 +00:00
Ludovic Brenta f1b7620802 re PR ada/49940 (Bootstrapping on x86_64-pc-kfreebsd-gnu fails with "s-taprop.adb:717:32: "lwp_self" is undefined")
PR ada/49940
	* s-osinte-kfreebsd-gnu.ads (lwp_self): New imported function.

From-SVN: r231330
2015-12-06 14:00:16 +00:00
Jan Sommer df096e508e [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads (ada/68169)
PR ada/68169
	* s-oscons-tmplt.c: Generate pthread constants for RTEMS
	* s-osinte-rtems.ads: Declare pthread structs as opaque types in Ada

From-SVN: r231145
2015-12-02 00:09:41 -07:00
Eric Botcazou 5b1ab30749 * gcc-interface/Makefile.in (ADA_EXCLUDE_SRCS): Reorder.
From-SVN: r231104
2015-12-01 09:38:37 +00:00
Eric Botcazou c8a23c29f7 * gcc-interface/trans.c (gigi): Fix initialization order.
From-SVN: r231068
2015-11-30 12:06:30 +00:00
Eric Botcazou 4f852a1aff osint.adb: Add use type clause for CRTL.size_t.
* osint.adb: Add use type clause for CRTL.size_t.
	(C_String_Length): Return CRTL.size_t instead of Integer.
	(To_Path_String_Access): Take CRTL.size_t instead of Integer.
	(Get_Libraries_From_Registry): Use CRTL throughout.
	(To_Canonical_Dir_Spec): Use CRTL.size_t instead of Integer.
	(To_Canonical_File_List): Likewise.
	(To_Canonical_File_Spec): Likewise.
	(To_Canonical_Path_Spec): Likewise.
	(To_Host_Dir_Spec): Likewise.
	(To_Host_File_Spec): Likewise.
	(Update_Path): Use CRTL throughout.
	* s-shasto.adb: Add with clause for System.CRTL.
	(Initialize): Rename CRTL.strncpy instead of importing it manually.

From-SVN: r231066
2015-11-30 11:59:09 +00:00
Eric Botcazou 2056c5ede5 gigi.h (create_var_decl): Adjust prototype.
* gcc-interface/gigi.h (create_var_decl): Adjust prototype.
	(create_subprog_decl): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Rename
	static_p into static_flag and add volatile_flag local variable.
	Do not locally change the type of a volatile object, except for the
	pointed-to type if the object is handled by reference.  Adjust calls
	to create_var_decl.
	<E_Subprogram_Type>: Likewise for const and noreturn subprograms.
	(get_minimal_subprog_decl): Adjust call to create_subprog_decl.
	(elaborate_expression_1): Adjust call to create_var_decl.
	(gnat_to_gnu_field): Minor tweak.
	* gcc-interface/trans.c (gigi): Adjust calls to create_var_decl and
	create_subprog_decl.
	(build_raise_check): Likewise.
	(Subprogram_Body_to_gnu): Likewise.
	(create_temporary): Likewise.
	(Handled_Sequence_Of_Statements_to_gnu): Likewise.
	(Exception_Handler_to_gnu_gcc): Likewise.
	(Compilation_Unit_to_gnu): Likewise.
	(gnat_to_gnu): Likewise.
	* gcc-interface/utils.c (maybe_pad_type): Likewise.
	(create_var_decl): Add VOLATILE_FLAG parameter and handle it.
	(create_subprog_decl): Add CONST_FLAG and VOLATILE_FLAG parameters and
	handle them.

From-SVN: r231065
2015-11-30 11:50:53 +00:00
Eric Botcazou 933a73251d gigi.h (is_simple_additive_expression): Declare.
* gcc-interface/gigi.h (is_simple_additive_expression): Declare.
	* gcc-interface/trans.c (struct range_check_info_d): Add DISP and
	NEG_P fields.
	(find_loop_for): Add DISP and NEG_P parameters with default value.
	Call is_simple_additive_expression to handle additive expressions.
	(Loop_Statement_to_gnu): Deal with displacement in range checks.
	(Raise_Error_to_gnu): Likewise.
	(gnat_to_gnu): Add call to find_loop_for.
	(is_simple_additive_expression): New function extracted from...
	(gnat_invariant_expr): ...here.  Call it on the expression.

From-SVN: r231064
2015-11-30 11:46:32 +00:00
Eric Botcazou f8125f0c9c * gcc-interface/utils2.c (gnat_invariant_expr): Add type conversions.
From-SVN: r231063
2015-11-30 11:34:31 +00:00
Eric Botcazou 14ecca2eea ada-tree.h (TYPE_MAX_ALIGN): New macro.
* gcc-interface/ada-tree.h (TYPE_MAX_ALIGN): New macro.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not set PACKED to -2.
	Remove obsolete code setting the alignment on some atomic types.
	When the type has no alignment but needs strict alignment and has a
	size clause, compute a maximum alignment and set it on the type.
	(adjust_packed): Remove handling of -2 argument.  Deal with TYPE_ALIGN
	and TYPE_MAX_ALIGN directly.
	(gnat_to_gnu_field): Do not document -2 as argument.
	(components_to_record): Likewise.
	* gcc-interface/utils.c (finish_record_type): Do not bump alignment of
	the record type beyond TYPE_MAX_ALIGN.  Reset the latter on exit.

	* gcc-interface/Makefile.in (PICFLAG_FOR_TARGET): Move around.
	(GNATLIBCFLAGS_FOR_C): Reformat.
	(GCC_CFLAGS): Delete.

From-SVN: r231062
2015-11-30 11:25:24 +00:00
Matthias Klose 597432ed16 re PR ada/68564 (Ada fails to bootstrap on sparc64-linux-gnu)
2015-11-29  Matthias Klose  <doko@ubuntu.com>

        PR ada/68564
        * gcc-interface/Makefile.in: Fix powerpc/powerpc64* and
        mipsel/mips64el bitness detection. 
        Merge the mipsel/mips64el definitions into one.

From-SVN: r231051
2015-11-29 22:41:00 +00:00
Matthias Klose c14826cfc9 re PR ada/68564 (Ada fails to bootstrap on sparc64-linux-gnu)
2015-11-28  Matthias Klose  <doko@ubuntu.com>

        PR ada/68564
        * gcc-interface/Makefile.in: Fix sparc/sparc64 bitness detection.

From-SVN: r231028
2015-11-28 02:39:20 +00:00
Eric Botcazou 182a997303 Back out latest change.
From-SVN: r230935
2015-11-26 11:17:20 +00:00
Arnaud Charlet 8e2d104ba2 [multiple changes]
2015-11-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gnatlink.adb (Gnatlink): Do not reinstate -fsjlj for the linker
	from the switches saved in the ALI file but from the exception
	settings.

2015-11-25  Arnaud Charlet  <charlet@adacore.com>

	* lib-xref-spark_specific.adb
	(Add_SPARK_Scope): Take entry families into account.
	* a-exetim.ads, a-exetim-default.ads, a-exetim-mingw.ads (Clock,
	Clock_For_Interrupts): preconditions added.
	* a-extiin.ads (Clock): preconditions added.
	* par-ch3.adb (P_Declarative_Items): In case of misplaced
	aspect specifications, ensure that flag Done is properly set to
	continue parsing.

From-SVN: r230879
2015-11-25 16:30:09 +01:00
Arnaud Charlet 7b52257cfa [multiple changes]
2015-11-25  Arnaud Charlet  <charlet@adacore.com>

	* exp_util.adb (Remove_Side_Effects): Minimize extra temporaries
	and use of 'Reference when needed.

2015-11-25  Doug Rupp  <rupp@adacore.com>

	* sigtramp-vxworks-target.inc (__x86_64__): Restore context for the
	sake of uniformity.
	* init.c (__gnat_inum_to_ivec): Add some casting to avoid
	warnings when sizeof(long) != sizeof(int)

2015-11-25  Yannick Moy  <moy@adacore.com>

	* lib-xref-spark_specific.adb (SPARK_Entities): Add entries for
	consideration.
	(Add_SPARK_Scope): Take tasks into account.
	(Detect_And_Add_SPARK_Scope): Take tasks into account.
	(Enclosing_Subprogram_Or_Library_Package): Take tasks into account.

From-SVN: r230878
2015-11-25 16:16:44 +01:00
Arnaud Charlet e9c12b91f4 [multiple changes]
2015-11-25  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Check_Internal_Call_Continue): Code clean ups.

2015-11-25  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_util.ads (Has_Compatible_Alignment): Add Layout_Done
	parameter.
	* sem_util.adb (Has_Compatible_Alignment): Likewise.
	(Has_Compatible_Alignment_Internal): Likewise.	Do not set the
	result to Unknown for packed types if Layout_Done is true.
	* checks.adb (Apply_Address_Clause_Check): Adjust call and
	pass False to Has_Compatible_Alignment.
	* sem_ch13.adb (Validate_Address_Clauses): Likewise but pass True.

From-SVN: r230877
2015-11-25 16:14:27 +01:00
Arnaud Charlet 3429710e69 [multiple changes]
2015-11-25  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: When <target>-gnat is called with switch -P
	and a GPR tool is invoked, invoke the GPR tool with switch
	--target=<target>.

2015-11-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* opt.adb, bcheck.adb: Minor reformatting.

From-SVN: r230876
2015-11-25 16:10:52 +01:00
Arnaud Charlet ccaca7e9f0 [multiple changes]
2015-11-25  Jerome Lambourg  <lambourg@adacore.com>

	* init.c: Enable the signal trampoline on x86_64-vx7
	* sigtramp-vxworks-target.inc: Implement the signal trampoline
	for x86_64
	* tracebak.c: Remove the hook to use the generic
	unwinder on x86_64-vx7.

2015-11-25  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: When "gnat name -P" is called, invoke gprname
	directly if available.

From-SVN: r230875
2015-11-25 16:09:38 +01:00
Tristan Gingold d75a7b1f32 init.c (__gnat_is_stack_guard): Do not use mach calls for IOS simulator.
2015-11-25  Tristan Gingold  <gingold@adacore.com>

	* init.c (__gnat_is_stack_guard): Do not use mach calls for
	IOS simulator.

From-SVN: r230874
2015-11-25 16:07:12 +01:00
Pierre-Marie de Rodat caadda8e35 DWARF: materialize subprogram renamings in Ada as imported declarations
... so that debugger users can reference them instead of the renamed
subprograms.  This is in accordance with the DWARF specification: the
section 3.2.3 (Imported (or Renamed) Declaration Entities) allows
DW_TAG_imported_declaration DIEs to be used "as a general means to
rename or provide an alias for an entity regardless of the context in
which the importing declaration or the imported entity occur." (wording
from the DWARFv3 and DWARFv4 specifications, allowed in DWARFv2).

gcc/ada/ChangeLog:

	* gcc-interface/utils.c (gnat_write_global_declarations): Output
	debugging information for top-level imported declarations.

gcc/ChangeLog:

	* dwarf2out.c (gen_decl_die): Generate DW_TAG_imported_* instead
	of DW_TAG_namespace for IMPORTED_DECL declarations.  Call
	dwarf2out_imported_module_or_decl_1 for all DWARF versions as
	this function already takes care of checking what it can emit.

Bootstrapped, regtested and checked with GDB's testsuite on
x86_64-linux.

From-SVN: r230821
2015-11-24 16:59:43 +00:00
Gary Dismukes 4404c2826c sem_ch3.adb, [...]: Minor reformatting, rewording, and typo corrections.
2015-11-24  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch3.adb, sem_type.adb, sem_ch7.adb, sem_ch9.adb, checks.adb,
	sem_prag.adb, contracts.adb, g-strhas.ads, sem_ch6.adb: Minor
	reformatting, rewording, and typo corrections.

From-SVN: r230794
2015-11-24 10:22:24 +01:00
Eric Botcazou c4833de125 decl.c (gnat_to_gnu_entity): In ASIS mode, do a minimal translation for root types with discriminants.
* gcc-interface/decl.c (gnat_to_gnu_entity) <Concurrent types>: In
	ASIS mode, do a minimal translation for root types with discriminants.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Subunit>: Move around.
	<N_Entry_Body, N_Protected_Body, N_Task_Body>: Likewise.  In ASIS mode,
	process the declarations attached to the body.

From-SVN: r230792
2015-11-24 09:00:45 +00:00
Eric Botcazou 93200f92e5 trans.c (gnat_to_gnu): In type_annotate_only mode, do not build a NULL_EXPR for an N_Expanded_Name.
* gcc-interface/trans.c (gnat_to_gnu): In type_annotate_only mode, do
	not build a NULL_EXPR for an N_Expanded_Name.

From-SVN: r230791
2015-11-24 08:52:54 +00:00
Eric Botcazou eae6758d2b decl.c (is_cplusplus_method): Check that the type of the first parameter (indirectly) has C++ convention too.
* gcc-interface/decl.c (is_cplusplus_method): Check that the type of
	the first parameter (indirectly) has C++ convention too.

From-SVN: r230788
2015-11-24 08:42:37 +00:00
Olivier Hainque a789b24062 system-aix.ads: Add Frontend_Exceptions flag.
2015-11-23  Olivier Hainque  <hainque@adacore.com>

	* system-aix.ads: Add Frontend_Exceptions flag.
	* system-aix64.ads: Likewise.
	* system-darwin-ppc.ads: Likewise.
	* system-darwin-ppc64.ads: Likewise.
	* system-darwin-x86.ads: Likewise.
	* system-darwin-x86_64.ads: Likewise.
	* system-dragonfly-x86_64.ads: Likewise.
	* system-freebsd-x86.ads: Likewise.
	* system-freebsd-x86_64.ads: Likewise.
	* system-hpux-ia64.ads: Likewise.
	* system-hpux.ads: Likewise.
	* system-linux-alpha.ads: Likewise.
	* system-linux-armeb.ads: Likewise.
	* system-linux-armel.ads: Likewise.
	* system-linux-hppa.ads: Likewise.
	* system-linux-ia64.ads: Likewise.
	* system-linux-mips.ads: Likewise.
	* system-linux-mips64el.ads: Likewise.
	* system-linux-mipsel.ads: Likewise.
	* system-linux-ppc.ads: Likewise.
	* system-linux-ppc64.ads: Likewise.
	* system-linux-s390.ads: Likewise.
	* system-linux-s390x.ads: Likewise.
	* system-linux-sh4.ads: Likewise.
	* system-linux-sparc.ads: Likewise.
	* system-linux-sparcv9.ads: Likewise.
	* system-linux-x86.ads: Likewise.
	* system-linux-x86_64.ads: Likewise.
	* system-mingw-x86_64.ads: Likewise.
	* system-mingw.ads: Likewise.
	* system-rtems.ads: Likewise.
	* system-solaris-sparc.ads: Likewise.
	* system-solaris-sparcv9.ads: Likewise.
	* system-solaris-x86.ads: Likewise.
	* system-solaris-x86_64.ads: Likewise.
	* system-vxworks-arm.ads: Likewise.
	* system-vxworks-m68k.ads: Likewise.
	* system-vxworks-mips.ads: Likewise.
	* system-vxworks-ppc.ads: Likewise.
	* system-vxworks-sparcv9.ads: Likewise.
	* system-vxworks-x86.ads: Likewise.
	* system.ads: Likewise.

From-SVN: r230753
2015-11-23 11:31:24 +00:00
Olivier Hainque 0ab0bf955a opt.ads (Exception_Mechanism): Now three values: Front_End_SJLJ, Back_End_SJLJ and Back_End_ZCX.
2015-11-23  Olivier Hainque  <hainque@adacore.com>
	    Eric Botcazou  <botcazou@adacore.com>

	* opt.ads (Exception_Mechanism): Now three values: Front_End_SJLJ,
	Back_End_SJLJ and Back_End_ZCX.
	(Back_End_Exceptions, Front_End_Exceptions, ZCX_Exceptions,
	SJLJ_Exceptions): New functions, reflecting properties of the current
	Exception_Mechanism.
	* opt.adb: Implement the new functions.
	* fe.h: Bind the new Exception_Mechanism and helper functions for gigi.

	* exp_ch11.adb (Expand_At_End_Handler): Replace test on mechanism by
	use of property helper and update comments.
	(Expand_Exception_Handlers): Replace tests on mechanism by use of
	helper. Restrict Abort_Defer to ZCX specifically.
	* exp_ch9.adb (Expand_N_Asynchronous_Select): Replace tests on
	mechanism by calls to helper functions. Abort_Undefer for ZCX only,
	paired with Expand_Exception_Handlers.
	* exp_sel.adb (Build_Abort_Block_Handler): Replace tests on mechanism
	by calls to helper functions. Abort_Undefer for ZCX only, paired with
	Expand_Exception_Handlers.

	* lib-writ.ads (P line documentation): Add entry for "FX",
	representative of unit compiled with Frontend_Exceptions True.
	* lib-writ.adb (Output_Main_Program_Line): Add "FX" on P line if
	compiled with Frontend_Exceptions True.

	* ali.ads (ALIs_Record): Ada a Frontend_Exceptions component, to reflect
	whether the ALI file contained an "FX" indication on the P line.
	(Frontend_Exceptions_Specified): New boolean, to keep track of whether
	at least an FX ALI file is in the closure.
	* ali.adb (Scan_ALI): Handle "FX" on the P line.
	(Initialize_ALI): Initialize Frontend_Exceptions_Specified to False.

	* targparm.ads: Update desription of exception schemes.
	(Frontend_Exceptions_On_Target): New flag, reflect Frontend_Exceptions
	set to True in system.ads, or not set at all.
	* targparm.adb (Targparm_Tags): Add FEX to convey Frontend_Exceptions.
	Rename ZCD to ZCX for consistency.
	(FEX_Str, Targparm_Str, Get_Target_Parameters): Adjust accordingly.

	* gnat1drv.adb (Adjust_Global_Switches): Adjust Exception_Mechanism
	setting, now from combination of Frontend_Exceptions and ZCX_By_Default.

	* bcheck.adb (Check_Consistent_Zero_Cost_Exception_Handling): Rename
	as ...
	(Check_Consistent_Exception_Handling): Check consistency of both
	ZCX_By_Default and Frontend_Exceptions.
	(Check_Configuration_Consistency): Check_Consistent_Exception_Handling
	if either flag was set at least once.

	* make.adb (Check): Remove processing of a possible -fsjlj coming from
	lang-specs.h.
	* gnatlink.adb (Gnatlin): Likewise.

	* gcc-interface/Makefile.in (gnatlib-sjlj/zcx): Now set
	both ZCX_By_Default and Frontend_Exceptions.
	* gcc-interface/decl.c (gnat_to_gnu_entity, case E_Variable):
	Use eh property helper to test for back-end exceptions. Adjust
	mechanism name when testing for front-end sjlj.
	(case E_Procedure): Likewise.
	* gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu):
	Likewise, and rename local variables.
	(Exception_Handler_to_gnu_sjlj): Rename as
	Exception_Handler_to_gnu_fe_sjlj.
	(Exception_Handler_to_gnu_zcx): Rename as
	Exception_Handler_to_gnu_gcc and adjust tests on eh mechanisms
	to use property helpers or correct mechanism name.


Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>

From-SVN: r230752
2015-11-23 11:20:34 +00:00
Bob Duff 04a9bb6ec3 sem_elab.adb (Check_Internal_Call_Continue): Correction to previous change...
2015-11-19  Bob Duff  <duff@adacore.com>
        
	* sem_elab.adb (Check_Internal_Call_Continue): Correction to previous
	change: correctly handle generic formals/actuals that look like
	renamings.

From-SVN: r230617
2015-11-19 17:40:37 +01:00
Eric Botcazou 2b2a2e9e1e trans.c (elaborate_all_entities_for_package): New function extracted from...
* gcc-interface/trans.c (elaborate_all_entities_for_package): New
	function extracted from...  Recurse on packages.
	(elaborate_all_entities): ...here.  Call it on packages.

From-SVN: r230576
2015-11-18 21:59:30 +00:00
Eric Botcazou 642357660a ada-tree.h (DECL_INVARIANT_P): New macro.
* gcc-interface/ada-tree.h (DECL_INVARIANT_P): New macro.
	* gcc-interface/gigi.h (enum standard_datatypes): Remove
	ADT_longjmp_decl and add ADT_not_handled_by_others_decl.
	(longjmp_decl): Delete.
	(not_handled_by_others_decl): New macro.
	(build_simple_component_ref): Delete.
	(build_component_ref): Adjust prototype.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust calls to
	build_component_ref.
	(gnat_to_gnu_field): Set DECL_INVARIANT_P on discriminants
	without default value.
	* gcc-interface/trans.c (gigi): Reorder initialization sequence
	and add not_handled_by_others_decl.
	(Attribute_to_gnu): Adjust calls to build_component_ref.
	(Subprogram_Body_to_gnu): Likewise.
	(Call_to_gnu): Likewise.
	(Exception_Handler_to_gnu_sjlj): Likewise.
	(gnat_to_gnu): Likewise.
	(range_check_info_d): Add inserted_cond field.
	(Loop_Statement_to_gnu): Make two passes on the recorded range checks.
	(build_noreturn_cond): New static function.
	(Raise_Error_to_gnu): Record range checks in loops at -O1 and above.
	(make_invariant): New static function.
	(Loop_Statement_to_gnu): Use it to compute invariant expressions for
	the loop bounds if possible, but do not require it if loop unswitching
	is enabled.
	* gcc-interface/utils.c (convert_to_fat_pointer): Likewise.
	(convert): Likewise.
	(maybe_unconstrained_array): Likewise.  Call it instead of
	build_simple_component_ref and add guard for CONSTRUCTORs.
	(unchecked_convert): Likewise.
	* gcc-interface/utils2.c (compare_fat_pointers): Likewise.
	(build_simple_component_ref): Remove COMPONENT parameter, unify
	code dealing with VIEW_CONVERT_EXPR and make it more general,
	remove special treatment for CONSTRUCTORs of template types.
	(build_component_ref): Remove COMPONENT parameter and adjust call
	to build_simple_component_ref.
	(maybe_wrap_malloc): Likewise.
	(build_allocator): Likewise.
	(gnat_invariant_expr): Look through overflow checks, deal with
	addition and subtraction of constants and take into account
	DECL_INVARIANT_P for the COMPONENT_REF case.

From-SVN: r230575
2015-11-18 21:55:11 +00:00
Eric Botcazou 5f29a394cd misc.c: Move global variables to the top of the file.
* gcc-interface/misc.c: Move global variables to the top of the file.
	(gnat_handle_option): Remove obsolete ATTRIBUTE_UNUSED markers.
	(gnat_init_options): Minor tweak.
	(gnat_post_options): Set -fstrict-overflow if not done by the user.
	(internal_error_function): Minor reformatting.

From-SVN: r230569
2015-11-18 21:17:51 +00:00
Eric Botcazou 482a338d01 decl.c (gnat_to_gnu_entity): Use case #1 for the renaming of an address.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Use case #1
	for the renaming of an address.

From-SVN: r230560
2015-11-18 18:31:42 +00:00
Eric Botcazou a239279ee5 trans.c (fold_constant_decl_in_expr): If the index is not itself constant then bail out.
* gcc-interface/trans.c (fold_constant_decl_in_expr) <ARRAY_REF>: If
	the index is not itself constant then bail out.

From-SVN: r230558
2015-11-18 18:19:57 +00:00
Ed Schonberg 43151cfd6a sem_ch4.adb (Try_Container_Indexing): When constructing the parameter list for the potentially overloaded calls to...
2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Container_Indexing): When constructing the
	parameter list for the potentially overloaded calls to indexing
	functions, do not propagate overloadings if the actual is a named
	association: overloadings appear directly on the expression in
	the association.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Interface_Present_In_Ancestor): If the type is
	incomplete, the list of ancestors is found either on the full
	view or the non-limited view of the type.

From-SVN: r230547
2015-11-18 14:55:42 +01:00
Arnaud Charlet e645cb39bb [multiple changes]
2015-11-18  Nicolas Roche  <roche@adacore.com>

	* sysdep.c (__gnat_localtime_tzoff): On Windows platform
	GetTimeZoneInformation function is thread-safe. Thus there
	is no need to lock the runtime in the implementation of
	__gnat_localtime_tzoff on that platform.

2015-11-18  Eric Botcazou  <ebotcazou@adacore.com>

	* s-arit64.adb (To_Neg_Int): Add a special case for 2**63 input.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Analyze_Contracts): New routine.
	(Analyze_Enclosing_Package_Body_Contract): Removed.
	(Analyze_Entry_Or_Subprogram_Contract): Add formal parameter
	Freeze_Id.  Propagate the entity of the freezing body to vaious
	analysis routines.
	(Analyze_Initial_Declaration_Contract): Removed.
	(Analyze_Object_Contract): Add formal parameter
	Freeze_Id. Propagate the entity of the freezing body to vaious
	analysis routines.
	(Analyze_Previous_Contracts): New routine.
	* contracts.ads (Analyze_Enclosing_Package_Body_Contract): Removed.
	(Analyze_Contracts): New routine.
	(Analyze_Entry_Or_Subprogram_Contract): Add formal
	parameter Freeze_Id and update the comment on usage.
	(Analyze_Initial_Declaration_Contract): Removed.
	(Analyze_Object_Contract): Add formal parameter Freeze_Id and
	update the comment on usage.
	(Analyze_Previous_Contracts): New routine.
	* sem_ch3.adb (Analyze_Declarations): Use Analyze_Contracts to
	analyze all contracts of eligible constructs.
	* sem_ch6.adb (Analyze_Generic_Subprogram_Body):
	A body no longer freezes the contract of its initial
	declaration. This effect is achieved through different means.
	(Analyze_Subprogram_Body_Helper): A body now freezes the contracts
	of all eligible constructs that precede it. A body no longer
	freezes the contract of its initial declaration. This effect is
	achieved through different means.
	* sem_ch7.adb (Analyze_Package_Body_Helper): A body now freezes
	the contracts of all eligible constructs that precede it. A body
	no longer freezes the contract of its initial declaration. This
	effect is achieved through different means.
	* sem_ch9.adb (Analyze_Entry_Body): A body now freezes
	the contracts of all eligible constructs that precede
	it. A body no longer freezes the contract of its initial
	declaration. This effect is achieved through different means.
	(Analyze_Protected_Body): A body now freezes the contracts
	of all eligible constructs that precede it. A body no longer
	freezes the contract of its initial declaration. This effect
	is achieved through different means.
	(Analyze_Task_Body): A
	body now freezes the contracts of all eligible constructs that
	precede it. A body no longer freezes the contract of its initial
	declaration. This effect is achieved through different means.
	* sem_prag.adb (Add_Item_To_Name_Buffer): Single protected/task
	objects now output their respective current instance of xxx
	type messages.	(Analyze_Contract_Cases_In_Decl_Part): Add
	formal parameter Freeze_Id. Emit a clarification message
	when an undefined entity may the byproduct of contract
	freezing.
	(Analyze_Part_Of_In_Decl_Part): Add formal
	parameter Freeze_Id. Emit a clarification message when an
	undefined entity may the byproduct of contract freezing.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Add formal
	parameter Freeze_Id. Emit a clarification message when an
	undefined entity may the byproduct of contract freezing.
	(Analyze_Refined_State_In_Decl_Part): Do not report unused body
	states as constituents of single protected/task types may not
	bave been identified yet.
	(Collect_Subprogram_Inputs_Outputs):
	Reimplemented.	(Contract_Freeze_Error): New routine.
	(Process_Overloadable): Use predicate Is_Single_Task_Object.
	* sem_prag.ads (Analyze_Contract_Cases_In_Decl_Part):
	Add formal parameter Freeze_Id and update the comment
	on usage.
	(Analyze_Part_Of_In_Decl_Part): Add formal
	parameter Freeze_Id and update the comment on usage.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Add formal parameter
	Freeze_Id and update the comment on usage.
	* sem_util.adb (Check_Unused_Body_States): Remove global
	variable Legal_Constits. The routine now reports unused
	body states regardless of whether constituents are
	legal or not.
	(Collect_Body_States): A constituent of a
	single protected/task type is not a visible state of a
	package body.
	(Collect_Visible_States): A constituent
	of a single protected/task type is not a visible
	state of a package body.
	(Has_Undefined_Reference): New routine.
	(Is_Single_Concurrent_Object): Reimplemented.
	(Is_Single_Protected_Object): New routine.
	(Is_Single_Task_Object): New routine.
	(Is_Visible_Object): New routine.
	(Report_Unused_Body_States): Moved to Check_Unused_Body_States.
	* sem_util.ads (Check_Unused_Body_States): Update the comment on usage.
	(Has_Undefined_Reference): New routine.
	(Is_Single_Protected_Object): New routine.
	(Is_Single_Task_Object): New routine.
	(Report_Unused_Body_States): Moved to Check_Unused_Body_States.

2015-11-18  Pierre-Marie de Rodat  <derodat@adacore.com>

	* Makefile.rtl, impunit.adb: Add g-strhas.ads.
	* g-strhas.ads: New file.
	* s-strhas.ads: Add a comment to redirect users to g-strhas.ads.

2015-11-18  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Check_Internal_Call_Continue): Fix the case
	where the call in question is to a renaming of a subprogram that
	can be safely called without ABE.
	* checks.adb: Minor edits.

From-SVN: r230546
2015-11-18 14:53:58 +01:00
Arnaud Charlet fdc54be6a0 [multiple changes]
2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* atree.adb (Elist11): New routine.
	(Set_Elist11): New routine.
	* atree.ads (Elist11): New routine.
	(Set_Elist11): New routine.
	* atree.h: Define Elist11.
	* contracts.adb (Analyze_Object_Contract): Verify the legality
	of all references to a variable given that the variable is a
	constituent of a single protected/task type.
	* einfo.adb: Part_Of_References now utilizes Elist11.
	(Part_Of_References): New routine.
	(Set_Part_Of_References): New routine.
	(Write_Field11_Name): Add output for Part_Of_References.
	* einfo.ads New attribute Part_Of_References along with usage
	in entities.
	(Part_Of_References): New routine along with
	pragma Inline.
	(Set_Part_Of_References): New routine along with pragma Inline.
	* sem_prag.adb (Analyze_Constituent): Record a possible
	reference to a concurrent constituent.
	(Analyze_Global_Item): Record a possible reference to a concurrent
	constituent.
	(Analyze_Input_Output): Record a possible reference to a
	concurrent constituent.
	* sem_res.adb (Resolve_Entity_Name): Record a possible reference
	to a concurrent constituent.
	* sem_util.adb (Check_Part_Of_Reference): New routine.
	(Record_Possible_Part_Of_Reference): New routine.
	* sem_util.ads (Check_Part_Of_Reference): New routine.
	(Record_Possible_Part_Of_Reference): New routine.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Arithmetic_Overflow_Minimized_Eliminated):
	An if_expression is the proper place to apply the overflow
	minimization procedure if its context is not an enclosing
	arithmetic expression.

From-SVN: r230540
2015-11-18 11:53:39 +01:00
Arnaud Charlet 2544cbe4f2 gnat_project_manager.rst, [...]: Update doc.
* gnat_ugn/gnat_project_manager.rst,
        gnat_ugn/building_executable_programs_with_gnat.rst,
        gnat_ugn/gnat_and_program_execution.rst,
        gnat_ugn/the_gnat_compilation_model.rst,
        gnat_rm/implementation_defined_pragmas.rst,
        gnat_rm/standard_and_implementation_defined_restrictions.rst,
        gnat_ugn.texi, gnat_rm.texi: Update doc.

From-SVN: r230538
2015-11-18 11:50:40 +01:00
Arnaud Charlet c0dd5b3822 [multiple changes]
2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Add_Contract_Item): Chain pragmas Attach_Handler
	and Interrupt_Handler on the classifications list of a [generic]
	procedure N_Contract node.
	* contracts.ads (Add_Contract_Item): Update the comment on usage.
	* einfo.adb (Get_Pragma): Pragmas Attach_Handler and
	Interrupt_Handler are found on the classifications list of
	N_Contract nodes.
	* einfo.ads (Get_Pragma): Update the comment on usage.
	* sem_prag.adb (Process_Interrupt_Or_Attach_Handler): Code
	reformatting. Store the pragma as a contract item.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Available_Subtype): Use only in GNATprove
	mode. When generating code it may be necessary to create itypes
	at the point of use of a selected component, for example in the
	expansion of a record equality operation.

2015-11-18  Vincent Celier  <celier@adacore.com>

	* s-os_lib.adb (Normalize_Pathname.Get_Directory): When
	invoking Normalize_Pathname, use the same values for parameters
	Resolve_Links and Case_Sensitive as the parent Normalize_Pathname.

2015-11-18  Vincent Celier  <celier@adacore.com>

	* a-direct.adb (Containing_Directory): Return "." when the result
	is the current directory, not specified as an absolute path name.

From-SVN: r230536
2015-11-18 11:42:27 +01:00
Arnaud Charlet a25e72b5e5 [multiple changes]
2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_aggr.adb (Is_Completely_Hidden_Discriminant): New routine.
	(Init_Hidden_Discriminants): Code reformatting. Do not initialize
	a completely hidden discriminant.
	* a-interr.ads (Get_CPU): Added SPARK_Mode, Volatile_Function
	and Global aspects on the function.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* exp_intr.adb (Expand_Unc_Deallocation): If the designated
	type is a concurrent type, the deallocation applies to the
	corresponding record type, or to its class-wide type if the type
	is tagged.

From-SVN: r230535
2015-11-18 11:40:47 +01:00
Doug Rupp 86e066aa7a s-parame-vxworks.adb: Reduce default stack size for stack limit check to a reasonable value
2015-11-18  Doug Rupp  <rupp@adacore.com>

	* s-parame-vxworks.adb: Reduce default stack size for stack
	limit check to a reasonable value
	* s-tpopsp-vxworks.adb: Make Stack_Limit a task variable for vx5 and
	vxmils.

From-SVN: r230534
2015-11-18 11:39:37 +01:00
Arnaud Charlet 72d5c70bbf [multiple changes]
2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Assignment): Diagnose assignment where
	left-hand side has a limited view of a class-wide type.
	* sem_ch6.adb (Detected_And_Exchange): Do not install a non-limited
	view if the scope of the type of the formal is visible through
	a limited_with_clause, even if the non-limited view is available.

2015-11-18  Emmanuel Briot  <briot@adacore.com>

	* s-pooglo.ads: Make Global_Pool_Object aliased.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Access): If the prefix
	is an expression function, do not analyze the generated body if
	the current scope is not the scope of the expression function,
	as may happen if the attribute is an actual in an instantiation.
	* sem_ch10.adb, sem_ch12.adb, a-stzmap.adb, s-soflin.adb,
	a-stwima.adb: Fix typos.

2015-11-18  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch11.adb (Expand_N_Exception_Declaration): No-op when
	generating C code.

2015-11-18  Vincent Celier  <celier@adacore.com>

	* g-comlin.adb (Find_Longest_Matching_Switch): Do not take into
	account a switch ending with '=' when the actual command line
	switch is not followed with a space or '='.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Explicit_Dereference): Do not add an access
	check if the type of the prefix is known to exclude null.
	* a-coinve.adb (Get_Element_Access): The function returns an
	access type that excludes null, so add an explicit check for
	a null element pointer, which is created when Insert_Spaces is
	called on an indefinite vector container.

From-SVN: r230533
2015-11-18 11:31:53 +01:00
Arnaud Charlet 7d4c4fde0e [multiple changes]
2015-11-18  Arnaud Charlet  <charlet@adacore.com>

	* switch-c.adb (Scan_Front_End_Switches): Add a check requiring
	-gnatc with -gnateg.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch7.adb (Uninstall_Declarations): Before swapping private
	and full views, ensure that the potential use visbility of the
	two views is consistent.

2015-11-18  Doug Rupp  <rupp@adacore.com>

	* s-parame-vxworks.adb: Increase default stack size for targets
	using stack limit checking.

2015-11-18  Jose Ruiz  <ruiz@adacore.com>

	* a-interr.adb, a-interr.ads (Ada.Interrupts.Get_CPU): Add this
	function that was added to Ada 2005 returning the processor where
	interrupt handlers execute.

2015-11-18  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb (Is_Pure_Barrier): Handle expanded component
	declaration of a protected definition.

From-SVN: r230529
2015-11-18 11:23:05 +01:00
Arnaud Charlet 3a2b145788 [multiple changes]
2015-11-18  Ed Falis  <falis@adacore.com>

	* s-soflin.adb, s-stchop-vxworks.adb: Code clean ups.

2015-11-18  Gary Dismukes  <dismukes@adacore.com>

	* bcheck.adb: Minor editorial changes.

From-SVN: r230528
2015-11-18 11:20:28 +01:00
Arnaud Charlet 5a99fda7cc [multiple changes]
2015-11-18  Arnaud Charlet  <charlet@adacore.com>

	* interfac.ads (Unsigned_24): New type.
	* sem_ch13.adb (Validate_Unchecked_Conversion): Disable error on
	unconstrained arrays in Relaxed_RM_Semantics mode.

2015-11-18  Vincent Celier  <celier@adacore.com>

	* bcheck.adb (Check_Consistent_Dynamic_Elaboration_Checking): No
	warning is withed unit is the interface of a Stand-Alone Library.

From-SVN: r230527
2015-11-18 11:12:27 +01:00
Arnaud Charlet 1d74252db8 [multiple changes]
2015-11-18  Thomas Quinot  <quinot@adacore.com>

	* s-os_lib.ads, s-os_lib.adb(Normalize_Pathname): Support the case of
	an unresolved Directory argument, by recursively resolving it
	against the current dir.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Process_Formals): A function declaration that
	returns a class-wide type must have freeing deferred, so that it
	is not frozen before the class-wide type and its root type are
	frozen. This is significant when there may be a limited view of
	the class_wide type in another package.

From-SVN: r230526
2015-11-18 11:10:46 +01:00
Arnaud Charlet 2f54ef3d56 [multiple changes]
2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Has_Non_Null_Refinement): Rename to
	Has_Non_Null_Visible_Refinement.
	(Has_Null_Refinement): Rename to Has_Null_Visible_Refinement.
	* einfo.ads Update the documentation of
	attribute Has_Non_Null_Refinement and attribute Has_Null_Refinement.
	(Has_Non_Null_Refinement): Rename to Has_Non_Null_Visible_Refinement
	and update occurrences in entities.
	(Has_Null_Refinement): Rename to Has_Null_Visible_Refinement and update
	occurrences in entities.
	* sem_prag.adb (Check_In_Out_States): Update the calls to
	Has_[Non_]Null_Refinement.
	(Check_Input_States): Update the
	calls to Has_[Non_]Null_Refinement.
	(Check_Output_States): Update the calls to Has_[Non_]Null_Refinement.
	(Check_Proof_In_States): Update the calls to Has_[Non_]Null_Refinement.
	(Collect_Global_Item): Update the calls to Has_[Non_]Null_Refinement.
	(Is_Null_Refined_State): Update the calls to Has_[Non_]Null_Refinement.
	(Match_Item): Update the calls to Has_[Non_]Null_Refinement.
	* sem_util.adb (Has_Non_Null_Refinement): New routine.
	(Has_Null_Refinement): New routine.
	* sem_util.ads (Has_Non_Null_Refinement): New routine.
	(Has_Null_Refinement): New routine.

2015-11-18  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb: Minor reformatting and typo fixes.

From-SVN: r230525
2015-11-18 11:08:00 +01:00
Hristian Kirtchev d930784028 sem_ch4.adb: Minor reformatting.
2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch4.adb: Minor reformatting.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Expand_Subtype_From_Expr): Add new formal
	parameter Related_Id and propagate it to Make_Subtype_From_Expr.
	(Make_Subtype_From_Expr): Add new formal parameter
	Related_Id. Create external entities when requested by the caller.
	* exp_util.ads (Expand_Subtype_From_Expr): Add new formal
	parameter Related_Id. Update the comment on usage.
	(Make_Subtype_From_Expr): Add new formal parameter
	Related_Id. Update the comment on usage.
	* sem_ch3.adb (Analyze_Object_Declaration): Add local variable
	Related_Id. Generate an external constrained subtype when the
	object is a public symbol.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Update the grammars of pragmas
	Abstract_State, Depends, Global, Initializes, Refined_Depends,
	Refined_Global and Refined_State.

From-SVN: r230524
2015-11-18 11:05:58 +01:00
Arnaud Charlet 5904016a5c [multiple changes]
2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Has_Full_Default_Initialization):
	Perform the test for the presence of pragma
	Default_Initial_Condition prior to the specialized type
	checks. Add a missing case where the lack of a pragma argument
	yields full default initialization.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Entity_Name): Do not check
	for elaboration issues when a variable appears as the name of
	an object renaming declaration as this constitutes an aliasing,
	not a read.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Overlap_Check): An actual that is an aggregate
	cannot overlap with another actual, and no check should be
	generated for it.
	* targparm.ads: Fix typos.

2015-11-18  Pascal Obry  <obry@adacore.com>

	* adaint.c: Routine __gnat_killprocesstree only implemented on
	Linux and Windows.

2015-11-18  Pascal Obry  <obry@adacore.com>

	* g-ctrl_c.adb: Minor style fixes.

From-SVN: r230523
2015-11-18 11:03:44 +01:00
Arnaud Charlet 287aa0ed92 [multiple changes]
2015-11-18  Pascal Obry  <obry@adacore.com>

	* adaint.c, s-os_lib.adb, s-os_lib.ads (Kill_Process_Tree): New.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Check_Nonvolatile_Function_Profile): Place the error
	message concerning the return type on the result definition.
	(Is_Volatile_Function): A function with a parameter of a protected
	type is a protected function if it is defined within a protected
	definition.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Container_Indexing): When building the
	parameter list for the function call on indexing functions,
	preserve overloading of the parameters, which may themselves be
	generalized indexing operations.

From-SVN: r230522
2015-11-18 10:38:46 +01:00
Arnaud Charlet 9bd6766df1 re PR ada/68345 (gnat build broken on dragonfly due to omission of r229342)
2015-11-13  Arnaud Charlet  <charlet@adacore.com>
        
	PR ada/68345
	* s-osinte-dragonfly.ads (Get_Page_Size): C function returns an int.

From-SVN: r230373
2015-11-14 10:09:01 +01:00
David Malcolm ebedc9a341 Source range tracking in libcpp and C FE, with bit-packing optimization
This patch combines:
  [PATCH 05/10] Add ranges to libcpp tokens (via ad-hoc data, unoptimized)
  [PATCH 06/10] Track expression ranges in C frontend
  [PATCH 07/10] Add plugin to recursively dump the source-ranges in a tree (v2)
  [PATCH 08/10] Wire things up so that libcpp users get token underlines
  [PATCH 09/10] Delay some resolution of ad-hoc locations, preserving ranges
  [PATCH 10/10] Compress short ranges into source_location
  [PATCH] libcpp: add examples to source_location description
along with fixes for the nits identified during review.

gcc/ChangeLog:
	* Makefile.in (OBJS): Add gcc-rich-location.o.
	* diagnostic.c (diagnostic_append_note): Pass line_table to
	rich_location ctor.
	(emit_diagnostic): Likewise.
	(inform): Likewise.
	(inform_n): Likewise.
	(warning): Likewise.
	(warning_at): Likewise.
	(warning_n): Likewise.
	(pedwarn): Likewise.
	(permerror): Likewise.
	(error): Likewise.
	(error_n): Likewise.
	(error_at): Likewise.
	(sorry): Likewise.
	(fatal_error): Likewise.
	(internal_error): Likewise.
	(internal_error_no_backtrace): Likewise.
	(source_range::debug): Likewise.
	* gcc-rich-location.c: New file.
	* gcc-rich-location.h: New file.
	* genmatch.c (fatal_at): Pass line_table to rich_location ctor.
	(warning_at): Likewise.
	* gimple.h (gimple_set_block): Use set_block function.
	* input.c (dump_line_table_statistics): Dump stats on how many
	ranges were optimized vs how many needed ad-hoc table.
	(write_digit_row): Add "map" param; use its range_bits
	to calculate the per-character offset.
	(dump_location_info): Print the range and column bits for each
	ordinary map.  Use the range bits to calculate the per-character
	offset.  Pass the map as a new param to the various calls to
	write_digit_row.  Eliminate uses of
	ORDINARY_MAP_NUMBER_OF_COLUMN_BITS.
	* print-tree.c (print_node): Print any source range information.
	* rtl-error.c (diagnostic_for_asm): Likewise.
	* toplev.c (general_init): Initialize line_table's
	default_range_bits.
	* tree-cfg.c (move_block_to_fn): Likewise.
	(move_block_to_fn): Likewise.
	* tree-inline.c (copy_phis_for_bb): Likewise.
	* tree.c (tree_set_block): Likewise.
	(get_pure_location): New function.
	(set_source_range): New functions.
	(set_block): New function.
	(set_source_range): New functions.
	* tree.h (CAN_HAVE_RANGE_P): New.
	(EXPR_LOCATION_RANGE): New.
	(EXPR_HAS_RANGE): New.
	(get_expr_source_range): New inline function.
	(DECL_LOCATION_RANGE): New.
	(set_source_range): New decls.
	(get_decl_source_range): New inline function.

gcc/ada/ChangeLog:
	* gcc-interface/trans.c (Sloc_to_locus): Add line_table param when
	calling linemap_position_for_line_and_column.

gcc/c-family/ChangeLog:
	* c-common.c (c_fully_fold_internal): Capture existing souce_range,
	and store it on the result.
	* c-opts.c (c_common_init_options): Set
	global_dc->colorize_source_p.

gcc/c/ChangeLog:
	* c-decl.c (warn_defaults_to): Pass line_table to
	rich_location ctor.
	* c-errors.c (pedwarn_c99): Likewise.
	(pedwarn_c90): Likewise.
	* c-parser.c (set_c_expr_source_range): New functions.
	(c_token::get_range): New method.
	(c_token::get_finish): New method.
	(c_parser_expr_no_commas): Call set_c_expr_source_range on the ret
	based on the range from the start of the LHS to the end of the
	RHS.
	(c_parser_conditional_expression): Likewise, based on the range
	from the start of the cond.value to the end of exp2.value.
	(c_parser_binary_expression): Call set_c_expr_source_range on
	the stack values for TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
	(c_parser_cast_expression): Call set_c_expr_source_range on ret
	based on the cast_loc through to the end of the expr.
	(c_parser_unary_expression): Likewise, based on the
	op_loc through to the end of op.
	(c_parser_sizeof_expression) Likewise, based on the start of the
	sizeof token through to either the closing paren or the end of
	expr.
	(c_parser_postfix_expression): Likewise, using the token range,
	or from the open paren through to the close paren for
	parenthesized expressions.
	(c_parser_postfix_expression_after_primary): Likewise, for
	various kinds of expression.
	* c-tree.h (struct c_expr): Add field "src_range".
	(c_expr::get_start): New method.
	(c_expr::get_finish): New method.
	(set_c_expr_source_range): New decls.
	* c-typeck.c (parser_build_unary_op): Call set_c_expr_source_range
	on ret for prefix unary ops.
	(parser_build_binary_op): Likewise, running from the start of
	arg1.value through to the end of arg2.value.

gcc/cp/ChangeLog:
	* error.c (pedwarn_cxx98): Pass line_table to rich_location ctor.

gcc/fortran/ChangeLog:
	* error.c (gfc_warning): Pass line_table to rich_location ctor.
	(gfc_warning_now_at): Likewise.
	(gfc_warning_now): Likewise.
	(gfc_error_now): Likewise.
	(gfc_fatal_error): Likewise.
	(gfc_error): Likewise.
	(gfc_internal_error): Likewise.

gcc/testsuite/ChangeLog:
	* gcc.dg/diagnostic-token-ranges.c: New file.
	* gcc.dg/diagnostic-tree-expr-ranges-2.c: New file.
	* gcc.dg/plugin/diagnostic-test-expressions-1.c: New file.
	* gcc.dg/plugin/diagnostic-test-show-trees-1.c: New file.
	* gcc.dg/plugin/diagnostic_plugin_show_trees.c: New file.
	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c (get_loc): Add
	line_table param when calling
	linemap_position_for_line_and_column.
	(test_show_locus): Pass line_table to rich_location ctors.
	(plugin_init): Remove setting of global_dc->colorize_source_p.
	* gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.c:
	New file.
	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add
	diagnostic_plugin_test_tree_expression_range.c,
	diagnostic-test-expressions-1.c, diagnostic_plugin_show_trees.c,
	and diagnostic-test-show-trees-1.c.

libcpp/ChangeLog:
	* errors.c (cpp_diagnostic): Pass pfile->line_table to
	rich_location ctor.
	(cpp_diagnostic_with_line): Likewise.
	* include/cpplib.h (struct cpp_token): Update comment for src_loc
	to indicate that the range of the token is "baked into" the
	source_location.
	* include/line-map.h (source_location): Update the descriptive
	comment to reflect the packing scheme for short ranges, adding
	worked examples of location encoding.
	(struct line_map_ordinary): Drop field "column_bits" in favor
	of field "m_column_and_range_bits"; add field "m_range_bits".
	(ORDINARY_MAP_NUMBER_OF_COLUMN_BITS): Delete.
	(location_adhoc_data): Add source_range field.
	(struct line_maps): Add fields "default_range_bits",
	"num_optimized_ranges" and "num_unoptimized_ranges".
	(get_combined_adhoc_loc): Add source_range param.
	(get_range_from_loc): New declaration.
	(pure_location_p): New prototype.
	(COMBINE_LOCATION_DATA):  Add source_range param.
	(SOURCE_LINE): Update for renaming of column_bits.
	(SOURCE_COLUMN): Likewise.  Shift the column right by the map's
	range_bits.
	(LAST_SOURCE_LINE_LOCATION): Update for renaming of column_bits.
	(linemap_position_for_line_and_column): Add line_maps * params.
	(rich_location::rich_location): Likewise.
	* lex.c (_cpp_lex_direct): Capture the range of the token, baking
	it into token->src_loc via a call to COMBINE_LOCATION_DATA.
	* line-map.c (LINE_MAP_MAX_COLUMN_NUMBER): Reduce from 1U << 17 to
	1U << 12.
	(location_adhoc_data_hash): Add the src_range into
	the hash value.
	(location_adhoc_data_eq): Require equality of the src_range
	values.
	(can_be_stored_compactly_p): New function.
	(get_combined_adhoc_loc): Add src_range param, and store it,
	via a bit-packing scheme for short ranges, otherwise within the
	lookaside table.  Remove the requirement that data is non-NULL.
	(get_range_from_adhoc_loc): New function.
	(get_range_from_loc): New function.
	(pure_location_p): New function.
	(linemap_add): Ensure that start_location has zero for the
	range_bits, unless we're past LINE_MAP_MAX_LOCATION_WITH_COLS.
	Initialize range_bits to zero.  Assert that the start_location
	is "pure".
	(linemap_line_start): Assert that the
	column_and_range_bits >= range_bits.
	Update determinination of whether we need to start a new map
	using the effective column bits, without the range bits.
	Use the set's default_range_bits in new maps, apart from
	those with column_bits == 0, which should also have 0 range_bits.
	Increase the column bits for new maps by the range bits.
	When adding lines to an existing map, use set->highest_line
	directly rather than offsetting highest by SOURCE_COLUMN.
	Add assertions to sanity-check the return value.
	(linemap_position_for_column): Offset to_column by range_bits.
	Update set->highest_location if necessary.
	(linemap_position_for_line_and_column): Add line_maps * param.
	Update the calculation to offset the column by range_bits, and
	conditionalize it on being <= LINE_MAP_MAX_LOCATION_WITH_COLS.
	Bound it by LINEMAPS_MACRO_LOWEST_LOCATION.  Update
	set->highest_location if necessary.
	(linemap_position_for_loc_and_offset): Handle ad-hoc locations;
	pass "set" to linemap_position_for_line_and_column.
	(linemap_macro_map_loc_unwind_toward_spelling): Add line_maps
	param.  Handle ad-hoc locations.
	(linemap_location_in_system_header_p): Pass on "set" to call to
	linemap_macro_map_loc_unwind_toward_spelling.
	(linemap_macro_loc_to_spelling_point): Retain ad-hoc locations.
	Pass on "set" to call to
	linemap_macro_map_loc_unwind_toward_spelling.
	(linemap_resolve_location): Retain ad-hoc locations.  Pass on
	"set" to call to linemap_macro_map_loc_unwind_toward_spelling.
	(linemap_unwind_toward_expansion):  Pass on "set" to call to
	linemap_macro_map_loc_unwind_toward_spelling.
	(linemap_expand_location): Extract the data pointer before
	extracting the location.
	(rich_location::rich_location): Add line_maps param; use it to
	extract the range from the source_location.
	* location-example.txt: Regenerate, showing new representation.

From-SVN: r230331
2015-11-13 16:29:59 +00:00
Arnaud Charlet 9ba9f4c015 [multiple changes]
2015-11-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb: Minor reformatting.

2015-11-13  Pascal Obry  <obry@adacore.com>

	* adaint.c: Ensure that it is possible to get killed process
	status on Windows.

From-SVN: r230318
2015-11-13 14:18:02 +01:00
Arnaud Charlet 90b510e4aa [multiple changes]
2015-11-13  Eric Botcazou  <ebotcazou@adacore.com>

	* sigtramp-ios.c, init.c: Minor cosmetic tweaks.

2015-11-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-gloloc.adb, g-debpoo.adb: Minor reformatting.

2015-11-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): Improve error
	message for the case the iterable name (array or container)
	is a component that depends on a discriminant.

2015-11-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Indicate_Name_And_Type): If the analysis of
	one interpretation succeeds, set type of name in call, for
	completeness.
	(Try_Container_Indexing): If there are multiple indexing
	functions, collect possible interpretations that are compatible
	with given parameters, and add implicit dereference types when
	present.
	* sem_util.adb (Build_Explicit_Dereference): If the expression
	is an overloaded function call use the given discriminant to
	resolve the call, and set properly the type of the call and of
	the resulting dereference.

2015-11-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Pragma Constant_After_Elaboration can
	now apply to a variable without an initialization expression.

2015-11-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb (Add_Matching_Formals): Parameter Actuals is now of mode
	IN OUT. Create a new list when list Actuals is not present.
	(Build_Contract_Wrapper): Create the wrapper
	only when the entry has at least on checked contract case or
	pre/postcondition. Ensure that the call to the original entry
	lacks an actual parameter list when the entry appears without
	formal parameters.
	(Expand_Entry_Declaration): Code cleanup.

2015-11-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Continue the analysis
	after encountering an illegal aspect Part_Of.

2015-11-13  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference, case
	Overlaps_Storage): Add copies for nodes that represent the integer
	addresses of the two actuals, to prevent identical nodes in the
	tree, which the backend cannot handle properly.

From-SVN: r230316
2015-11-13 14:14:44 +01:00
Arnaud Charlet 6672e40209 [multiple changes]
2015-11-13  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Check_Private_Overriding): Change
	name of Parent_Is_Private to be Overrides_Private_Part_Op,
	and use Unit_Declaration_Node.

2015-11-13  Bob Duff  <duff@adacore.com>

	* sinfo.ads: Minor comment fix.
	* sem_ch6.adb: Minor reformatting.

2015-11-13  Jerome Lambourg  <lambourg@adacore.com>

	* tracebak.c: Do not use the GCC Unwinder to retrieve traceback
	for x86_64-vx7.

2015-11-13  Eric Botcazou  <ebotcazou@adacore.com>

	* init.c [Darwin/arm64]: Fix typo.
	* sigtramp-armios.c: Remove.
	* sigtramp-ios.c: New file.

2015-11-13  Doug Rupp  <rupp@adacore.com>

	* s-stchop-vxworks.adb (Set_Stack_Limit_For_Current_Task): Set stack
	limit to 12000 decimal vice 12000 hexadecimal.

From-SVN: r230315
2015-11-13 14:11:30 +01:00
Arnaud Charlet bc38dbb422 [multiple changes]
2015-11-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb, exp_fixd.adb, exp_util.adb, g-debpoo.adb,
	impunit.adb, scos.ads, sem_ch4.adb, sem_prag.adb,
	s-stchop-vxworks.adb: Minor reformatting.

2015-11-13  Tristan Gingold  <gingold@adacore.com>

	* s-rident.ads (Profile_Info): Enable Pure_Barriers for
	GNAT_Extended_Ravenscar.

2015-11-13  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Check_Private_Overriding): Detect the special
	case where the overriding subprogram is overriding a subprogram
	that was declared in the same private part.

From-SVN: r230314
2015-11-13 14:08:51 +01:00
Gary Dismukes f7259dd4be exp_ch9.adb: Minor reformatting and typo fixes.
2015-11-13  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch9.adb: Minor reformatting and typo fixes.

From-SVN: r230308
2015-11-13 12:32:27 +01:00
Arnaud Charlet b8c9f7afb7 [multiple changes]
2015-11-13  Eric Botcazou  <ebotcazou@adacore.com>

	* init.c [Darwin/arm64]: Move __gnat_sigtramp implementation to...
	(__gnat_map_signal): New function.
	(__gnat_error_handler):
	Adjust the context and call above function.
	* sigtramp-armios.c: ...here.  New file.

2015-11-13  Arnaud Charlet  <charlet@adacore.com>

	* bcheck.adb (Check_Consistent_Restrictions): Do not check
	consistency of No_Dependence for runtime units.

2015-11-13  Tristan Gingold  <gingold@adacore.com>

	* s-rident.ads (Restriction_Id): Add Pure_Barriers.
	* restrict.ads (Implementation_Restriction): Add Pure_Barriers.
	* exp_ch9.adb (Expand_Entry_Barrier): Create
	Is_Simple_Barrier_Name function, add Is_Pure_Barrier and
	Check_Pure_Barriers.

2015-11-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Get_Cursor_Type): To determine whether a function
	First is the proper Iterable primitive, use the base type of the
	first formal rather than the type. This is needed in the unusual
	case where the Iterable aspect is specified for an integer type.

From-SVN: r230305
2015-11-13 12:28:27 +01:00
Arnaud Charlet 4e9ee5951c [multiple changes]
2015-11-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Constant_Indexing_OK): If the indexing is the
	prefix of a procedure call assume that constant indexing is
	not chosen.

2015-11-13  Eric Botcazou  <ebotcazou@adacore.com>

	* sigtramp.h: Fix formatting throughout, do not include other
	headers, add missing preprocessor condition and 'extern' keywords.
	* sigtramp-armdroid.c: Include <sys/ucontext.h>.
	* init.c [Android]: Likewise.

From-SVN: r230304
2015-11-13 12:18:17 +01:00
Arnaud Charlet 7dae9ca0a9 [multiple changes]
2015-11-13  Eric Botcazou  <ebotcazou@adacore.com>

	* init.c [Darwin/arm64] (__gnat_sigtramp): Do not increment PC,
	fix CFI and add return sequence.

2015-11-13  Ed Schonberg  <schonberg@adacore.com>

	* exp_fixd.adb (Expand_Convert_Float_To_Fixed): If the conversion
	comes from an attribute reference 'Round, the operation must
	round and not truncate.
	* sem_res.adb, sem_ch6.adb: Minor editing.

From-SVN: r230302
2015-11-13 12:14:34 +01:00
Arnaud Charlet aef44df1e3 [multiple changes]
2015-11-12  Philippe Gil  <gil@adacore.com>

	* g-debpoo.adb (Print_Address): print address in hexadecimal as
	in previous GNAT version (without secondary stack use)
	(Deallocate): Deallocate calling once Unlock_Task.all when it
	raise exception.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Subtype_Declaration): Remove redundant
	copying of dimensions from parent type to subtype. This is
	properly done in Analyze_Dimension.
	* sem_dim.adb (Analyze_Dimension_Subtype_Declaration): Add entity
	to error message, so that reference to entity can be formatted
	properly.
	* opt.ads: Fix typo.

From-SVN: r230254
2015-11-12 14:28:05 +01:00
Arnaud Charlet aff557c74c [multiple changes]
2015-11-12  Bob Duff  <duff@adacore.com>

	* impunit.adb, lib-xref.ads, restrict.ads, scos.ads, sem_attr.ads,
	types.ads: Get rid of some global variables.
	* output.adb, output.ads: Move some global variables to the body.

2015-11-12  Yannick Moy  <moy@adacore.com>

	* lib-xref-spark_specific.adb
	(Is_Constant_Object_Without_Variable_Input): Add special case
	for imported constants.

2015-11-12  Philippe Gil  <gil@adacore.com>

	* g-debpoo.adb (Allocate): Avoid having allocations not handled.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): If the expression is
	a real literal and the context type has static bounds, remove
	range check when possible.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Collect_Primitive_Operations): If the type is
	derived from a type declared elsewhere that has an incomplete
	type declaration, the primitives are found in the scope of the
	type nat that of its ancestor.

2015-11-12  Arnaud Charlet  <charlet@adacore.com>

	* switch-c.adb, debug.adb, osint-c.adb, gnat1drv.adb: Remove -gnatd.V
	debug switch.
	* exp_aggr.adb, exp_util.adb: Fix typos.

2015-11-12  Jerome Lambourg  <lambourg@adacore.com>

	* init.c: Properly adjust PC values in case of signals.

2015-11-12  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Check_Arg_Is_Library_Level_Local_Name): A
	pragma that comes from an aspect does not "come from source",
	so we need to test whether it comes from an aspect.

From-SVN: r230253
2015-11-12 14:25:40 +01:00
Arnaud Charlet 95bcd2a700 switch-c.adb, [...]: Reserve -gnateg for generation of C headers.
2015-11-12  Arnaud Charlet  <charlet@adacore.com>

	* switch-c.adb, gnat1drv.adb, opt.ads: Reserve -gnateg for generation
	of C headers.

From-SVN: r230248
2015-11-12 13:00:56 +01:00
Arnaud Charlet d1915cb82c [multiple changes]
2015-11-12  Arnaud Charlet  <charlet@adacore.com>

	* back_end.adb, opt.ads (Debugger_Level): Update comment.
	(Scan_Back_End_Switches): Set Debugger_Level.

2015-11-12  Bob Duff  <duff@adacore.com>

	* fmap.adb, debug.ads, checks.adb, exp_ch11.adb: Minor edits.

2015-11-12  Doug Rupp  <rupp@adacore.com>

	* s-stchop-vxworks.adb (Stack_Limit): Export vice Import.

2015-11-12  Gary Dismukes  <dismukes@adacore.com>

	* sem_dim.adb: Minor reformatting.

From-SVN: r230246
2015-11-12 12:59:18 +01:00
Arnaud Charlet df9ad6bc49 [multiple changes]
2015-11-12  Gary Dismukes  <dismukes@adacore.com>

	* gnat1drv.adb, opt.ads: Minor reformatting.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Number_Declaration): Call Analyze_Dimension,
	to propagate dimension information from expression to named
	number.
	* sem_dim.ads: Documentation:  number declaration and explicit
	dereference can carry dimension information.
	* sem_dim.adb (Analyze_Dimension_Number_Declaration): New
	procedure, to propagate dimension information from expression
	of declaration to named number, whose type becomes one of the
	dimensioned base types rather than universal real.
	(Analyze_Dimension_Binary_Op):
	a) If one operand is a literal that is the value of a declared
	constant after constant-foloding, use the dimensions of the
	declared constant.
	b) If an operand is a literal that is a contant-folded expression,
	and expander is active, do not report a dimension mismatch if
	literal does not carry them, because dimension matching will
	have been checked previously.

From-SVN: r230244
2015-11-12 12:54:53 +01:00
Arnaud Charlet 549cc9c2bc [multiple changes]
2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Selected_Component): In a synchronized
	body, a reference to an operation of an object of the same
	synchronized type was always interpreted as a reference to the
	current instance. This is not always the case, as the prefix of
	the reference may designate an object of the same type declared
	in the enclosing context prior to the body.

2015-11-12  Arnaud Charlet  <charlet@adacore.com>

	* impunit.ads, impunit.adb (Get_Kind_Of_File): New. Cleaned up
	implementation from previous Get_Kind_Of_Unit.
	(Get_Kind_Of_Unit): Reimplemented using Get_Kind_Of_File.
	* debug.adb: Remove d.4 switch, no longer used.
	* opt.ads: Update doc on Debugger_Level.
	* gnat1drv.adb: Code clean ups.
	* sinput.ads: minor fix in comment

2015-11-12  Bob Duff  <duff@adacore.com>

	* sinfo.adb, sinfo.ads, sem_ch6.adb, atree.ads: Add
	Was_Expression_Function flag, which is set in sem_ch6.adb when
	converting an Expression_Function into a Subprogram_Body.

2015-11-12  Pascal Obry  <obry@adacore.com>

	* usage.adb: Update overflow checking documentation.

From-SVN: r230243
2015-11-12 12:52:59 +01:00
Arnaud Charlet b3083540f5 [multiple changes]
2015-11-12  Tristan Gingold  <gingold@adacore.com>

	* snames.ads-tmpl: Name_Gnat_Extended_Ravenscar: New identifier.
	* s-rident.ads (Profile_Name): Add GNAT_Extended_Ravenscar.
	(Profile_Info): Add new entry for GNAT_Extended_Ravenscar.
	* sem_prag.adb (Set_Ravenscar_Profile): Add Profile parameter
	to handle various ravenscar profiles. Adjust error messages.
	(Analyze_Pragma): Handle GNAT_Extended_Ravenscar profile.
	* targparm.adb (Get_Target_Parameters): Handle
	GNAT_Extended_Ravenscar profile.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_warn.adb (Warn_On_Unreferenced_Entity): If the entity is an
	Out_Parameter the front-end does not emit any warning on it, so
	do not suppress warnings on the entity because the backend might
	be able to determine an uninitialized path and warn accordingly.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Diagnose an attempt
	to reference an internal entity from a synchronized type from
	within the body of that type, when the prefix of the selected
	component is not the current instance.

2015-11-12  Ed Falis  <falis@adacore.com>

	* s-stchop-vxworks.adb: Clean up in stack checking code.

2015-11-12  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Function_Call):
	Test Expression (N) in N_Type_Conversion cases as well,
	since conversions can occur in actual parameter contexts.
	(Make_Build_In_Place_Call_In_Anonymous_Context): Retrieve
	function call from Expression (Func_Call) when Nkind (Func_Call)
	is N_Type_Conversion, since conversions are allowed in "anonymous"
	contexts (specifically, as actual parameters).

From-SVN: r230242
2015-11-12 12:46:35 +01:00
Arnaud Charlet 7408c4a5e0 sem_ch4.adb (analyze_If_Expression): Reject IF-expression where THEN-expression is overloaded and none of its...
2015-11-12  Thomas Quinot  <quinot@adacore.com>

	* sem_ch4.adb (analyze_If_Expression): Reject IF-expression where
	THEN-expression is overloaded and none of its interpretation is
	compatible with the ELSE-expression.

From-SVN: r230241
2015-11-12 12:42:00 +01:00