From: jjasmine <[email protected]>
gcc/rust/ChangeLog:
* hir/tree/rust-hir.cc (InlineAsm::accept_vis):
Make sure CompileExpr::visit is reached
* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
Likewise
gcc/testsuite/ChangeLog:
* rust/compile/inline_asm_compile_nop.rs: New test.
---
gcc/rust/hir/tree/rust-hir.cc | 4 +++-
gcc/rust/typecheck/rust-hir-type-check-expr.cc | 4 +---
gcc/testsuite/rust/compile/inline_asm_compile_nop.rs | 12 ++++++++++++
3 files changed, 16 insertions(+), 4 deletions(-)
create mode 100644 gcc/testsuite/rust/compile/inline_asm_compile_nop.rs
diff --git a/gcc/rust/hir/tree/rust-hir.cc b/gcc/rust/hir/tree/rust-hir.cc
index 8e0d444ce15..f05e5065e62 100644
--- a/gcc/rust/hir/tree/rust-hir.cc
+++ b/gcc/rust/hir/tree/rust-hir.cc
@@ -3833,7 +3833,9 @@ BorrowExpr::accept_vis (HIRFullVisitor &vis)
void
InlineAsm::accept_vis (HIRExpressionVisitor &vis)
-{}
+{
+ vis.visit (*this);
+}
void
InlineAsm::accept_vis (HIRFullVisitor &vis)
diff --git a/gcc/rust/typecheck/rust-hir-type-check-expr.cc
b/gcc/rust/typecheck/rust-hir-type-check-expr.cc
index 6635f13ea04..1197916d1f5 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-expr.cc
+++ b/gcc/rust/typecheck/rust-hir-type-check-expr.cc
@@ -777,9 +777,7 @@ TypeCheckExpr::visit (HIR::RangeToExpr &expr)
void
TypeCheckExpr::visit (HIR::InlineAsm &expr)
-{
- return;
-}
+{}
void
TypeCheckExpr::visit (HIR::RangeFullExpr &expr)
diff --git a/gcc/testsuite/rust/compile/inline_asm_compile_nop.rs
b/gcc/testsuite/rust/compile/inline_asm_compile_nop.rs
new file mode 100644
index 00000000000..c49667c879d
--- /dev/null
+++ b/gcc/testsuite/rust/compile/inline_asm_compile_nop.rs
@@ -0,0 +1,12 @@
+#![feature(rustc_attrs)]
+
+#[rustc_builtin_macro]
+macro_rules! asm {
+ () => {}
+}
+
+fn main() {
+ unsafe {
+ asm!("nop");
+ }
+}
\ No newline at end of file
--
2.45.2