Commit Graph

153425 Commits

Author SHA1 Message Date
Arnaud Charlet
c16fa01e7e Code clean up.
From-SVN: r247213
2017-04-25 14:39:28 +02:00
Arnaud Charlet
7738270b0c [multiple changes]
2017-04-25  Yannick Moy  <moy@adacore.com>

	* freeze.adb (Freeze_Record_Type): Remove obsolete
	rule on volatile tagged record restriction on SPARK code.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (minor) Fix SPARK RM reference.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* sem_util.adb, sem_util.ads (Unique_Defining_Entity): Update
	comment to reflect which entity is chosen as unique entity.
	(Unique_Entity): Return full view instead of private spec for
	protected type or task type. Fix possible incorrect access when
	called on entry.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_res.adb (Set_Slice_Subtype): Treat specially bit-packed
	array types only instead of all packed array types.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Conforming_Types): If type of formal as a specified
	dimension system, verify that dimensions of both match.
	(Check_Conformance): Add error message in case of dimension
	mismatch.
	* sem_dim.ads, sem_dim.adb (Dimensions_Match): New utility
	predicate.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

	* gnatxref.adb, gnatfind.adb: Avoid using the term project file,
	confusing.

From-SVN: r247212
2017-04-25 14:38:24 +02:00
Yannick Moy
e4b1cd7656 sem_util.adb: Minor refactoring.
2017-04-25  Yannick Moy  <moy@adacore.com>

	* sem_util.adb: Minor refactoring.
	* freeze.adb (Freeze_Record_Type): Fix checking of SPARK RM 7.1.3(5).

From-SVN: r247211
2017-04-25 14:35:59 +02:00
Arnaud Charlet
245fee17cb Minor reformatting.
From-SVN: r247210
2017-04-25 14:33:34 +02:00
Arnaud Charlet
3e3bc136d4 [multiple changes]
2017-04-25  Claire Dross  <dross@adacore.com>

	* sem_prag.adb (Collect_Inherited_Class_Wide_Conditions): Go to
	ultimate alias when accessing overridden operation. Indeed, if the
	overridden operation is itself inherited, it won't have any explicit
	contract.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_warn.adb (Warn_On_Overlapping_Actuals): There can be no
	overlap if the two formals have different types, because formally
	the corresponding actuals cannot designate the same objects.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Dimensions_Of_Operand): minot cleanups: a) If
	dimensions are present from context, use them.	b) If operand is
	a static constant rewritten as a literal, obtain the dimensions
	from the original declaration, otherwise use dimensions of type
	established from context.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Is_Effectively_Volatile): Protect against base type
	of array that is private.

From-SVN: r247209
2017-04-25 14:33:25 +02:00
Richard Biener
bed3fd4637 re PR tree-optimization/80492 (Wrong code when unrolling a loop with inline asm and local regs)
2017-04-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/80492
	* alias.c (compare_base_decls): Handle registers with asm
	specification conservatively.
	* tree-ssa-alias.c (decl_refs_may_alias_p): Handle
	compare_base_decls returning dont-know properly.

	* gcc.dg/pr80492.c: New testcase.

From-SVN: r247208
2017-04-25 12:15:44 +00:00
Arnaud Charlet
ca0b6141fa [multiple changes]
2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch3.adb, exp_util.adb, sem_prag.adb, exp_ch4.adb: Minor
	reformatting.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* a-ngelfu.adb, a-ngelfu.ads: Add SPARK_Mode On on spec, Off
	on body.

From-SVN: r247207
2017-04-25 14:11:12 +02:00
Arnaud Charlet
5f8d3dd5b3 [multiple changes]
2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Check_Dispatching_Context): Add guard to refine
	the check that recognizes a call to a private overridding and
	replaces the called subprogram with its alias.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb: Minor reformatting.

