diff options
author | Bob Duff <duff@adacore.com> | 2016-04-18 10:48:33 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2016-04-18 12:48:33 +0200 |
commit | ea1027992d9cc5786beb54439cf310c647e416c5 (patch) | |
tree | 2c662c1707d15631c783d9d9a863a520b4ba13c7 /gcc/ada/sinput.adb | |
parent | bd717ec9b7edb898ec138f58a14821e776bb4fa3 (diff) | |
download | gcc-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.adb | 28 |
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; ------------------- |