aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sinput.adb
diff options
context:
space:
mode:
authorBob Duff <duff@adacore.com>2016-04-18 10:48:33 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2016-04-18 12:48:33 +0200
commitea1027992d9cc5786beb54439cf310c647e416c5 (patch)
tree2c662c1707d15631c783d9d9a863a520b4ba13c7 /gcc/ada/sinput.adb
parentbd717ec9b7edb898ec138f58a14821e776bb4fa3 (diff)
downloadgcc-ea1027992d9cc5786beb54439cf310c647e416c5.zip
gcc-ea1027992d9cc5786beb54439cf310c647e416c5.tar.gz
gcc-ea1027992d9cc5786beb54439cf310c647e416c5.tar.bz2
sinput.ads, sinput.adb (Build_Location_String): Take a parameter instead of using a global variable.
2016-04-18 Bob Duff <duff@adacore.com> * sinput.ads, sinput.adb (Build_Location_String): Take a parameter instead of using a global variable. The function version no longer destroys the Name_Buffer. * stringt.ads, stringt.adb (String_From_Name_Buffer): Take a parameter, which defaults to the Global_Name_Buffer, so some calls can avoid the global. * exp_ch11.adb, exp_intr.adb: Use new interfaces above to avoid using globals. All but one call to Build_Location_String avoids the global. Only one call to String_From_Name_Buffer avoids it. From-SVN: r235126
Diffstat (limited to 'gcc/ada/sinput.adb')
-rw-r--r--gcc/ada/sinput.adb28
1 files changed, 13 insertions, 15 deletions
diff --git a/gcc/ada/sinput.adb b/gcc/ada/sinput.adb
index 1c8232d..0800f31 100644
--- a/gcc/ada/sinput.adb
+++ b/gcc/ada/sinput.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2015, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -221,33 +221,31 @@ package body Sinput is
-- Build_Location_String --
---------------------------
- procedure Build_Location_String (Loc : Source_Ptr) is
- Ptr : Source_Ptr;
+ procedure Build_Location_String
+ (Buf : in out Bounded_String;
+ Loc : Source_Ptr)
+ is
+ Ptr : Source_Ptr := Loc;
begin
-- Loop through instantiations
- Ptr := Loc;
loop
- Get_Name_String_And_Append
- (Reference_Name (Get_Source_File_Index (Ptr)));
- Add_Char_To_Name_Buffer (':');
- Add_Nat_To_Name_Buffer (Nat (Get_Logical_Line_Number (Ptr)));
+ Append (Buf, Reference_Name (Get_Source_File_Index (Ptr)));
+ Append (Buf, ':');
+ Append (Buf, Nat (Get_Logical_Line_Number (Ptr)));
Ptr := Instantiation_Location (Ptr);
exit when Ptr = No_Location;
- Add_Str_To_Name_Buffer (" instantiated at ");
+ Append (Buf, " instantiated at ");
end loop;
-
- Name_Buffer (Name_Len + 1) := NUL;
- return;
end Build_Location_String;
function Build_Location_String (Loc : Source_Ptr) return String is
+ Buf : Bounded_String;
begin
- Name_Len := 0;
- Build_Location_String (Loc);
- return Name_Buffer (1 .. Name_Len);
+ Build_Location_String (Buf, Loc);
+ return +Buf;
end Build_Location_String;
-------------------