]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Improve handling of InlineAsm in DefaultASTVisitor
authorOwen Avery <powerboat9.gamer@gmail.com>
Thu, 10 Oct 2024 01:47:02 +0000 (21:47 -0400)
committerArthur Cohen <arthur.cohen@embecosm.com>
Wed, 19 Mar 2025 14:32:17 +0000 (15:32 +0100)
gcc/rust/ChangeLog:

* ast/rust-ast-visitor.cc
(DefaultASTVisitor::visit): Visit fields of InlineAsm.

gcc/testsuite/ChangeLog:

* rust/compile/nr2/exclude: Remove
inline_asm_parse_output_operand.rs.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
gcc/rust/ast/rust-ast-visitor.cc
gcc/testsuite/rust/compile/nr2/exclude

index b124531b09c3ba60165414756bd413de66ff9719..8f53e528131abc0bcf27d3ef529d25e6daa4f3fb 100644 (file)
@@ -675,7 +675,46 @@ DefaultASTVisitor::visit (AST::AsyncBlockExpr &expr)
 
 void
 DefaultASTVisitor::visit (AST::InlineAsm &expr)
-{}
+{
+  visit_outer_attrs (expr);
+  using RegisterType = AST::InlineAsmOperand::RegisterType;
+  for (auto &operand : expr.get_operands ())
+    {
+      switch (operand.get_register_type ())
+       {
+         case RegisterType::In: {
+           visit (operand.get_in ().expr);
+           break;
+         }
+         case RegisterType::Out: {
+           visit (operand.get_out ().expr);
+           break;
+         }
+         case RegisterType::InOut: {
+           visit (operand.get_in_out ().expr);
+           break;
+         }
+         case RegisterType::SplitInOut: {
+           auto split = operand.get_split_in_out ();
+           visit (split.in_expr);
+           visit (split.out_expr);
+           break;
+         }
+         case RegisterType::Const: {
+           visit (operand.get_const ().anon_const.expr);
+           break;
+         }
+         case RegisterType::Sym: {
+           visit (operand.get_sym ().expr);
+           break;
+         }
+         case RegisterType::Label: {
+           visit (operand.get_label ().expr);
+           break;
+         }
+       }
+    }
+}
 
 void
 DefaultASTVisitor::visit (AST::TypeParam &param)
index 166977e7bacc1a280d88833b5a2844645145d94b..6c7d504129139da4c2e9f681b3f1828297c7bb2a 100644 (file)
@@ -233,7 +233,6 @@ issue-3045-1.rs
 issue-3045-2.rs
 issue-3046.rs
 unknown-associated-item.rs
-inline_asm_parse_output_operand.rs
 issue-3030.rs
 issue-3035.rs
 issue-3082.rs