https://gcc.gnu.org/g:4eb63c929f8bd77e0afa463bfc8f45986e12d288
commit 4eb63c929f8bd77e0afa463bfc8f45986e12d288 Author: jjasmine <tanghocle...@gmail.com> Date: Wed Jun 5 18:12:49 2024 -0700 Fix visitor-related warnings 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. Diff: --- gcc/rust/ast/rust-ast-collector.cc | 5 +++++ gcc/rust/ast/rust-ast-collector.h | 2 +- gcc/rust/ast/rust-ast-visitor.cc | 6 ++++++ gcc/rust/ast/rust-ast-visitor.h | 5 +++-- .../checks/errors/borrowck/rust-bir-builder-struct.h | 1 + .../checks/errors/borrowck/rust-function-collector.h | 1 + gcc/rust/checks/errors/rust-const-checker.cc | 4 ++++ gcc/rust/checks/errors/rust-const-checker.h | 2 ++ gcc/rust/expand/rust-derive.h | 1 + gcc/rust/expand/rust-macro-builtins-asm.cc | 19 +++++++++++++++++-- gcc/rust/hir/rust-hir-dump.cc | 5 +++++ gcc/rust/hir/rust-hir-dump.h | 1 + gcc/rust/hir/tree/rust-hir-visitor.h | 3 ++- gcc/rust/resolve/rust-ast-resolve-base.cc | 4 ++++ gcc/rust/resolve/rust-ast-resolve-base.h | 1 + 15 files changed, 54 insertions(+), 6 deletions(-) diff --git a/gcc/rust/ast/rust-ast-collector.cc b/gcc/rust/ast/rust-ast-collector.cc index 341b31857237..78a30afe0dd5 100644 --- a/gcc/rust/ast/rust-ast-collector.cc +++ b/gcc/rust/ast/rust-ast-collector.cc @@ -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 diff --git a/gcc/rust/ast/rust-ast-collector.h b/gcc/rust/ast/rust-ast-collector.h index 2873053c5f52..6a44669c14ff 100644 --- a/gcc/rust/ast/rust-ast-collector.h +++ b/gcc/rust/ast/rust-ast-collector.h @@ -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 ¶m); void visit (LifetimeWhereClauseItem &item); diff --git a/gcc/rust/ast/rust-ast-visitor.cc b/gcc/rust/ast/rust-ast-visitor.cc index 65a92bbf1e70..c645ade4772b 100644 --- a/gcc/rust/ast/rust-ast-visitor.cc +++ b/gcc/rust/ast/rust-ast-visitor.cc @@ -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 ¶m) { diff --git a/gcc/rust/ast/rust-ast-visitor.h b/gcc/rust/ast/rust-ast-visitor.h index fc807db15585..c4ce57cb7a3c 100644 --- a/gcc/rust/ast/rust-ast-visitor.h +++ b/gcc/rust/ast/rust-ast-visitor.h @@ -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 ¶m) = 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 ¶m) override; virtual void visit (AST::LifetimeWhereClauseItem &item) override; virtual void visit (AST::TypeBoundWhereClauseItem &item) override; diff --git a/gcc/rust/checks/errors/borrowck/rust-bir-builder-struct.h b/gcc/rust/checks/errors/borrowck/rust-bir-builder-struct.h index 6a990e25c43c..787b7017e1b6 100644 --- a/gcc/rust/checks/errors/borrowck/rust-bir-builder-struct.h +++ b/gcc/rust/checks/errors/borrowck/rust-bir-builder-struct.h @@ -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 ¶m) override { rust_unreachable (); } void visit (HIR::ConstGenericParam ¶m) override { rust_unreachable (); } void visit (HIR::LifetimeWhereClauseItem &item) override diff --git a/gcc/rust/checks/errors/borrowck/rust-function-collector.h b/gcc/rust/checks/errors/borrowck/rust-function-collector.h index 7058451f2b59..725d312f1113 100644 --- a/gcc/rust/checks/errors/borrowck/rust-function-collector.h +++ b/gcc/rust/checks/errors/borrowck/rust-function-collector.h @@ -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 ¶m) override {} void visit (HIR::ConstGenericParam ¶m) override {} void visit (HIR::LifetimeWhereClauseItem &item) override {} diff --git a/gcc/rust/checks/errors/rust-const-checker.cc b/gcc/rust/checks/errors/rust-const-checker.cc index 172540ecebb5..27b32b111523 100644 --- a/gcc/rust/checks/errors/rust-const-checker.cc +++ b/gcc/rust/checks/errors/rust-const-checker.cc @@ -534,6 +534,10 @@ ConstChecker::visit (AsyncBlockExpr &) // TODO: Visit block expression } +void +ConstChecker::visit (InlineAsm &) +{} + void ConstChecker::visit (TypeParam &) {} diff --git a/gcc/rust/checks/errors/rust-const-checker.h b/gcc/rust/checks/errors/rust-const-checker.h index a9bf087a9935..2bbf67b20d70 100644 --- a/gcc/rust/checks/errors/rust-const-checker.h +++ b/gcc/rust/checks/errors/rust-const-checker.h @@ -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 ¶m) override; virtual void visit (ConstGenericParam ¶m) override; virtual void visit (LifetimeWhereClauseItem &item) override; diff --git a/gcc/rust/expand/rust-derive.h b/gcc/rust/expand/rust-derive.h index 796c23f797e5..517fee614f00 100644 --- a/gcc/rust/expand/rust-derive.h +++ b/gcc/rust/expand/rust-derive.h @@ -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 ¶m) override final{}; virtual void visit (LifetimeWhereClauseItem &item) override final{}; virtual void visit (TypeBoundWhereClauseItem &item) override final{}; diff --git a/gcc/rust/expand/rust-macro-builtins-asm.cc b/gcc/rust/expand/rust-macro-builtins-asm.cc index 4e6193deb7bc..795c66aa917a 100644 --- a/gcc/rust/expand/rust-macro-builtins-asm.cc +++ b/gcc/rust/expand/rust-macro-builtins-asm.cc @@ -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")) { diff --git a/gcc/rust/hir/rust-hir-dump.cc b/gcc/rust/hir/rust-hir-dump.cc index 38c2db1d6cdc..bcacc8de9682 100644 --- a/gcc/rust/hir/rust-hir-dump.cc +++ b/gcc/rust/hir/rust-hir-dump.cc @@ -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) { diff --git a/gcc/rust/hir/rust-hir-dump.h b/gcc/rust/hir/rust-hir-dump.h index 6363eb4c604d..afaf92c25c48 100644 --- a/gcc/rust/hir/rust-hir-dump.h +++ b/gcc/rust/hir/rust-hir-dump.h @@ -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; diff --git a/gcc/rust/hir/tree/rust-hir-visitor.h b/gcc/rust/hir/tree/rust-hir-visitor.h index 80960fc03156..09ce053333cd 100644 --- a/gcc/rust/hir/tree/rust-hir-visitor.h +++ b/gcc/rust/hir/tree/rust-hir-visitor.h @@ -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 ¶m) = 0; virtual void visit (ConstGenericParam ¶m) = 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 {} diff --git a/gcc/rust/resolve/rust-ast-resolve-base.cc b/gcc/rust/resolve/rust-ast-resolve-base.cc index dfb3bffd4d22..4f1d6eaa7b04 100644 --- a/gcc/rust/resolve/rust-ast-resolve-base.cc +++ b/gcc/rust/resolve/rust-ast-resolve-base.cc @@ -322,6 +322,10 @@ void ResolverBase::visit (AST::AsyncBlockExpr &) {} +void +ResolverBase::visit (AST::InlineAsm &) +{} + void ResolverBase::visit (AST::TypeParam &) {} diff --git a/gcc/rust/resolve/rust-ast-resolve-base.h b/gcc/rust/resolve/rust-ast-resolve-base.h index c2a478bd35c4..7f01d503d8c6 100644 --- a/gcc/rust/resolve/rust-ast-resolve-base.h +++ b/gcc/rust/resolve/rust-ast-resolve-base.h @@ -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 &);