Skip to content

Commit

Permalink
Minor fix to asm codegen pr
Browse files Browse the repository at this point in the history
gcc/rust/ChangeLog:

	* backend/rust-compile-asm.cc (CompileAsm::asm_build_expr):
	Use expr's is_simple_asm and is_inline_asm
	(CompileAsm::asm_is_simple): removed
	(CompileAsm::asm_is_inline): removed
	* backend/rust-compile-asm.h: Add docs to ASM_TREE_ARRAY_LENGTH
	* hir/tree/rust-hir-expr.h: Add is_simple_asm, is_inline_asm
	and remove #include tree
  • Loading branch information
badumbatish committed Jul 18, 2024
1 parent cff9299 commit 1e619a5
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 18 deletions.
17 changes: 2 additions & 15 deletions gcc/rust/backend/rust-compile-asm.cc
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ CompileAsm::asm_build_expr (HIR::InlineAsm &expr)
asm_construct_clobber_tree (expr),
asm_construct_label_tree (expr)});

ASM_INPUT_P (asm_expr) = CompileAsm::asm_is_simple (expr);
ASM_INPUT_P (asm_expr) = expr.is_simple_asm ();
ASM_VOLATILE_P (asm_expr) = false;
ASM_INLINE_P (asm_expr) = CompileAsm::asm_is_inline (expr);
ASM_INLINE_P (asm_expr) = expr.is_inline_asm ();
return asm_expr;
}

Expand Down Expand Up @@ -120,18 +120,5 @@ CompileAsm::asm_construct_label_tree (HIR::InlineAsm &expr)
return NULL_TREE;
}

bool
CompileAsm::asm_is_simple (HIR::InlineAsm &expr)
{
// TODO: Check back later to determine how an InlineAsm is simple.
return true;
}

bool
CompileAsm::asm_is_inline (HIR::InlineAsm &expr)
{
// TODO: Check back later to determine how an InlineAsm is inline.
return true;
}
} // namespace Compile
} // namespace Rust
10 changes: 8 additions & 2 deletions gcc/rust/backend/rust-compile-asm.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,14 @@ class CompileAsm : private HIRCompileBase, protected HIR::HIRExpressionVisitor
// static tree Compile (HIR::Expr *expr, Context *ctx);

// RELEVANT MEMBER FUNCTIONS

// The limit is 5 because it stands for the 5 things that the C version of
// build_asm_expr accepts: string, output, input, clobber and label.
// The function signature is
//
// tree
// build_asm_expr (location_t loc, tree string, tree outputs, tree inputs,
// tree clobbers, tree labels, bool simple, bool is_inline)
static const int ASM_TREE_ARRAY_LENGTH = 5;
static tree asm_build_expr (HIR::InlineAsm &);
static tree asm_build_stmt (location_t,
Expand All @@ -50,8 +58,6 @@ class CompileAsm : private HIRCompileBase, protected HIR::HIRExpressionVisitor
static tree asm_construct_inputs (HIR::InlineAsm &);
static tree asm_construct_clobber_tree (HIR::InlineAsm &);
static tree asm_construct_label_tree (HIR::InlineAsm &);
static bool asm_is_simple (HIR::InlineAsm &);
static bool asm_is_inline (HIR::InlineAsm &);

CompileAsm (Context *ctx);

Expand Down
12 changes: 11 additions & 1 deletion gcc/rust/hir/tree/rust-hir-expr.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
#include "rust-hir-path.h"
#include "rust-operators.h"
#include "rust-expr.h"
#include "tree.h"
namespace Rust {
namespace HIR {

Expand Down Expand Up @@ -3912,6 +3911,17 @@ class InlineAsm : public ExprWithoutBlock

std::set<AST::InlineAsmOption> get_options () { return options; }

bool is_simple_asm ()
{
// TODO: Check back later to determine how an InlineAsm is simple.
return true;
}

bool is_inline_asm ()
{
// TODO: Check back later to determine how an InlineAsm is inline.
return true;
}
InlineAsm (location_t locus, bool is_global_asm,
std::vector<AST::InlineAsmTemplatePiece> template_,
std::vector<AST::TupleTemplateStr> template_strs,
Expand Down

0 comments on commit 1e619a5

Please sign in to comment.