]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Fix visitor-related warnings
authorjjasmine <tanghocle456@gmail.com>
Thu, 6 Jun 2024 01:12:49 +0000 (18:12 -0700)
committerArthur Cohen <arthur.cohen@embecosm.com>
Mon, 17 Mar 2025 15:35:46 +0000 (16:35 +0100)
gcc/rust/ChangeLog:

* ast/rust-ast-collector.cc (TokenCollector::visit):
Fix visitor-related warnings
* ast/rust-ast-collector.h: Likewise.
* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Likewise.
* ast/rust-ast-visitor.h: Likewise.
* checks/errors/borrowck/rust-bir-builder-struct.h: Likewise.
* checks/errors/borrowck/rust-function-collector.h: Likewise.
* checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
* checks/errors/rust-const-checker.h: Likewise.
* expand/rust-derive.h: Likewise.
* expand/rust-macro-builtins-asm.cc (parse_reg_operand): Likewise.
* hir/rust-hir-dump.cc (Dump::visit): Likewise.
* hir/rust-hir-dump.h: Likewise.
* hir/tree/rust-hir-visitor.h: Likewise.
* resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Likewise.
* resolve/rust-ast-resolve-base.h: Likewise.

15 files changed:
gcc/rust/ast/rust-ast-collector.cc
gcc/rust/ast/rust-ast-collector.h
gcc/rust/ast/rust-ast-visitor.cc
gcc/rust/ast/rust-ast-visitor.h
gcc/rust/checks/errors/borrowck/rust-bir-builder-struct.h
gcc/rust/checks/errors/borrowck/rust-function-collector.h
gcc/rust/checks/errors/rust-const-checker.cc
gcc/rust/checks/errors/rust-const-checker.h
gcc/rust/expand/rust-derive.h
gcc/rust/expand/rust-macro-builtins-asm.cc
gcc/rust/hir/rust-hir-dump.cc
gcc/rust/hir/rust-hir-dump.h
gcc/rust/hir/tree/rust-hir-visitor.h
gcc/rust/resolve/rust-ast-resolve-base.cc
gcc/rust/resolve/rust-ast-resolve-base.h

index bc8bc9caabefd4f35cf25ec8a155792d02ede0d7..f1d5c8c6c326eeb7b3691122612c5c17340486b0 100644 (file)
@@ -18,6 +18,7 @@
 #include "rust-ast-collector.h"
 #include "rust-ast.h"
 #include "rust-diagnostics.h"
+#include "rust-expr.h"
 #include "rust-item.h"
 #include "rust-keyword-values.h"
 #include "rust-token.h"
@@ -1511,6 +1512,10 @@ TokenCollector::visit (AsyncBlockExpr &expr)
   visit (expr.get_block_expr ());
 }
 
+void
+TokenCollector::visit (InlineAsm &expr)
+{}
+
 // rust-item.h
 
 void
index 7b418bb6d31ea50c739b671384d4dfe7a35e35b8..b2dc41b4318acfaad6b4a6481ed41743c29ff898 100644 (file)
@@ -303,7 +303,7 @@ public:
   void visit (MatchExpr &expr);
   void visit (AwaitExpr &expr);
   void visit (AsyncBlockExpr &expr);
-
+  void visit (InlineAsm &expr);
   // rust-item.h
   void visit (TypeParam &param);
   void visit (LifetimeWhereClauseItem &item);
index 2c1674e21ea15cf7d0b131dea18178d09b108743..c4abf2ea870d37accedf8e165e8636b7293830fa 100644 (file)
@@ -662,6 +662,12 @@ DefaultASTVisitor::visit (AST::AsyncBlockExpr &expr)
   visit (expr.get_block_expr ());
 }
 
