2012-03-30 Yannick Moy <moy@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Mar 2012 09:13:48 +0000 (09:13 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Mar 2012 09:13:48 +0000 (09:13 +0000)
* lib-xref-alfa.adb (Add_Alfa_File): Take into account possible absence
of compilation unit for unit in Sdep_Table.

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

gcc/ada/ChangeLog
gcc/ada/lib-xref-alfa.adb

index baeff68..2a09d66 100644 (file)
@@ -1,3 +1,8 @@
+2012-03-30  Yannick Moy  <moy@adacore.com>
+
+       * lib-xref-alfa.adb (Add_Alfa_File): Take into account possible absence
+       of compilation unit for unit in Sdep_Table.
+
 2012-03-30  Thomas Quinot  <quinot@adacore.com>
 
        * freeze.adb (Freeze_Record_Type): For a type with reversed bit
index 4961fed..588213c 100644 (file)
@@ -226,8 +226,14 @@ package body Alfa is
 
       From := Alfa_Scope_Table.Last + 1;
 
-      Traverse_Compilation_Unit (Cunit (U), Detect_And_Add_Alfa_Scope'Access,
-                                 Inside_Stubs => False);
+      --  Unit U might not have an associated compilation unit, as seen in code
+      --  filling Sdep_Table in Write_ALI.
+
+      if Present (Cunit (U)) then
+         Traverse_Compilation_Unit (Cunit (U),
+                                    Detect_And_Add_Alfa_Scope'Access,
+                                    Inside_Stubs => False);
+      end if;
 
       --  Update scope numbers
 
@@ -279,9 +285,11 @@ package body Alfa is
       Get_Name_String (Reference_Name (S));
       File_Name := new String'(Name_Buffer (1 .. Name_Len));
 
-      --  For subunits, also retrieve the file name of the unit
+      --  For subunits, also retrieve the file name of the unit. Only do so if
+      --  unit U has an associated compilation unit.
 
-      if Present (Cunit (Unit (S)))
+      if Present (Cunit (U))
+        and then Present (Cunit (Unit (S)))
         and then Nkind (Unit (Cunit (Unit (S)))) = N_Subunit
       then
          Get_Name_String (Reference_Name (Main_Source_File));