This change ensures that a subprogram declaration or a generic instantiation
does not create a new entry point in the sequence of statement SCOs.
For the following compilation, a single statement sequence SCO line shall
be output for the declaration of X, the instantiation I, and the declaration
of Y.
$ gcc -c -gnateS inst.adb
$ grep "^CS" inst.ali | head -1
CS o3:4-3:19 i5:4-5:21 o6:4-6:19
generic
package Gen is
end Gen;
with Gen;
procedure Inst is
X : Integer := 1;
procedure P;
package I is new Gen;
Y : Integer := 1;
procedure P is begin null; end;
begin
Tested on x86_64-pc-linux-gnu, committed on trunk
2011-08-29 Thomas Quinot <[email protected]>
* par_sco.adb (Traverse_Declarations_Or_Statements): Do not flush
current statement sequence on a generic instantiation or a subprogram
declaration.
Index: par_sco.adb
===================================================================
--- par_sco.adb (revision 178156)
+++ par_sco.adb (working copy)
@@ -1204,7 +1204,6 @@
when N_Subprogram_Declaration =>
Process_Decisions_Defer
(Parameter_Specifications (Specification (N)), 'X');
- Set_Statement_Entry;
-- Generic subprogram declaration
@@ -1213,7 +1212,6 @@
(Generic_Formal_Declarations (N), 'X');
Process_Decisions_Defer
(Parameter_Specifications (Specification (N)), 'X');
- Set_Statement_Entry;
-- Task or subprogram body