Skip to content

Commit

Permalink
Setting up interfaces for codegen
Browse files Browse the repository at this point in the history
gcc/rust/ChangeLog:

	* backend/rust-compile-expr.cc (CompileExpr::visit):
	Setting up interfaces for codegen
	* hir/tree/rust-hir-expr.h: Likewise.
  • Loading branch information
badumbatish committed Jun 30, 2024
1 parent f272809 commit 3906eec
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
6 changes: 4 additions & 2 deletions gcc/rust/backend/rust-compile-expr.cc
Original file line number Diff line number Diff line change
Expand Up @@ -321,8 +321,10 @@ CompileExpr::visit (HIR::IfExpr &expr)
void
CompileExpr::visit (HIR::InlineAsm &expr)
{
tree test_string = build_string(expr.template_strs[0].symbol.size() + 1, expr.template_strs[0].symbol.c_str());
debug(test_string);
// translated = build_asm_expr()(expr.get_locus(),
// expr.construct_string_tree(), expr.construct_outputs(),
// expr.construct_inputs(), expr.construct_clobber_tree(),
// expr.construct_label_tree(), expr.is_simple(), expr.is_inline_asm());
}

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

Expand Down Expand Up @@ -3928,8 +3929,33 @@ class InlineAsm : public ExprWithoutBlock

{}

tree construct_string_tree ()
{
if (template_strs.empty ())
return build_string (1, "");
// Initialize to NULL_TREE
tree string_chain = NULL_TREE;

for (const auto &template_str : template_strs)
{
auto str = template_str.symbol;
auto string_tree = build_string (str.size () + 1, str.c_str ());

string_chain = tree_cons (NULL_TREE, string_tree, string_chain);
}
// Reverse the chain before returning
return nreverse (string_chain);
}

tree construct_clobber_tree () { return NULL_TREE; }
tree construct_label_tree () { return NULL_TREE; }
tree construct_inputs () { return NULL_TREE; }
tree construct_outputs () { return NULL_TREE; }
// This function checks if the assembly macro is "simple" or not, according to
// the tree defition (tree.h) of the

// SIMPLE indicates whether there was anything at all after the
// string in the asm expression
bool is_simple ()
{
return operands.size () == 0 && clobber_abi.size () == 0
Expand Down

0 comments on commit 3906eec

Please sign in to comment.