]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Use a reference wrapper to please GCC 4.8
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Wed, 20 Nov 2024 12:35:22 +0000 (13:35 +0100)
committerArthur Cohen <arthur.cohen@embecosm.com>
Fri, 21 Mar 2025 11:32:59 +0000 (12:32 +0100)
gcc/rust/ChangeLog:

* backend/rust-compile-expr.cc (CompileExpr::visit): Change call.
(CompileExpr::resolve_operator_overload): Update function arguments.
* backend/rust-compile-expr.h: Change the function's prototype to use
a reference wrapper instead of a reference within the optional.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
gcc/rust/backend/rust-compile-expr.cc
gcc/rust/backend/rust-compile-expr.h

index 673acdeefb5190272309d1b8cc6c9c0c710d0b61..05c52261cf780e263d3c3c5530267eb996d18851 100644 (file)
@@ -31,6 +31,7 @@
 #include "convert.h"
 #include "print-tree.h"
 #include "rust-system.h"
+#include <functional>
 
 namespace Rust {
 namespace Compile {
@@ -152,8 +153,9 @@ CompileExpr::visit (HIR::ArithmeticOrLogicalExpr &expr)
     {
       auto lang_item_type
        = LangItem::OperatorToLangItem (expr.get_expr_type ());
-      translated = resolve_operator_overload (lang_item_type, expr, lhs, rhs,
-                                             expr.get_lhs (), expr.get_rhs ());
+      translated = resolve_operator_overload (
+       lang_item_type, expr, lhs, rhs, expr.get_lhs (),
+       tl::optional<std::reference_wrapper<HIR::Expr>> (expr.get_rhs ()));
       return;
     }
 
@@ -1476,10 +1478,9 @@ CompileExpr::get_receiver_from_dyn (const TyTy::DynamicObjectType *dyn,
 }
 
 tree
-CompileExpr::resolve_operator_overload (LangItem::Kind lang_item_type,
-                                       HIR::OperatorExprMeta expr, tree lhs,
-                                       tree rhs, HIR::Expr &lhs_expr,
-                                       tl::optional<HIR::Expr &> rhs_expr)
+CompileExpr::resolve_operator_overload (
+  LangItem::Kind lang_item_type, HIR::OperatorExprMeta expr, tree lhs, tree rhs,
+  HIR::Expr &lhs_expr, tl::optional<std::reference_wrapper<HIR::Expr>> rhs_expr)
 {
   TyTy::FnType *fntype;
   bool is_op_overload = ctx->get_tyctx ()->lookup_operator_overload (
index 0178a93f144e1d3b2f6d6c506a574aa7d1cb0229..b8c4220ded7e0a7cb5520a01d48a58ceecfe43a7 100644 (file)
@@ -96,10 +96,10 @@ protected:
                              TyTy::BaseType *receiver, TyTy::FnType *fntype,
                              tree receiver_ref, location_t expr_locus);
 
-  tree resolve_operator_overload (LangItem::Kind lang_item_type,
-                                 HIR::OperatorExprMeta expr, tree lhs,
-                                 tree rhs, HIR::Expr &lhs_expr,
-                                 tl::optional<HIR::Expr &> rhs_expr);
+  tree resolve_operator_overload (
+    LangItem::Kind lang_item_type, HIR::OperatorExprMeta expr, tree lhs,
+    tree rhs, HIR::Expr &lhs_expr,
+    tl::optional<std::reference_wrapper<HIR::Expr>> rhs_expr);
 
   tree compile_bool_literal (const HIR::LiteralExpr &expr,
                             const TyTy::BaseType *tyty);