From-SVN: r247206
2017-04-25 14:09:22 +02:00
Arnaud Charlet
0bcee27558 Code cleanups.
From-SVN: r247205
2017-04-25 14:08:24 +02:00
Arnaud Charlet
b554177a8f [multiple changes]
2017-04-25  Justin Squirek  <squirek@adacore.com>

	* exp_ch3.adb (Freeze_Type): Add condition to always treat
	interface types as a partial view of a private type for the
	generation of invariant procedure bodies.
	* exp_util.adb, exp_util.ads (Add_Inherited_Invariants):
	Add a condition to get the Corresponding_Record_Type for
	concurrent types, add condition to return in the absence of a
	class in the pragma, remove call to Replace_Type_References,
	and add call to Replace_References.
	(Add_Interface_Invariatns),
	(Add_Parent_Invariants): Modify call to Add_Inherited_Invariants
	to including the working type T.
	(Add_Own_Invariants): Remove
	legacy condition for separate units, remove dispatching for ASIS
	and save a copy of the expression in the pragma expression.
	(Build_Invariant_Procedure_Body): Default initalize vars,
	remove return condition on interfaces, always use the
	private type for interfaces, and move the processing of types
	until after the processing of invariants for the full view.
	(Build_Invariant_Procedure_Declaration): Remove condition
	to return if an interface type is encountered and add
	condition to convert the formal parameter to its class-wide
	counterpart if Work_Typ is abstract.
	(Replace_Type): Add call to Remove_Controlling_Arguments.
	(Replace_Type_Ref): Remove class-wide dispatching for the current
	instance of the type.
	(Replace_Type_References): Remove parameter "Derived"
	(Remove_Controlling_Arguments): Created in order to removing
	the controlliong argument from calls to primitives in the case
	of the formal parameter being an class-wide abstract type.
	* sem_ch3.adb (Build_Assertion_Bodies_For_Type): Almost identical
	to the change made to Freeze_Type in exp_ch3. Add a condition
	to treat interface types as a partial view.
	* sem_prag.adb (Analyze_Pragma): Modify parameters in the call
	to Build_Invariant_Procedure_Declaration to properly generate a
	"partial" invariant procedure when Typ is an interface.

2017-04-25  Bob Duff  <duff@adacore.com>

	* a-numeri.ads: Go back to using brackets encoding for the Greek
	letter pi.

From-SVN: r247204
2017-04-25 14:07:59 +02:00
Senthil Kumar Selvaraj
c9e9c3ac4d Fix broken attr-alloc_size-10.c for avr
Integer promotion combined with equal sizes for short and int (16 bits)
causes overflow warnings when expanding the TEST macro for USHRT_MAX.

Fix by explicitly disabling overflow warnings for targets with !int32plus.

gcc/testsuite/

2017-04-25  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

	* gcc.dg/attr-alloc_size-10.c: Ignore overflow warnings
	for targets with int size less than 32 bits.

From-SVN: r247203
2017-04-25 12:06:04 +00:00
Arnaud Charlet
904a2ae4e3 [multiple changes]
2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Derive_Subprogram): Implement rule in RM 6.1.1
	(10-15): if derived type T with progenitors is abstract,
	and primitive P of this type inherits non-trivial classwide
	preconditions from both a parent operation and from an interface
	operation, then the inherited operation is abstract if the parent
	operation is not null.
	* sem_disp.ads, sem_disp.adb: replace function Covers_Some_Interface
	with Covered_Interface_Op to yield the actual interface operation
	that is implemented by a given inherited operation.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Expon): Relocate left
	and right operands after performing the validity checks. Required
	because validity checks may remove side effects from the operands.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_attr.adb (Attribute_Unrestricted_Access):
	Do not disable implicit type conversion.  Required to generate
	code that displaces the pointer to reference the secondary
	dispatch table.

2017-04-25  Pascal Obry  <obry@adacore.com>

	* prj-attr.adb, snames.ads-tmpl: Add package Install's
	Required_Artifacts attribute.

From-SVN: r247202
2017-04-25 14:05:53 +02:00
Claudiu Zissulescu
ac2e1a513e [ARC] Addresses can use long immediate for offsets.
gcc/
2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.c (LEGITIMATE_OFFSET_ADDRESS_P): Delete macro.
	(legitimate_offset_address_p): New function.
	(arc_legitimate_address_p): Use above function.

From-SVN: r247201
2017-04-25 14:04:46 +02:00
Claudiu Zissulescu
1f8876c786 [ARC] Fix calling multiple inheritances.
The TARGET_ASM_OUTPUT_MI_THUNK hook doesn't take into account the
variant when we compile for PIC.

gcc/
2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.c (arc_output_mi_thunk): Emit PIC calls.

From-SVN: r247200
2017-04-25 14:04:36 +02:00
Claudiu Zissulescu
8b22ef6af9 [ARC] Use ACCL, ACCH registers whenever they are available.
gcc/
2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.c (arc_conditional_register_usage): Use ACCL,
	ACCH registers whenever they are available.

From-SVN: r247199
2017-04-25 14:04:25 +02:00
Claudiu Zissulescu
ad3d6e77aa [ARC] Make D0, D1 double regs fix when not used.
gcc/
2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.c (arc_conditional_register_usage): Make D0, D1
	double regs fix when not used.

From-SVN: r247198
2017-04-25 14:04:14 +02:00
Arnaud Charlet
8f34c90bb2 [multiple changes]
2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Same_Value): String literals are compile-time
	values, and comparing them must use Expr_Value_S.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Complete_Object_Interpretation): If an explicit
	dereference is introduced for the object, and the object is
	overloaded, do not check whether it is aliased, because it may
	include an implicit dereference.
	* sem_type.adb (Disambiguate): If two interpretations are access
	attribute types with the same designated type keep either of
	them and do not report an ambiguity.  A true ambiguity will be
	reported elsewhere.

