OSDN Git Service

2009-04-20 Eric Botcazou <ebotcazou@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 20 Apr 2009 10:07:30 +0000 (10:07 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 20 Apr 2009 10:07:30 +0000 (10:07 +0000)
* gnat_ugn.texi: Add documentation for -fno-ivopts.

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

* sem_ch10.adb (Analyze_Context): Do not analyze a unit in a
with_clause if it is the main unit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146390 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/gnat_ugn.texi
gcc/ada/sem_ch10.adb

index ebc1ea0..d237023 100644 (file)
@@ -1,3 +1,12 @@
+2009-04-20  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat_ugn.texi: Add documentation for -fno-ivopts.
+
+2009-04-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch10.adb (Analyze_Context): Do not analyze a unit in a
+       with_clause if it is the main unit.
+
 2009-04-20  Thomas Quinot  <quinot@adacore.com>
 
        * sem_type.adb, ali.adb, erroutc.adb: Minor code reorganization
index 7d573f7..e9b5a66 100644 (file)
@@ -3815,6 +3815,15 @@ if @option{-O2} is used.
 Suppresses inlining of subprograms local to the unit and called once
 from within it, which is enabled if @option{-O1} is used.
 
+@item -fno-ivopts
+@cindex @option{-fno-ivopts} (@command{gcc})
+Suppresses high-level loop induction variable optimizations, which are
+enabled if @option{-O1} is used. These optimizations are generally
+profitable but, for some specific cases of loops with numerous uses
+of the iteration variable that follow a common pattern, they may end
+up destroying the regularity that could be exploited at a lower level
+and thus producing inferior code.
+
 @item -fno-strict-aliasing
 @cindex @option{-fno-strict-aliasing} (@command{gcc})
 Causes the compiler to avoid assumptions regarding non-aliasing
index 17f9074..0a32539 100644 (file)
@@ -774,7 +774,7 @@ package body Sem_Ch10 is
             Version_Update (N, Lib_Unit);
          end if;
 
-         --  Comment needed here ???
+         --  If this is a child unit, generate references to the parents.
 
          if Nkind (Defining_Unit_Name (Specification (Unit_Node))) =
                                              N_Defining_Program_Unit_Name
@@ -1278,9 +1278,16 @@ package body Sem_Ch10 is
          then
             --  Skip analyzing with clause if no unit, nothing to do (this
             --  happens for a with that references a non-existent unit)
+            --  Skip as well if this is a with_clause for the main unit, which
+            --  happens if a subunit has a useless with_clause on its parent.
 
             if Present (Library_Unit (Item)) then
-               Analyze (Item);
+               if Library_Unit (Item) /= Cunit (Current_Sem_Unit) then
+                  Analyze (Item);
+
+               else
+                  Set_Entity (Name (Item), Cunit_Entity (Current_Sem_Unit));
+               end if;
             end if;
 
             if not Implicit_With (Item) then
@@ -3111,7 +3118,7 @@ package body Sem_Ch10 is
 
       if Is_Child_Spec (Lib_Unit) then
 
-         --  The unit also has implicit withs on its own parents
+         --  The unit also has implicit with_clauses on its own parents
 
          if No (Context_Items (N)) then
             Set_Context_Items (N, New_List);