aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEd Schonberg <schonberg@adacore.com>2005-11-15 15:00:18 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2005-11-15 15:00:18 +0100
commitdff0475fb55528621b7c9a2324d042df943ad803 (patch)
tree9ff736e010bc59488bea5f8e018982814f60f62f /gcc
parent70b352b52f59065a464bc2ff57f75b49b8c52950 (diff)
downloadgcc-dff0475fb55528621b7c9a2324d042df943ad803.zip
gcc-dff0475fb55528621b7c9a2324d042df943ad803.tar.gz
gcc-dff0475fb55528621b7c9a2324d042df943ad803.tar.bz2
lib-xref.adb (Generate_Definition, [...]): Treat the internal entity created for the declaration of a child subprogram...
2005-11-14 Ed Schonberg <schonberg@adacore.com> * lib-xref.adb (Generate_Definition, Generate_Reference): Treat the internal entity created for the declaration of a child subprogram body with no spec as coming from source, to generate proper cross-reference information. From-SVN: r106988
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/lib-xref.adb15
1 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ada/lib-xref.adb b/gcc/ada/lib-xref.adb
index 7260b0c..1d0c8cb 100644
--- a/gcc/ada/lib-xref.adb
+++ b/gcc/ada/lib-xref.adb
@@ -111,8 +111,13 @@ package body Lib.Xref is
if Opt.Xref_Active
-- Definition must come from source
+ -- We make an exception for subprogram child units that have no
+ -- spec. For these we generate a subprogram declaration for library
+ -- use, and the corresponding entity does not come from source.
+ -- Nevertheless, all references will be attached to it and we have
+ -- to treat is as coming from user code.
- and then Comes_From_Source (E)
+ and then (Comes_From_Source (E) or else Is_Child_Unit (E))
-- And must have a reasonable source location that is not
-- within an instance (all entities in instances are ignored)
@@ -518,6 +523,14 @@ package body Lib.Xref is
end if;
end loop;
+ -- The internally created defining entity for a child subprogram
+ -- that has no previous spec has valid references.
+
+ elsif Is_Overloadable (E)
+ and then Is_Child_Unit (E)
+ then
+ Ent := E;
+
-- Record components of discriminated subtypes or derived types
-- must be treated as references to the original component.