diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2009-04-20 12:07:30 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2009-04-20 12:07:30 +0200 |
commit | 7289b80c09ea86586ad7663e76400878bf2a8b7e (patch) | |
tree | 3f5e6659bb1a3d04e80fe22da42dc8149d0f0e0a /gcc | |
parent | c09a557e3abfb7250930d64dc9d07cdc1779a281 (diff) | |
download | gcc-7289b80c09ea86586ad7663e76400878bf2a8b7e.zip gcc-7289b80c09ea86586ad7663e76400878bf2a8b7e.tar.gz gcc-7289b80c09ea86586ad7663e76400878bf2a8b7e.tar.bz2 |
[multiple changes]
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.
From-SVN: r146390
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/ada/gnat_ugn.texi | 9 | ||||
-rw-r--r-- | gcc/ada/sem_ch10.adb | 13 |
3 files changed, 28 insertions, 3 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index ebc1ea0..d237023 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -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 diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 7d573f7..e9b5a66 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -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 diff --git a/gcc/ada/sem_ch10.adb b/gcc/ada/sem_ch10.adb index 17f9074..0a32539 100644 --- a/gcc/ada/sem_ch10.adb +++ b/gcc/ada/sem_ch10.adb @@ -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); |