+void
+DefaultASTVisitor::visit (AST::InlineAsm &expr)
+{
+  rust_unreachable ();
+}
+
 void
 DefaultASTVisitor::visit (AST::TypeParam &param)
 {
index d91ef3da93e04aff61a15b236d627c85edc48dc2..2f56d89c582b7f1053497faab0c3bb18dc3ebf33 100644 (file)
@@ -23,7 +23,6 @@
 // full include not required - only forward decls
 #include "rust-ast-full-decls.h"
 #include "rust-ast.h"
-#include "rust-expr.h"
 #include "rust-item.h"
 #include "rust-system.h"
 
@@ -129,7 +128,7 @@ public:
   virtual void visit (MatchExpr &expr) = 0;
   virtual void visit (AwaitExpr &expr) = 0;
   virtual void visit (AsyncBlockExpr &expr) = 0;
-  virtual void visit (InlineAsm &expr) { rust_unreachable (); }
+  virtual void visit (InlineAsm &expr) = 0;
 
   // rust-item.h
   virtual void visit (TypeParam &param) = 0;
@@ -313,6 +312,8 @@ protected:
   virtual void visit (AST::MatchExpr &expr) override;
   virtual void visit (AST::AwaitExpr &expr) override;
   virtual void visit (AST::AsyncBlockExpr &expr) override;
+  virtual void visit (InlineAsm &expr) override;
+
   virtual void visit (AST::TypeParam &param) override;
   virtual void visit (AST::LifetimeWhereClauseItem &item) override;
   virtual void visit (AST::TypeBoundWhereClauseItem &item) override;
index 17331ddc826a52bed0b04bcda647fbf99582c28d..53346bfe7370c042f1731f3704f5c51e965b3bf5 100644 (file)
@@ -154,6 +154,7 @@ protected:
   void visit (HIR::MatchExpr &expr) override { rust_unreachable (); }
   void visit (HIR::AwaitExpr &expr) override { rust_unreachable (); }
   void visit (HIR::AsyncBlockExpr &expr) override { rust_unreachable (); }
+  void visit (HIR::InlineAsm &expr) override { rust_unreachable (); }
   void visit (HIR::TypeParam &param) override { rust_unreachable (); }
   void visit (HIR::ConstGenericParam &param) override { rust_unreachable (); }
   void visit (HIR::LifetimeWhereClauseItem &item) override
index 990534fed94d048ec0db6c3bc5cda14244de2417..51109d7dbdc7a28b65d22b817662f0441e296dcc 100644 (file)
@@ -124,6 +124,7 @@ public:
   void visit (HIR::MatchExpr &expr) override {}
   void visit (HIR::AwaitExpr &expr) override {}
   void visit (HIR::AsyncBlockExpr &expr) override {}
+  void visit (HIR::InlineAsm &expr) override {}
   void visit (HIR::TypeParam &param) override {}
   void visit (HIR::ConstGenericParam &param) override {}
   void visit (HIR::LifetimeWhereClauseItem &item) override {}
index 8c12012b33fa89893680e6dd0b1155c04a641c12..2beee2102796f14cf0611b833c1833726f38bf0e 100644 (file)
@@ -534,6 +534,10 @@ ConstChecker::visit (AsyncBlockExpr &)
   // TODO: Visit block expression
 }
 
+void
+ConstChecker::visit (InlineAsm &)
+{}
+
 void
 ConstChecker::visit (TypeParam &)
 {}
index 8b9df0ec9d4b5c03dc9783ac8dabc1ac2e0394e8..8890761e61d1a40949e726cc87edac076cf41c76 100644 (file)
@@ -133,6 +133,8 @@ private:
   virtual void visit (MatchExpr &expr) override;
   virtual void visit (AwaitExpr &expr) override;
   virtual void visit (AsyncBlockExpr &expr) override;
+  virtual void visit (InlineAsm &expr) override;
+
   virtual void visit (TypeParam &param) override;
   virtual void visit (ConstGenericParam &param) override;
   virtual void visit (LifetimeWhereClauseItem &item) override;
index c92f9c07f28acae8067e9a757b6867b45e9c9669..1924432d8ed147283bd0eb1a70b3b75577e59fab 100644 (file)
@@ -143,6 +143,7 @@ private:
   virtual void visit (MatchExpr &expr) override final{};
   virtual void visit (AwaitExpr &expr) override final{};
   virtual void visit (AsyncBlockExpr &expr) override final{};
+  virtual void visit (InlineAsm &expr) override final{};
   virtual void visit (TypeParam &param) override final{};
   virtual void visit (LifetimeWhereClauseItem &item) override final{};
   virtual void visit (TypeBoundWhereClauseItem &item) override final{};