2017-04-25  Bob Duff  <duff@adacore.com>

	* a-numeri.ads: Change the encoding of Greek letter Pi from
	brackets encoding to UTF-8.  Use pragma Wide_Character_Encoding
	to indicate the encoding. We considered using a byte order mark
	(BOM), but that causes various trouble (misc software eats the
	BOM, if you have a patch with a BOM, then it's not at the start
	of the patch, so it's not a BOM, the BOM affects with-ing files,
	etc.).
	* scng.adb, s-wchcnv.adb: Minor.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb, sem_ch8.adb, sem_disp.adb: Minor reformatting.

From-SVN: r247197
2017-04-25 14:03:43 +02:00
Claudiu Zissulescu
4f9c5d5c48 [ARC] Allow extension core registers to be used for addresses.
gcc/
2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.h (REGNO_OK_FOR_BASE_P): Consider also extension
	core registers.
	(REG_OK_FOR_INDEX_P_NONSTRICT): Likewise.
	(REG_OK_FOR_BASE_P_NONSTRICT): Likewise.

From-SVN: r247196
2017-04-25 14:03:40 +02:00
Claudiu Zissulescu
a0caeef6c8 [ARC] Differentiate between ARCv1 and ARCv2 'h'-reg class for ADD insns.
gcc/
2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.c (arc_output_addsi): Check for h-register class
	when emitting short ADD instructions.

From-SVN: r247195
2017-04-25 14:03:30 +02:00
Claudiu Zissulescu
0e03cebd10 [ARC] Differentiate between ARCv1 and ARCv2 'h'-reg class for CMP insns.
gcc/
2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md (cmpsi_cc_insn_mixed): Use 'h' register
	constraint.
	(cmpsi_cc_c_insn): Likewise.
	(cbranchsi4_scratch): Compute proper instruction length using
	compact_hreg_operand.
	* config/arc/predicates.md (compact_hreg_operand): New predicate.

