aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/sinput.adb10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ada/sinput.adb b/gcc/ada/sinput.adb
index 4c342d9..9f2669e 100644
--- a/gcc/ada/sinput.adb
+++ b/gcc/ada/sinput.adb
@@ -937,6 +937,8 @@ package body Sinput is
procedure Sloc_Range (N : Node_Id; Min, Max : out Source_Ptr) is
+ Indx : constant Source_File_Index := Get_Source_File_Index (Sloc (N));
+
function Process (N : Node_Id) return Traverse_Result;
-- Process function for traversing the node tree
@@ -950,6 +952,14 @@ package body Sinput is
Orig : constant Node_Id := Original_Node (N);
begin
+ -- Skip nodes that may have been added during expansion and
+ -- that originate in other units, such as code for contracts
+ -- in subprogram bodies.
+
+ if Get_Source_File_Index (Sloc (Orig)) /= Indx then
+ return Skip;
+ end if;
+
if Sloc (Orig) < Min then
if Sloc (Orig) > No_Location then
Min := Sloc (Orig);