index 55ba95a733137b4d6775d6750296c3bd32b463dd..b666fad34e275775c0959d91f025439d3c457bb7 100644 (file)
@@ -263,8 +263,23 @@ parse_reg_operand (Parser<MacroInvocLexer> &parser, TokenId last_token_id,
     }
   else if (!is_global_asm && check_identifier (parser, "out"))
     {
-      rust_unreachable ();
-      return tl::nullopt;
+      rust_debug ("Enter parse_reg_operand out");
+
+      auto reg = parse_reg (parser, last_token_id, inline_asm_ctx);
+
+      auto expr = parse_format_string (parser, last_token_id, inline_asm_ctx);
+      reg_operand.register_type = AST::InlineAsmOperand::RegisterType::Out;
+
+      // Since reg is of type optional<T>, we need to check if it is not
+      // optional first.
+      // TODO: We don't throw any errors since we should have throw any
+      // encountered parsing error in parse_reg
+      if (reg)
+       {
+         reg_operand.in.reg = reg.value ();
+       }
+
+      return reg_operand;
     }
   else if (!is_global_asm && check_identifier (parser, "lateout"))
     {
index 567c4f38004ecb0c164118da7c8914aed4881ede..f0fd9141f5e8d55ae0fccf299098f263ca48b469 100644 (file)
@@ -24,6 +24,7 @@
 #include "rust-hir.h"
 #include <string>
 #include "rust-attribute-values.h"
+#include "tree/rust-hir-expr.h"
 
 namespace Rust {
 namespace HIR {
@@ -1470,6 +1471,10 @@ Dump::visit (AsyncBlockExpr &e)
   end ("AsyncBlockExpr");
 }
 
+void
+Dump::visit (InlineAsm &e)
+{}
+
 void
 Dump::visit (TypeParam &e)
 {
index 51273c1203f29c53e7fd4676320993df1a8bf97b..bb5c3606b51a92582a9611f02bf25742708cef29 100644 (file)
@@ -166,6 +166,7 @@ private:
   virtual void visit (MatchExpr &) override;
   virtual void visit (AwaitExpr &) override;
   virtual void visit (AsyncBlockExpr &) override;
+  virtual void visit (InlineAsm &) override;
 
   virtual void visit (TypeParam &) override;
   virtual void visit (ConstGenericParam &) override;
index be1414905fa33ddead059eb7a8155bc4dfe8a68d..72609f4c850669b4d0f3a51ae8c5e175a8e48e57 100644 (file)
@@ -86,7 +86,7 @@ public:
   virtual void visit (MatchExpr &expr) = 0;
   virtual void visit (AwaitExpr &expr) = 0;
   virtual void visit (AsyncBlockExpr &expr) = 0;
-  virtual void visit (InlineAsm &expr) {}
+  virtual void visit (InlineAsm &expr) = 0;
   virtual void visit (TypeParam &param) = 0;
   virtual void visit (ConstGenericParam &param) = 0;
   virtual void visit (LifetimeWhereClauseItem &item) = 0;
@@ -225,6 +225,7 @@ public:
   virtual void visit (MatchExpr &) override {}
   virtual void visit (AwaitExpr &) override {}
   virtual void visit (AsyncBlockExpr &) override {}
+  virtual void visit (InlineAsm &) override {}
 
   virtual void visit (TypeParam &) override {}
   virtual void visit (ConstGenericParam &) override {}
index 66ce5bfa35a18f535f10546c934e263a45e5a4aa..69f146c48f23fea4e8b0d93a7cd4dc8273d9e481 100644 (file)
@@ -322,6 +322,10 @@ void
 ResolverBase::visit (AST::AsyncBlockExpr &)
 {}
 
+void
+ResolverBase::visit (AST::InlineAsm &)
+{}
+
 void
 ResolverBase::visit (AST::TypeParam &)
 {}
index 46bcac6ec8e62677085685a728c44257b959f1ae..0d497f81eacc97c21e03917c1f074a1c08bef5f8 100644 (file)
@@ -104,6 +104,7 @@ public:
   void visit (AST::MatchExpr &);
   void visit (AST::AwaitExpr &);
   void visit (AST::AsyncBlockExpr &);
+  void visit (AST::InlineAsm &);
 
   void visit (AST::TypeParam &);