From-SVN: r247194
2017-04-25 14:03:19 +02:00
Arnaud Charlet
bac865a217 Code clenups.
From-SVN: r247193
2017-04-25 14:01:32 +02:00
Arnaud Charlet
321c24f75d [multiple changes]
2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Add_Internal_Interface_Entities): Move
	Has_Non_Trivial_Precondition to sem_util. for use elsewhere.
	Improve error message on operations that inherit non-conforming
	classwide preconditions from ancestor and progenitor.
	* sem_util.ads, sem_util.adb (Has_Non_Trivial_Precondition):
	moved here from sem_ch3.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): Implement legality
	check given in RM 6.1.1 (17) concerning renamings of overriding
	operations that inherits class-wide preconditions from ancestor
	or progenitor.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Code cleanup.
	(Build_Adjust_Statements): Code cleanup.
	(Build_Finalizer): Update the initialization of
	Exceptions_OK.
	(Build_Finalize_Statements): Code cleanup.
	(Build_Initialize_Statements): Code cleanup.
	(Make_Deep_Array_Body): Update the initialization of
	Exceptions_OK.
	(Make_Deep_Record_Body): Update the initialization of Exceptions_OK.
	(Process_Object_Declaration): Generate a null exception handler only
	when exceptions are allowed.
	(Process_Transients_In_Scope): Update the initialization of
	Exceptions_OK.
	* exp_util.ads, exp_util.adb (Exceptions_In_Finalization_OK): New
	routine.
	* sem_ch11.adb (Analyze_Exception_Handlers): Do not check any
	restrictions when the handler is internally generated and the
	mode is warnings.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Has_Non_Trivial_Precondition): New predicate to
	enforce legality rule on classwide preconditions inherited from
	both an ancestor and a progenitor (RM 6.1.1 (10-13).
	* sem_disp.adb (Check_Dispatching_Context): A call to an abstract
	subprogram need not be dispatching if it appears in a precondition
	for an abstract or null subprogram.

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch10.adb: Minor typo fix.

From-SVN: r247192
2017-04-25 14:00:46 +02:00
Arnaud Charlet
6948bc18f0 * gcc-interface/Makefile.in: Cleanup VxWorks targets.
From-SVN: r247186
2017-04-25 13:03:52 +02:00
Arnaud Charlet
cc0b3bac55 Minor reformatting.
From-SVN: r247184
2017-04-25 12:54:29 +02:00
Arnaud Charlet
457cee0b84 [multiple changes]
2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* fname.adb (Is_Internal_File_Name): Arrange for the slices to
	have a length which is a power of 2.
	(Is_Predefined_File_Name): Likewise. Adjust comment.

2017-04-25  Bob Duff  <duff@adacore.com>

	* exp_aggr.adb (Component_Count): Protect the
	arithmetic from attempting to convert a value >= 2**31 to Int,
	which would otherwise raise Constraint_Error.

2017-04-25  Bob Duff  <duff@adacore.com>

	* opt.ads (Locking_Policy): Fix incorrect documentation. The
	first character of the policy name is not unique.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-fileio.adb (Name): Raise Use_Error if the file is a temp file.
	* s-ficobl.ads (Is_Temporary_File): Remove incorrect comment
	about this flag not being used. It was already used, and it is
	now used more.

From-SVN: r247183
2017-04-25 12:52:13 +02:00
Arnaud Charlet
cf9a473e64 [multiple changes]
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb Flag301 is now known as Ignore_SPARK_Mode_Pragmas.
	(Ignore_SPARK_Mode_Pragmas): New routine.
	(Set_Ignore_SPARK_Mode_Pragmas): New routine.
	(Write_Entity_Flags): Add an entry for Ignore_SPARK_Mode_Pragmas.
	* einfo.ads Add new attribute Ignore_SPARK_Mode_Pragmas and update
	related entities.
	(Ignore_SPARK_Mode_Pragmas): New routine
	along with pragma Inline.
	(Set_Ignore_SPARK_Mode_Pragmas): New routine along with pragma Inline.
	* opt.ads Rename flag Ignore_Pragma_SPARK_Mode to
	Ignore_SPARK_Mode_Pragmas_In_Instance.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
	Save and restore the value of global flag
	Ignore_SPARK_Mode_Pragmas_In_Instance. Set or reinstate the value
	of global flag Ignore_SPARK_Mode_Pragmas_In_Instance when either
	the corresponding spec or the body must ignore all SPARK_Mode
	pragmas found within.
	(Analyze_Subprogram_Declaration): Mark
	the spec when it needs to ignore all SPARK_Mode pragmas found
	within to allow the body to infer this property in case it is
	instantiated or inlined later.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Save and restore the
	value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set
	the value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance
	when the corresponding spec also ignored all SPARK_Mode pragmas
	found within.
	(Analyze_Package_Declaration): Mark the spec when
	it needs to ignore all SPARK_Mode pragmas found within to allow
	the body to infer this property in case it is instantiated or
	inlined later.
	* sem_ch12.adb (Analyze_Formal_Package_Declaration):
	Save and restore the value of flag
	Ignore_SPARK_Mode_Pragmas_In_Instance. Mark the
	formal spec when it needs to ignore all SPARK_Mode
	pragmas found within to allow the body to infer this
	property in case it is instantiated or inlined later.
	(Analyze_Package_Instantiation): Save and restore the value
	of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Mark
	the instance spec when it needs to ignore all SPARK_Mode
	pragmas found within to allow the body to infer this
	property in case it is instantiated or inlined later.
	(Analyze_Subprogram_Instantiation): Save and restore the value
	of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Mark the
	instance spec and anonymous package when they need to ignore
	all SPARK_Mode pragmas found within to allow the body to infer
	this property in case it is instantiated or inlined later.
	(Instantiate_Package_Body): Save and restore the value of global
	flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set the value of
	global flag Ignore_SPARK_Mode_Pragmas_In_Instance when the
	corresponding instance spec also ignored all SPARK_Mode pragmas
	found within.
	(Instantiate_Subprogram_Body): Save and restore the
	value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set
	the value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance
	when the corresponding instance spec also ignored all SPARK_Mode
	pragmas found within.
	* sem_prag.adb (Analyze_Pragma): Update the reference to
	Ignore_Pragma_SPARK_Mode.
	* sem_util.adb (SPARK_Mode_Is_Off): A construct which ignored
	all SPARK_Mode pragmas defined within yields mode "off".

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindgen.adb, exp_dbug.adb, errout.adb, fname.adb: Minor reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

	* exp_atag.adb (Build_CW_Membership): Add "Suppress =>
	All_Checks" to avoid generating unnecessary checks.
	* exp_ch4.adb (Expand_N_In, Make_Tag_Check): Add "Suppress =>
	All_Checks".
	* sem.ads: Fix comment.
	* expander.ads: Fix comment.
	* exp_atag.ads: Fix comment: "Index = 0" should be
	"Index >= 0".

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* s-taprop-linux.adb: Minor editorial fixes.

From-SVN: r247182
2017-04-25 12:49:34 +02:00
Arnaud Charlet
1f0bcd44fe sem_util.adb (New_Copy_Tree): Put back the declarations of the hash tables at library level.
2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_util.adb (New_Copy_Tree): Put back the declarations of the
	hash tables at library level.  Reinstate the NCT_Hash_Tables_Used
	variable and set it to True whenever the main hash table is
	populated.  Short- circuit the Assoc function if it is false
	and add associated guards.

From-SVN: r247181
2017-04-25 12:46:54 +02:00
Hristian Kirtchev
62e45e3e70 checks.adb (Insert_Valid_Check): Code cleanup.
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Insert_Valid_Check): Code cleanup.
	* exp_ch6.adb (Add_Validation_Call_By_Copy_Code): New routine.
	(Expand_Actuals): Generate proper copy-back for a validation
	variable when it acts as the argument of a type conversion.
	* sem_util.adb (Is_Validation_Variable_Reference): Augment the
	predicate to operate on type qualifications.

