Commit 57f6e00c by Arnaud Charlet

[multiple changes]

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

	* sem_warn.adb (Warn_On_Constant_Valid_Condition): Do not consider
	comparisons between non- scalar expressions expressions because
	their values cannot be invalidated.
	* sem_warn.ads (Warn_On_Constant_Valid_Condition): Update the
	comment on usage.

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

	* par_sco.adb: Minor reformatting.

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

	* sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): If entity
	is a type from an unfrozen local package, install package to
	complete the analysis of delayed aspects of the type.

2017-04-25  Tristan Gingold  <gingold@adacore.com>

	* bingen.adb (System_Version_Control_Used): New variable.
	(Resolve_Binder_Options): Set the above variable.
	(Gen_Output_File_Ada): Conditionally call Gen_Versions.
	(Gen_Elab_Order): Emit blank line before.

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

	* sem_cat.adb (Validate_RT_RAT_Component): Added
	an extra check to ignore incomplete types.

From-SVN: r247228
parent 62807842
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com>
* sem_warn.adb (Warn_On_Constant_Valid_Condition): Do not consider
comparisons between non- scalar expressions expressions because
their values cannot be invalidated.
* sem_warn.ads (Warn_On_Constant_Valid_Condition): Update the
comment on usage.
2017-04-25 Hristian Kirtchev <kirtchev@adacore.com>
* par_sco.adb: Minor reformatting.
2017-04-25 Ed Schonberg <schonberg@adacore.com>
* sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): If entity
is a type from an unfrozen local package, install package to
complete the analysis of delayed aspects of the type.
2017-04-25 Tristan Gingold <gingold@adacore.com>
* bingen.adb (System_Version_Control_Used): New variable.
(Resolve_Binder_Options): Set the above variable.
(Gen_Output_File_Ada): Conditionally call Gen_Versions.
(Gen_Elab_Order): Emit blank line before.
2017-04-25 Justin Squirek <squirek@adacore.com>
* sem_cat.adb (Validate_RT_RAT_Component): Added
an extra check to ignore incomplete types.
2017-04-25 Thomas Quinot <quinot@adacore.com>
* sem_prag.adb (Analyze_Pragma, case Pragma_Check): Remove
......
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 1992-2016, Free Software Foundation, Inc. --
-- Copyright (C) 1992-2017, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
......@@ -94,6 +94,12 @@ package body Bindgen is
-- Resolve_Binder_Options, and it is used to call a procedure that starts
-- slave processors.
System_Version_Control_Used : Boolean := False;
-- Flag indicating whether unit System.Version_Control is in the closure.
-- This unit is implicitly withed by the compiler when Version or
-- Body_Version attributes are used. If the package is not in the closure,
-- the version definitions can be removed.
Lib_Final_Built : Boolean := False;
-- Flag indicating whether the finalize_library rountine has been built
......@@ -1303,6 +1309,7 @@ package body Bindgen is
procedure Gen_Elab_Order (Elab_Order : Unit_Id_Array) is
begin
WBI ("");
WBI (" -- BEGIN ELABORATION ORDER");
for J in Elab_Order'Range loop
......@@ -1313,7 +1320,6 @@ package body Bindgen is
end loop;
WBI (" -- END ELABORATION ORDER");
WBI ("");
end Gen_Elab_Order;
--------------------------
......@@ -2259,7 +2265,16 @@ package body Bindgen is
Get_Main_Name & """);");
end if;
Gen_Versions;
-- Generate version numbers for units, only if needed. Be very safe on
-- the condition.
if not Configurable_Run_Time_On_Target
or else System_Version_Control_Used
or else not Bind_Main_Program
then
Gen_Versions;
end if;
Gen_Elab_Order (Elab_Order);
-- Spec is complete
......@@ -2865,6 +2880,11 @@ package body Bindgen is
Check_Package (System_BB_CPU_Primitives_Multiprocessors_Used,
"system.bb.cpu_primitives.multiprocessors%s");
-- Ditto for System.Version_Control, which is used for Version and
-- Body_Version attributes.
Check_Package (System_Version_Control_Used,
"system.version_control%s");
end loop;
end Resolve_Binder_Options;
......
......@@ -1688,15 +1688,15 @@ package body Par_SCO is
-- Pre/post can have checks in client units too because of
-- inheritance, so should they receive the same treatment???
when Aspect_Invariant
when Aspect_Dynamic_Predicate
| Aspect_Invariant
| Aspect_Post
| Aspect_Postcondition
| Aspect_Pre
| Aspect_Precondition
| Aspect_Type_Invariant
| Aspect_Dynamic_Predicate
| Aspect_Predicate
| Aspect_Static_Predicate
| Aspect_Type_Invariant
=>
C1 := 'a';
......
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 1992-2016, Free Software Foundation, Inc. --
-- Copyright (C) 1992-2017, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
......@@ -1975,7 +1975,9 @@ package body Sem_Cat is
U_Typ := Typ;
end if;
if Comes_From_Source (Typ) and then Is_Type (Typ) then
if Comes_From_Source (Typ) and then Is_Type (Typ)
and then Ekind (Typ) /= E_Incomplete_Type
then
-- Check that the type can be meaningfully transmitted to another
-- partition (E.2.2(8)).
......
......@@ -51,6 +51,7 @@ with Sem_Aux; use Sem_Aux;
with Sem_Case; use Sem_Case;
with Sem_Ch3; use Sem_Ch3;
with Sem_Ch6; use Sem_Ch6;
with Sem_Ch7; use Sem_Ch7;
with Sem_Ch8; use Sem_Ch8;
with Sem_Dim; use Sem_Dim;
with Sem_Disp; use Sem_Disp;
......@@ -1180,10 +1181,42 @@ package body Sem_Ch13 is
-- Start of processing for Analyze_Aspects_At_Freeze_Point
begin
-- Must be visible in current scope
-- Must be visible in current scope, but if this is a type from
-- a nested package it may be frozen from an object declaration
-- in the enclosing scope, so install the package declarations
-- to complete the analysis of the aspects, if any. If the package
-- itself is frozen the type will have been frozen as well.
if not Scope_Within_Or_Same (Current_Scope, Scope (E)) then
return;
if Is_Type (E)
and then Ekind (Scope (E)) = E_Package
and then not Is_Frozen (Scope (E))
then
declare
Pack : constant Entity_Id := Scope (E);
begin
Push_Scope (Pack);
Install_Visible_Declarations (Pack);
Install_Private_Declarations (Pack);
Analyze_Aspects_At_Freeze_Point (E);
if Is_Private_Type (E)
and then Present (Full_View (E))
then
Analyze_Aspects_At_Freeze_Point (Full_View (E));
end if;
End_Package_Scope (Pack);
end;
else
-- Aspects from other entities in different contexts are
-- analyzed elsewhere.
return;
end if;
end if;
-- Look for aspect specification entries for this entity
......
......@@ -3275,10 +3275,12 @@ package body Sem_Warn is
begin
-- Determine the potential outcome of the comparison assuming that the
-- operands are valid.
-- scalar operands are valid.
if Constant_Condition_Warnings
and then Comes_From_Source (Original_Node (Op))
and then Is_Scalar_Type (Etype (Left))
and then Is_Scalar_Type (Etype (Right))
-- Do not consider instances because the check was already performed
-- in the generic.
......
......@@ -170,8 +170,8 @@ package Sem_Warn is
procedure Warn_On_Constant_Valid_Condition (Op : Node_Id);
-- Determine the outcome of evaluating conditional or relational operator
-- Op assuming that its operands are valid. Emit a warning when the result
-- of the evaluation is True or False.
-- Op assuming that its scalar operands are valid. Emit a warning when the
-- result of the evaluation is True or False.
procedure Warn_On_Known_Condition (C : Node_Id);
-- C is a node for a boolean expression resulting from a relational
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment