diff mbox series

Do not use caller-saved registers for COMDAT functions

Message ID 895ae57e-36be-416e-844b-f5e6b2c5488c@126.com
State New
Headers show
Series Do not use caller-saved registers for COMDAT functions | expand

Commit Message

LIU Hao July 15, 2024, 9:04 a.m. UTC

Comments

Jonathan Yong July 15, 2024, 12:45 p.m. UTC | #1
On 7/15/24 09:04, LIU Hao wrote:
> 
> diff --git a/gcc/varasm.cc b/gcc/varasm.cc
> index 747f74ba1c0..b67a0b524db 100644
> --- a/gcc/varasm.cc
> +++ b/gcc/varasm.cc
> @@ -7805,6 +7805,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)))
> -- 
> 2.34.1


Looks ok to me, will push to master branch soon if there are no further 
comments.
Jonathan Yong July 18, 2024, 1:15 p.m. UTC | #2
On 7/15/24 12:45, Jonathan Yong wrote:
> On 7/15/24 09:04, LIU Hao wrote:
>>
>> diff --git a/gcc/varasm.cc b/gcc/varasm.cc
>> index 747f74ba1c0..b67a0b524db 100644
>> --- a/gcc/varasm.cc
>> +++ b/gcc/varasm.cc
>> @@ -7805,6 +7805,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)))
>> -- 
>> 2.34.1
> 
> 
> Looks ok to me, will push to master branch soon if there are no further 
> comments.

Thanks, pushed to master branch.
diff mbox series

Patch

From 6a2f0d3fbd443487bb6dd7bc95ed5403cd572ac1 Mon Sep 17 00:00:00 2001
From: LIU Hao <lh_mouse@126.com>
Date: Mon, 15 Jul 2024 16:55:52 +0800
Subject: [PATCH] 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.
---
 gcc/varasm.cc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gcc/varasm.cc b/gcc/varasm.cc
index 747f74ba1c0..b67a0b524db 100644
--- a/gcc/varasm.cc
+++ b/gcc/varasm.cc
@@ -7805,6 +7805,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)))
-- 
2.34.1