From-SVN: r247180
2017-04-25 12:43:14 +02:00
Hristian Kirtchev
ec40b86c77 sem_prag.adb, [...]: Minor reformatting.
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb, exp_ch6.adb, binde.adb, sem_disp.adb, s-fileio.adb:
	Minor reformatting.

From-SVN: r247179
2017-04-25 12:40:23 +02:00
Bob Duff
ca1f6b2991 sem_prag.adb (No_Return): Give an error if the pragma applies to a body.
2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (No_Return): Give an error if the pragma applies
	to a body. Specialize the error for the specless body case,
	as is done for (e.g.) pragma Convention.
	* debug.adb: Add switch -gnatd.J to disable the above legality
	checks. This is mainly for use in our test suite, to avoid
	rewriting a lot of illegal (but working) code.	It might also
	be useful to customers. Under this switch, if a pragma No_Return
	applies to a body, and the procedure raises an exception (as it
	should), the pragma has no effect. If the procedure does return,
	execution is erroneous.

2017-04-25  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Expand_Actuals): This is the
	root of the problem. It took N as an 'in out' parameter, and in
	some cases, rewrote N, but then set N to Original_Node(N). So
	the node returned in N had no Parent. The caller continued
	processing of this orphaned node. In some cases that caused a
	crash (e.g. Remove_Side_Effects climbs up Parents in a loop,
	and trips over the Empty Parent). The solution is to make N an
	'in' parameter.  Instead of rewriting it, return the list of
	post-call actions, so the caller can do the rewriting later,
	after N has been fully processed.
	(Expand_Call_Helper): Move most of Expand_Call here. It has
	too many premature 'return' statements, and we want to do the
	rewriting on return.
	(Insert_Post_Call_Actions): New procedure to insert the post-call
	actions in the appropriate place. In the problematic case,
	that involves rewriting N as an Expression_With_Actions.
	(Expand_Call): Call the new procedures Expand_Call_Helper and
	Insert_Post_Call_Actions.

From-SVN: r247178
2017-04-25 12:39:02 +02:00
Arnaud Charlet
36357cf398 [multiple changes]
2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Inherits_Class_Wide_Pre): Cleanup code, handle
	properly type derived from generic formal types, to handle
	properly modified version of ACATS 4.1B B611017.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_unst.adb (Subp_Index): Adding missing
	support for renamings and functions that return a constrained
	array type (i.e. functions for which the frontend built a
	procedure with an extra out parameter).

2017-04-25  Pascal Obry  <obry@adacore.com>

	* s-string.adb: Minor code clean-up.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-os_lib.ads, s-os_lib.adb (Non_Blocking_Wait_Process): New
	procedure.
	* adaint.h, adaint.c (__gnat_portable_no_block_wait): C support
	function for Non_Blocking_Wait_Process.

2017-04-25  Bob Duff  <duff@adacore.com>

	* prep.adb (Preprocess): Remove incorrect
	Assert. Current character can be ASCII.CR.

From-SVN: r247177
2017-04-25 12:33:46 +02:00
Arnaud Charlet
48c8c47393 [multiple changes]
2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Set_Convention_From_Pragma): Cleanup code for
	convention Stdcall, which has a number of exceptions. Convention
	is legal on a component declaration whose type is an anonymous
	access to subprogram.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch4.adb: sem_ch4.adb Various reformattings.
	(Try_One_Prefix_Interpretation): Use the base type when dealing
	with a subtype created for purposes of constraining a private
	type with discriminants.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* einfo.ads, einfo.adb (Has_Private_Extension): new attribute.
	* warnsw.ads, warnsw.adb (All_Warnings): Set warning on late
	dispatching primitives (Restore_Warnings): Restore warning on
	late dispatching primitives (Save_Warnings): Save warning on late
	dispatching primitives (Do_Warning_Switch): Use -gnatw.j/-gnatw.J
	to enable/disable this warning.
	(WA_Warnings): Set warning on late dispatching primitives.
	* sem_ch3.adb (Analyze_Private_Extension_Declaration): Remember
	that its parent type has a private extension.
	* sem_disp.adb (Warn_On_Late_Primitive_After_Private_Extension):
	New subprogram.
	* usage.adb: Document -gnatw.j and -gnatw.J.

