summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2010-08-05 09:14:19 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2010-08-05 09:14:19 +0000
commit69a5377d49c2fc7e55fc075cf5e258555abb0aff (patch)
tree0966cf202946db5ff03456b8e24a3977cbf0c3ab
parent325f358601f579291de354f3672c203492563eb1 (diff)
downloadgcc-69a5377d49c2fc7e55fc075cf5e258555abb0aff.tar.gz
2010-08-05 Thomas Quinot <quinot@adacore.com>
* sem_ch6.adb, gnat1drv.adb, exp_ch6.adb, sem_eval.adb: Minor reformatting. 2010-08-05 Steve Baird <baird@adacore.com> * exp_util.adb (Remove_Side_Effects): An access value which designates a volatile object of a nonvolatile type is prohibited. Do not call Make_Reference to construct a reference to such an object. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162905 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ada/ChangeLog11
-rw-r--r--gcc/ada/exp_ch6.adb4
-rw-r--r--gcc/ada/exp_util.adb11
-rw-r--r--gcc/ada/gnat1drv.adb55
-rw-r--r--gcc/ada/sem_ch6.adb18
-rw-r--r--gcc/ada/sem_eval.adb6
6 files changed, 55 insertions, 50 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 9958ead7704..6e188f0caab 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,14 @@
+2010-08-05 Thomas Quinot <quinot@adacore.com>
+
+ * sem_ch6.adb, gnat1drv.adb, exp_ch6.adb, sem_eval.adb: Minor
+ reformatting.
+
+2010-08-05 Steve Baird <baird@adacore.com>
+
+ * exp_util.adb (Remove_Side_Effects): An access value which designates
+ a volatile object of a nonvolatile type is prohibited.
+ Do not call Make_Reference to construct a reference to such an object.
+
2010-08-05 Robert Dewar <dewar@adacore.com>
* a-suezse.adb, a-suezse.ads, a-suezen.adb, a-suezen.ads: Removed.
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 9ddb278417c..11a2161e99d 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -3713,9 +3713,7 @@ package body Exp_Ch6 is
Set_Name (N, New_Occurrence_Of (Orig_Bod, Loc));
- if Present (Alias (Orig_Bod))
- or else Is_Inlined (Orig_Bod)
- then
+ if Present (Alias (Orig_Bod)) or else Is_Inlined (Orig_Bod) then
Expand_Call (N);
end if;
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index 133a767f056..0c0377b9ec2 100644
--- a/gcc/ada/exp_util.adb
+++ b/gcc/ada/exp_util.adb
@@ -4799,12 +4799,17 @@ package body Exp_Util is
end if;
-- For expressions that denote objects, we can use a renaming scheme.
- -- We skip using this if we have a volatile reference and we do not
- -- have Name_Req set true (see comments above for Side_Effect_Free).
+ -- This is needed for correctness in the case of a volatile object
+ -- of a non-volatile type because the Make_Reference call of the
+ -- "default" approach would generate an illegal access value (an access
+ -- value cannot designate such an object - see Analyze_Reference).
+ -- We skip using this scheme if we have an object of a volatile type
+ -- and we do not have Name_Req set true (see comments above for
+ -- Side_Effect_Free).
elsif Is_Object_Reference (Exp)
and then Nkind (Exp) /= N_Function_Call
- and then (Name_Req or else not Is_Volatile_Reference (Exp))
+ and then (Name_Req or else not Treat_As_Volatile (Exp_Type))
then
Def_Id := Make_Temporary (Loc, 'R', Exp);
diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb
index d3d15ccc3b1..c514570d91b 100644
--- a/gcc/ada/gnat1drv.adb
+++ b/gcc/ada/gnat1drv.adb
@@ -441,20 +441,19 @@ procedure Gnat1drv is
Fname := Get_File_Name (Sname, Subunit => False);
Src_Ind := Load_Source_File (Fname);
- -- Case where body is present and it is not a subunit. Exclude
- -- the subunit case, because it has nothing to do with the
- -- package we are compiling. It is illegal for a child unit and a
- -- subunit with the same expanded name (RM 10.2(9)) to appear
- -- together in a partition, but there is nothing to stop a
- -- compilation environment from having both, and the test here
- -- simply allows that. If there is an attempt to include both in
- -- a partition, this is diagnosed at bind time. In Ada 83 mode
- -- this is not a warning case.
-
- -- Note: if weird file names are being used, we can have
- -- situation where the file name that supposedly contains body,
- -- in fact contains a spec, or we can't tell what it contains.
- -- Skip the error message in these cases.
+ -- Case where body is present and it is not a subunit. Exclude the
+ -- subunit case, because it has nothing to do with the package we are
+ -- compiling. It is illegal for a child unit and a subunit with the
+ -- same expanded name (RM 10.2(9)) to appear together in a partition,
+ -- but there is nothing to stop a compilation environment from having
+ -- both, and the test here simply allows that. If there is an attempt
+ -- to include both in a partition, this is diagnosed at bind time. In
+ -- Ada 83 mode this is not a warning case.
+
+ -- Note: if weird file names are being used, we can have a situation
+ -- where the file name that supposedly contains body in fact contains
+ -- a spec, or we can't tell what it contains. Skip the error message
+ -- in these cases.
-- Also ignore body that is nothing but pragma No_Body; (that's the
-- whole point of this pragma, to be used this way and to cause the
@@ -635,8 +634,7 @@ begin
if S = No_Source_File then
Write_Line
("fatal error, run-time library not installed correctly");
- Write_Line
- ("cannot locate file system.ads");
+ Write_Line ("cannot locate file system.ads");
raise Unrecoverable_Error;
-- Remember source index of system.ads (which was read successfully)
@@ -778,18 +776,14 @@ begin
-- subunits. Note that we always generate code for all generic units (a
-- change from some previous versions of GNAT).
- elsif Main_Kind = N_Subprogram_Body
- and then not Subunits_Missing
- then
+ elsif Main_Kind = N_Subprogram_Body and then not Subunits_Missing then
Back_End_Mode := Generate_Object;
-- We can generate code for a package body unless there are subunits
-- missing (note that we always generate code for generic units, which
-- is a change from some earlier versions of GNAT).
- elsif Main_Kind = N_Package_Body
- and then not Subunits_Missing
- then
+ elsif Main_Kind = N_Package_Body and then not Subunits_Missing then
Back_End_Mode := Generate_Object;
-- We can generate code for a package declaration or a subprogram
@@ -903,8 +897,8 @@ begin
Exit_Program (E_No_Code);
end if;
- -- In -gnatc mode, we only do annotation if -gnatt or -gnatR is also
- -- set as indicated by Back_Annotate_Rep_Info being set to True.
+ -- In -gnatc mode, we only do annotation if -gnatt or -gnatR is also set
+ -- as indicated by Back_Annotate_Rep_Info being set to True.
-- We don't call for annotations on a subunit, because to process those
-- the back-end requires that the parent(s) be properly compiled.
@@ -912,8 +906,8 @@ begin
-- Annotation is suppressed for targets where front-end layout is
-- enabled, because the front end determines representations.
- -- Annotation is also suppressed in the case of compiling for
- -- a VM, since representations are largely symbolic there.
+ -- Annotation is also suppressed in the case of compiling for a VM,
+ -- since representations are largely symbolic there.
if Back_End_Mode = Declarations_Only
and then (not (Back_Annotate_Rep_Info or Generate_SCIL)
@@ -1011,11 +1005,10 @@ begin
Write_ALI (Object => (Back_End_Mode = Generate_Object));
- -- Generate the ASIS tree after writing the ALI file, since in ASIS
- -- mode, Write_ALI may in fact result in further tree decoration from
- -- the original tree file. Note that we dump the tree just before
- -- generating it, so that the dump will exactly reflect what is written
- -- out.
+ -- Generate ASIS tree after writing the ALI file, since in ASIS mode,
+ -- Write_ALI may in fact result in further tree decoration from the
+ -- original tree file. Note that we dump the tree just before generating
+ -- it, so that the dump will exactly reflect what is written out.
Treepr.Tree_Dump;
Tree_Gen;
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index cbdaf68180f..cfd88289fb7 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -3472,10 +3472,9 @@ package body Sem_Ch6 is
procedure Cannot_Inline (Msg : String; N : Node_Id; Subp : Entity_Id) is
begin
- -- Do not emit warning if this is a predefined unit which is not
- -- the main unit. With validity checks enabled, some predefined
- -- subprograms may contain nested subprograms and become ineligible
- -- for inlining.
+ -- Do not emit warning if this is a predefined unit which is not the
+ -- main unit. With validity checks enabled, some predefined subprograms
+ -- may contain nested subprograms and become ineligible for inlining.
if Is_Predefined_File_Name (Unit_File_Name (Get_Source_Unit (Subp)))
and then not In_Extended_Main_Source_Unit (Subp)
@@ -4490,8 +4489,8 @@ package body Sem_Ch6 is
end;
end if;
- -- If there is an overridden subprogram, then check that there is not
- -- a "not overriding" indicator, and mark the subprogram as overriding.
+ -- If there is an overridden subprogram, then check that there is no
+ -- "not overriding" indicator, and mark the subprogram as overriding.
-- This is not done if the overridden subprogram is marked as hidden,
-- which can occur for the case of inherited controlled operations
-- (see Derive_Subprogram), unless the inherited subprogram's parent
@@ -4539,7 +4538,7 @@ package body Sem_Ch6 is
-- If Subp is an operator, it may override a predefined operation, if
-- it is defined in the same scope as the type to which it applies.
- -- In that case overridden_subp is empty because of our implicit
+ -- In that case Overridden_Subp is empty because of our implicit
-- representation for predefined operators. We have to check whether the
-- signature of Subp matches that of a predefined operator. Note that
-- first argument provides the name of the operator, and the second
@@ -4551,7 +4550,7 @@ package body Sem_Ch6 is
elsif Nkind (Subp) = N_Defining_Operator_Symbol then
declare
Typ : constant Entity_Id :=
- Base_Type (Etype (First_Formal (Subp)));
+ Base_Type (Etype (First_Formal (Subp)));
Can_Override : constant Boolean :=
Operator_Matches_Spec (Subp, Subp)
@@ -4573,8 +4572,7 @@ package body Sem_Ch6 is
elsif Can_Override then
Error_Msg_NE
- ("subprogram & overrides predefined operator ",
- Spec, Subp);
+ ("subprogram& overrides predefined operator ", Spec, Subp);
end if;
elsif Must_Override (Spec) then
diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb
index 84bb34a66f2..467fafadb38 100644
--- a/gcc/ada/sem_eval.adb
+++ b/gcc/ada/sem_eval.adb
@@ -3865,13 +3865,13 @@ package body Sem_Eval is
if No (Typ1) then
Typ1 := E;
- -- Before emitting an error, check for the presence of a
- -- mixed-mode operation that specifies a fixed point type.
+ -- Before emitting an error, check for the presence of a
+ -- mixed-mode operation that specifies a fixed point type.
elsif Is_Relational
and then
(Is_Mixed_Mode_Operand (Left_Opnd (N))
- or else Is_Mixed_Mode_Operand (Right_Opnd (N)))
+ or else Is_Mixed_Mode_Operand (Right_Opnd (N)))
and then Is_Fixed_Point_Type (E) /= Is_Fixed_Point_Type (Typ1)
then