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)