From-SVN: r247176
2017-04-25 12:30:55 +02:00
Arnaud Charlet
94295b2593 [multiple changes]
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb, checks.adb, sem_prag.adb, eval_fat.adb: Minor
	reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

	* binde.adb (Validate): Do not pass dynamic strings
	to pragma Assert, because older compilers do not support that.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-fileio.adb (Close): When a temp file is
	closed, delete it and clean up its Temp_File_Record immediately,
	rather than waiting until later.
	(Temp_File_Record): Add File
	component, so Close can know which Temp_File_Record corresponds
	to the file being closed.
	(Delete): Don't delete temp files,
	because they are deleted by Close.
	(Open): Set the File component
	of Temp_File_Record. This requires moving the creation of the
	Temp_File_Record to the end, after the AFCB has been created.

From-SVN: r247175
2017-04-25 12:26:52 +02:00
Arnaud Charlet
b0cd50fdc3 [multiple changes]
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Insert_Valid_Check): Do not generate
	a validity check when inside a generic.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion): Fix bad logic.

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* snames.ads-tmpl (Snames): More names for detecting predefined
	potentially blocking subprograms.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pre_Post_Condition): The rules
	concerning inheritance of class-wide preconditions do not apply
	to postconditions.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-ficobl.ads: Minor comment fix.

From-SVN: r247174
2017-04-25 12:11:06 +02:00
Yannick Moy
d8ee014f29 checks.adb (Apply_Scalar_Range_Check): Analyze precisely conversions from float to integer in GNATprove mode.
2017-04-25  Yannick Moy  <moy@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): Analyze precisely
	conversions from float to integer in GNATprove mode.
	(Apply_Type_Conversion_Checks): Make sure in GNATprove mode
	to call Apply_Type_Conversion_Checks, so that range checks
	are properly positioned when needed on conversions, including
	when converting from float to integer.	(Determine_Range): In
	GNATprove mode, take into account the possibility of conversion
	from float to integer.
	* sem_res.adb (Resolve_Type_Conversion): Only enforce range
	check on conversions from fixed-point to integer, not anymore
	on conversions from floating-point to integer, when in GNATprove
	mode.

From-SVN: r247173
2017-04-25 12:09:31 +02:00
Yannick Moy
3c77943ebf checks.adb (Determine_Range_R): Special case type conversions from integer to float in order to get bounds in...
2017-04-25  Yannick Moy  <moy@adacore.com>

	* checks.adb (Determine_Range_R): Special case type conversions
	from integer to float in order to get bounds in that case too.
	* eval_fat.adb (Machine): Avoid issuing warnings in GNATprove
	mode, for computations involved in interval checking.

From-SVN: r247172
2017-04-25 12:08:00 +02:00
Richard Biener
468afa1ada re PR bootstrap/80509 (ICE in cc1 during selftests)
2017-04-25  Richard Biener  <rguenther@suse.de>

	PR middle-end/80509
	* passes.c (pass_manager::pass_manager): Initialize
	m_name_to_pass_map.

From-SVN: r247171
2017-04-25 10:07:58 +00:00
Arnaud Charlet
89b6c83e25 [multiple changes]
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Insert_Valid_Check): Partially reimplement validity
	checks.
	* einfo.adb Node36 is now used as Validated_Object.
	(Validated_Object): New routine.
	(Set_Validated_Object): New routine.
	(Write_Field36_Name): Add an entry for Validated_Object.
	* einfo.ads Add new attribute Validated_Object along with
	usage in entities.
	(Validated_Object): New routine along with pragma Inline.
	(Set_Validated_Object): New routine along with pragma Inline.
	* exp_attr.adb (Make_Range_Test): Add processing for validation
	variables to avoid extra reads and copies of the prefix.
	* exp_ch6.adb (Expand_Actuals): Add copy-back for validation
	variables in order to reflect any changes done in the variable
	back into the original object.
	* sem_util.adb (Is_Validation_Variable_Reference): New routine.
	* sem_util.ads (Is_Validation_Variable_Reference): New routine.

2017-04-25  Steve Baird  <baird@adacore.com>

	* exp_ch7.adb (Build_Array_Deep_Procs,
	Build_Record_Deep_Procs, Make_Finalize_Address_Body): Don't
	generate Finalize_Address routines for CodePeer.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Inherits_Class_Wide_Pre): subsidiary of
	Analyze_Pre_Post_Condition, to implement the legality checks
	mandated by AI12-0131: Pre'Class shall not be specified for an
	overriding primitive subprogram of a tagged type T unless the
	Pre'Class aspect is specified for the corresponding primitive
	subprogram of some ancestor of T.

