diff options
author | Alexandre Oliva <oliva@adacore.com> | 2022-05-13 07:48:50 -0300 |
---|---|---|
committer | Alexandre Oliva <oliva@gnu.org> | 2022-05-13 07:48:50 -0300 |
commit | 6aaa1d573912828efed1514fbec5e1ef8a7cc3bc (patch) | |
tree | e7228d8db053b96f216c7f525d3e5bbec141c15d /gcc | |
parent | 9a79854be0a81faf76fff073f447c2334d47e819 (diff) | |
download | gcc-6aaa1d573912828efed1514fbec5e1ef8a7cc3bc.zip gcc-6aaa1d573912828efed1514fbec5e1ef8a7cc3bc.tar.gz gcc-6aaa1d573912828efed1514fbec5e1ef8a7cc3bc.tar.bz2 |
ada: gcc-if: build proper String_Pointer for Get_External_Name
The compiler is allowed to assume it can access String bounds, such as
the prefix passed to Get_External_Name, even in circumstances in which
the prefix is not going to be used and has_prefix is false, so, from
the C side, we have to build a proper String_Template for the
String_Pointer.
for gcc/ada/ChangeLog
* gcc-interface/decl.cc (is_cplusplus_method): Build proper
String for Get_External_Name.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/gcc-interface/decl.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/ada/gcc-interface/decl.cc b/gcc/ada/gcc-interface/decl.cc index 56ad499..28e1ab7 100644 --- a/gcc/ada/gcc-interface/decl.cc +++ b/gcc/ada/gcc-interface/decl.cc @@ -4956,7 +4956,8 @@ is_cplusplus_method (Entity_Id gnat_entity) 'this' parameter is not encoded in the mangled name of a method. */ if (Is_Subprogram (gnat_entity) && Present (Interface_Name (gnat_entity))) { - String_Pointer sp = { NULL, NULL }; + String_Template temp = { 0, 0 }; + String_Pointer sp = { "", &temp }; Get_External_Name (gnat_entity, false, sp); void *mem; |