diff options
author | LIU Hao <lh_mouse@126.com> | 2024-07-15 16:55:52 +0800 |
---|---|---|
committer | Jonathan Yong <10walls@gmail.com> | 2024-07-18 13:14:39 +0000 |
commit | 5080840d8fbf25a321dd27543a1462d393d338bc (patch) | |
tree | 2b566e2a07fa56044b6de1af5ad6be4fcd7f1589 /gcc | |
parent | 3670c70c561656a19f6bff36dd229f18120af127 (diff) | |
download | gcc-5080840d8fbf25a321dd27543a1462d393d338bc.zip gcc-5080840d8fbf25a321dd27543a1462d393d338bc.tar.gz gcc-5080840d8fbf25a321dd27543a1462d393d338bc.tar.bz2 |
Do not use caller-saved registers for COMDAT functions
A reference to a COMDAT function may be resolved to another definition
outside the current translation unit, so it's not eligible for `-fipa-ra`.
In `decl_binds_to_current_def_p()` there is already a check for weak
symbols. This commit checks for COMDAT functions that are not implemented
as weak symbols, for example, on *-*-mingw32.
gcc/ChangeLog:
PR rtl-optimization/115049
* varasm.cc (decl_binds_to_current_def_p): Add a check for COMDAT
declarations too, like weak ones.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/varasm.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/varasm.cc b/gcc/varasm.cc index beb8870..4426e7c 100644 --- a/gcc/varasm.cc +++ b/gcc/varasm.cc @@ -7813,6 +7813,8 @@ decl_binds_to_current_def_p (const_tree decl) for all other declaration types. */ if (DECL_WEAK (decl)) return false; + if (DECL_COMDAT_GROUP (decl)) + return false; if (DECL_COMMON (decl) && (DECL_INITIAL (decl) == NULL || (!in_lto_p && DECL_INITIAL (decl) == error_mark_node))) |