From-SVN: r247170
2017-04-25 12:03:40 +02:00
Arnaud Charlet
c6840e83cc [multiple changes]
2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_ch8.adb (Use_One_Type): If a use_type_clause
	is redundant, set its Used_Operations to empty. This is only
	necessary for use clauses that appear in the parent of a generic
	child unit, because those use clauses get reanalyzed when we
	instantiate the generic, and we don't want the Used_Operations
	carried over from the original context (where it was probably
	not redundant).

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb: Minor reformatting.

From-SVN: r247169
2017-04-25 11:47:33 +02:00
Arnaud Charlet
f2a54683c6 [multiple changes]
2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
	Use Source_Index (Current_Sem_Unit) to find the correct casing.
	* exp_prag.adb (Expand_Pragma_Check): Use Source_Index
	(Current_Sem_Unit) to find the correct casing.
	* par.adb (Par): Null out Current_Source_File, to ensure that
	the above bugs won't rear their ugly heads again.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Type): For an attribute reference
	'Class, if prefix type is synchronized and previous errors
	have suppressed the creation of the corresponding record type,
	create a spurious class-wide for the synchonized type itself,
	to catch other misuses of the attribute

2017-04-25  Steve Baird  <baird@adacore.com>

	* exp_ch6.adb (Expand_Simple_Function_Return): if CodePeer_Mode
	is True, then don't generate the accessibility check for the
	tag of a tagged result.
	* exp_intr.adb (Expand_Dispatching_Constructor_Call):
	if CodePeer_Mode is True, then don't generate the
	tag checks for the result of call to an instance of
	Ada.Tags.Generic_Dispatching_Constructor (i.e., both the "is a
	descendant of" check and the accessibility check).

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb: Code cleanups.
	* a-strbou.ads: minor whitespace fix in Trim for bounded strings.
	* sem_ch8.ads: Minor comment fix.

From-SVN: r247168
2017-04-25 11:46:05 +02:00
Arnaud Charlet
2df23f66e2 [multiple changes]
2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Library_Level_Target): New function.
	(Expand_Concatenate): When optimization is enabled, also expand
	the operation out-of-line if the concatenation is present within
	the expression of the declaration of a library-level object and
	not only if it is the expression of the declaration.

2017-04-25  Bob Duff  <duff@adacore.com>

	* freeze.adb (Freeze_Object_Declaration): Do
	not Remove_Side_Effects if there is a pragma Linker_Section,
	because in that case we want static initialization in the
	appropriate section.

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* exp_dbug.adb: Minor rewording and reformatting.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Statically_Denotes_Object): New predicate, to
	handle the proposed changes to rules concerning potentially
	unevaluated expressions, to include selected components that
	do not depend on discriminants, and indexed components with
	static indices.
	* sem_util.adb (Is_Potentially_Unevaluated): Add check for
	predicate in quantified expression, and fix bugs in the handling
	of case expressions and membership test.
	(Analyze_Attribute_Old_Result): use new predicate.
	(Analyze_Attribute, case Loop_Entry): ditto.

From-SVN: r247167
2017-04-25 11:42:56 +02:00
Arnaud Charlet
d9049849d0 [multiple changes]
2017-04-25  Bob Duff  <duff@adacore.com>

	* s-secsta.adb (SS_Info): Add a comment
	explaining why we don't need to walk all the chunks in order to
	compute the total size.

2017-04-25  Bob Duff  <duff@adacore.com>

	* namet.ads, namet.adb (Global_Name_Buffer): Increase the length
	of the global name buffer to 4*Max_Line_Length.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_ch8.adb (Expand_N_Object_Renaming_Declaration): When creating a
	renaming entity for debug information, mark the entity as needing debug
	info if it comes from sources.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Remove the
	restriction converning the use of 'Address where the prefix is
	of a controlled type.

2017-04-25  Pierre-Marie de Rodat  <derodat@adacore.com>

	* exp_dbug.adb: In Debug_Renaming_Declaration,
	skip slices that are made redundant by an indexed component
	access.
	* atree.h: New definition for Original_Node.

From-SVN: r247166
2017-04-25 11:40:48 +02:00
Hristian Kirtchev
db78cb8134 sem_prag.adb, [...]: Minor reformatting.
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb, sem_prag.ads: Minor reformatting.

From-SVN: r247165
2017-04-25 11:37:51 +02:00
Arnaud Charlet
2671885430 Minor reformatting.
From-SVN: r247164
2017-04-25 11:37:00 +02:00
Ed Schonberg
0c85534d6f sem_ch3.adb (Check_Entry_Contract): Call Preanalyze_Spec_Expression so that resolution takes place as well.
2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Check_Entry_Contract): Call
	Preanalyze_Spec_Expression so that resolution takes place as well.
	* sem_util.adb (Check_Internal_Protected_Use): Reject properly
	internal calls that appear in preconditions of protected
	operations, in default values for same, and in contract guards
	for contract cases in SPARK.

