diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 7aeb5a7cb64..4c5c8c8c705 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,13 @@ +2010-10-05 Vincent Celier + + * make.adb (Check): When compiling with -gnatc, recompile if the ALI + file has not been generated for the current source, for example if it + has been generated for the spec, but we are compiling the body. + +2010-10-05 Bob Duff + + * xgnatugn.adb: Remove unused procedure. + 2010-10-04 Vincent Celier * a-direct.adb (Copy_File): Interpret the Form parameter and call diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb index 1df76a51453..2c2489c6a37 100644 --- a/gcc/ada/make.adb +++ b/gcc/ada/make.adb @@ -1658,6 +1658,32 @@ package body Make is return; end if; + -- When compiling with -gnatc, don't take ALI file into account if + -- it has not been generated for the current source, for example if + -- it has been generated for the spec, but we are compiling the body. + + if Operating_Mode = Check_Semantics then + declare + File_Name : constant String := Get_Name_String (Source_File); + OK : Boolean := False; + + begin + for U in ALIs.Table (ALI).First_Unit .. + ALIs.Table (ALI).Last_Unit + loop + OK := Get_Name_String (Units.Table (U).Sfile) = File_Name; + exit when OK; + end loop; + + if not OK then + Verbose_Msg + (Full_Lib_File, "not generated for the same source"); + ALI := No_ALI_Id; + return; + end if; + end; + end if; + -- Check for matching compiler switches if needed if Check_Switches then diff --git a/gcc/ada/xgnatugn.adb b/gcc/ada/xgnatugn.adb index ee3b07df820..ab168170f0c 100644 --- a/gcc/ada/xgnatugn.adb +++ b/gcc/ada/xgnatugn.adb @@ -127,7 +127,6 @@ procedure Xgnatugn is -- line-oriented checks (length, character set, trailing spaces). procedure Put_Line (F : Sfile; S : String); - procedure Put_Line (F : Sfile; S : VString); -- Local version of Put_Line ensures Unix style line endings Number_Of_Warnings : Natural := 0; @@ -369,11 +368,6 @@ procedure Xgnatugn is Character'Write (Stream (F), ASCII.LF); end Put_Line; - procedure Put_Line (F : Sfile; S : VString) is - begin - Put_Line (F, To_String (S)); - end Put_Line; - ----------- -- Error -- -----------