[Ada] Do not generate .ali files for subunits
Arnaud Charlet
charlet@adacore.com
Fri Sep 8 09:13:00 GMT 2017
This patch fixes a bug in which the compiler creates .ali files when a
subunit is compiled. Given the following code:
package P is
procedure F;
end P;
package body P is
procedure F is separate;
end P;
separate (P)
procedure F is
begin
null;
end F;
The command:
gcc -c p-f.adb
should generate an error:
cannot generate code for file p-f.adb (subunit)
and p-f.ali should not be created.
Tested on x86_64-pc-linux-gnu, committed on trunk
2017-09-08 Bob Duff <duff@adacore.com>
* gnat1drv.adb (Gnat1drv): Do not set the Force_ALI_Tree_File flag in
the subunit case. It's still OK to set it in the "missing subunits"
case, because that won't cause the obsolete .ali files that cause
confusion.
-------------- next part --------------
Index: gnat1drv.adb
===================================================================
--- gnat1drv.adb (revision 251863)
+++ gnat1drv.adb (working copy)
@@ -1353,10 +1353,10 @@
Write_Str (" (subunit)");
Write_Eol;
- -- Force generation of ALI file, for backward compatibility
+ -- Do not generate an ALI file in this case, because it would
+ -- become obsolete when the parent is compiled, and thus
+ -- confuse tools such as gnatfind.
- Opt.Force_ALI_Tree_File := True;
-
elsif Main_Unit_Kind = N_Subprogram_Declaration then
Write_Str (" (subprogram spec)");
Write_Eol;
More information about the Gcc-patches
mailing list