From-SVN: r247163
2017-04-25 11:36:51 +02:00
Arnaud Charlet
be3416c681 [multiple changes]
2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* a-numaux.ads: Fix description of a-numaux-darwin
	and a-numaux-x86.
	(Double): Define to Long_Float.
	* a-numaux-vxworks.ads (Double): Likewise.
	* a-numaux-darwin.ads
	(Double): Likewise.
	* a-numaux-libc-x86.ads (Double): Define to Long_Long_Float.
	* a-numaux-x86.ads: Fix package description.
	* a-numaux-x86.adb (Is_Nan): Minor tweak.
	(Reduce): Adjust and complete description. Call Is_Nan instead of
	testing manually. Use an integer temporary to hold rounded value.
	* a-numaux-darwin.adb (Reduce): Likewise.
	(Is_Nan): New function.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Additional refinement
	on analysis of prefix whose type is a current instance of a
	synchronized type, but where the prefix itself is an entity that
	is an object.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Replace_Target): When rewriting the RHS, preserve
	the identity of callable entities therein, because they have been
	properly resolved, and prefixed calls may have been rewritten
	as normal calls.

2017-04-25  Patrick Bernardi  <bernardi@adacore.com>

	* exp_ch3.adb (Build_Init_Statements): Convert
	the expression of the pragma/aspect Secondary_Stack_Size to
	internal type System.Parameters.Size_Type before assigning
	it to the Secondary_Stack_Size component of the task type's
	corresponding record.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_eval.adb (Compile_Time_Compare): Reinstate the expr+literal
	(etc) optimizations when the type is modular and the offsets
	are equal.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* s-osinte-freebsd.ads: Minor comment tweaks

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* urealp.adb (UR_Write): Reverse previous patch
	adding documentation on why we generate multiplications instead
	of divisions (needed to avoid expressions whose computation with
	large numbers may cause division by 0).

2017-04-25  Bob Duff  <duff@adacore.com>

	* erroutc.adb (Set_Specific_Warning_Off,
	Set_Warnings_Mode_Off): Use the correct source file for
	Stop. Was using Current_Source_File, which is only valid during
	parsing. Current_Source_File will have a leftover value from
	whatever file happened to be parsed last, because of a with_clause
	or something.

2017-04-25  Bob Duff  <duff@adacore.com>

	* lib.ads, lib.adb (In_Internal_Unit): New functions similar
	to In_Predefined_Unit, but including GNAT units.
	* sem_util.ads, sem_util.adb (Should_Ignore_Pragma): Replace
	with Should_Ignore_Pragma_Par and Should_Ignore_Pragma_Sem,
	because Should_Ignore_Pragma was not working reliably outside
	the parser, because Current_Source_File is not valid.
	* sem_prag.adb, exp_prag.adb: Call Should_Ignore_Pragma_Sem.
	* par-prag.adb: Call Should_Ignore_Pragma_Par.

From-SVN: r247162
2017-04-25 11:35:46 +02:00
Arnaud Charlet
003d46d5f3 Code cleanups.
From-SVN: r247161
2017-04-25 11:29:17 +02:00
Arnaud Charlet
f4f5851ea3 2017-04-25 Arnaud Charlet <charlet@adacore.com trojanek>
* gnat1drv.adb (Gnat1Drv): Disable Generate_Processed_File in
	codepeer mode.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* urealp.adb (UR_Write): Fix output of constants with a base other
	that 10.

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* sem_ch13.adb (Get_Interfacing_Aspects): Moved to sem_util.adb.
	* sem_prag.adb (Analyze_Pragma, Process_Import_Or_Interface):
	Add extra parameter for Process_Interface_Name.
	(Process_Interface_Name): Add parameter for pragma to analyze
	corresponding aspect.
	* sem_util.ads, sem_util.adb (Get_Interfacing_Aspects): Added
	from sem_ch13.adb

From-SVN: r247160
2017-04-25 11:28:49 +02:00
Richard Biener
2700fbd655 re PR tree-optimization/79201 (missed optimization: sinking doesn't handle calls, swap PRE and sinking)
2017-04-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/79201
	* tree-ssa-sink.c (statement_sink_location): Handle calls.

	* gcc.dg/tree-ssa/ssa-sink-16.c: New testcase.
	* gcc.target/i386/pr22152.c: Disable sinking.

From-SVN: r247159
2017-04-25 09:26:37 +00:00
Arnaud Charlet
bfda9ccde6 Code clean ups.
From-SVN: r247158
2017-04-25 11:25:55 +02:00