https://gcc.gnu.org/g:8e8f1cb7714587cece9b09a1199b1ffff7056e9e

commit 8e8f1cb7714587cece9b09a1199b1ffff7056e9e
Author: Tobias Burnus <tbur...@baylibre.com>
Date:   Thu Jan 23 22:48:21 2025 +0100

    OpenMP/C++: Use STRIP_REFERENCE_REF to fix declare variant with 
reference-returning functions
    
    As Jakub suggested, use STRIP_REFERENCE_REF instead of doing it manually
    as r15-4800-geb828a1e380e7b did.
    
    gcc/cp/ChangeLog:
    
            * decl.cc (omp_declare_variant_finalize_one): Use 
STRIP_REFERENCE_REF
            instead of doing it manually.
    
    (cherry picked from commit f7ae087ef0132b01c3a2c04932058b996ebda18d)

Diff:
---
 gcc/cp/ChangeLog.omp | 8 ++++++++
 gcc/cp/decl.cc       | 5 +----
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/gcc/cp/ChangeLog.omp b/gcc/cp/ChangeLog.omp
index 6745dd6f0947..b68cd46caf42 100644
--- a/gcc/cp/ChangeLog.omp
+++ b/gcc/cp/ChangeLog.omp
@@ -1,3 +1,11 @@
+2025-01-23  Tobias Burnus  <tbur...@baylibre.com>
+
+       Backported from master:
+       2024-10-31  Tobias Burnus  <tbur...@baylibre.com>
+
+       * decl.cc (omp_declare_variant_finalize_one): Use STRIP_REFERENCE_REF
+       instead of doing it manually.
+
 2025-01-23  Tobias Burnus  <tbur...@baylibre.com>
 
        Backported from master:
diff --git a/gcc/cp/decl.cc b/gcc/cp/decl.cc
index b1cf16d5f567..097e958b1ec1 100644
--- a/gcc/cp/decl.cc
+++ b/gcc/cp/decl.cc
@@ -8318,10 +8318,7 @@ omp_declare_variant_finalize_one (tree decl, tree attr)
   if (variant == error_mark_node && !processing_template_decl)
     return true;
 
-  if (TREE_CODE (variant) == INDIRECT_REF)
-    variant = TREE_OPERAND (variant, 0);
-
-  variant = cp_get_callee_fndecl_nofold (variant);
+  variant = cp_get_callee_fndecl_nofold (STRIP_REFERENCE_REF (variant));
   input_location = save_loc;
 
   if (variant)

Reply via email to