Pushed to trunk :)
On Mon, May 19, 2025 at 3:18 PM Dongyan Chen <chendong...@isrc.iscas.ac.cn> wrote: > > During the GCC compilation, some warnings about temporary object dangling > references emerged. They appeared in these code lines in riscv-common.cc: > const riscv_ext_info_t &implied_ext_info, const riscv_ext_info_t &ext_info = > get_riscv_ext_info (ext) and auto &ext_info = get_riscv_ext_info (search_ext). > The issue arose because the local variable types were not used in a > standardized way, causing their references to dangle once the function ended. > To fix this, the patch changes the argument type of get_riscv_ext_info to > `const char *`, thereby eliminating the warnings. > > Changes for v2: > - Change the argument type of get_riscv_ext_info to `const char *` to > eliminate the warnings. > > gcc/ChangeLog: > > * common/config/riscv/riscv-common.cc (get_riscv_ext_info): Fix > argument type. > (riscv_subset_list::check_implied_ext): Type conversion. > > --- > gcc/common/config/riscv/riscv-common.cc | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/gcc/common/config/riscv/riscv-common.cc > b/gcc/common/config/riscv/riscv-common.cc > index 53ca03910b38..c843393998cb 100644 > --- a/gcc/common/config/riscv/riscv-common.cc > +++ b/gcc/common/config/riscv/riscv-common.cc > @@ -215,7 +215,7 @@ static const std::unordered_map<std::string, > riscv_ext_info_t> riscv_ext_infos > }; > > static const riscv_ext_info_t & > -get_riscv_ext_info (const std::string &ext) > +get_riscv_ext_info (const char * ext) > { > auto itr = riscv_ext_infos.find (ext); > if (itr == riscv_ext_infos.end ()) > @@ -1112,7 +1112,7 @@ riscv_subset_list::check_implied_ext () > for (itr = m_head; itr != NULL; itr = itr->next) > { > auto &ext = *itr; > - auto &ext_info = get_riscv_ext_info (ext.name); > + auto &ext_info = get_riscv_ext_info (ext.name.c_str ()); > for (auto &implied_ext : ext_info.implied_exts ()) > { > if (!implied_ext.match (this)) > -- > 2.43.0 >