diff options
author | jjasmine <tanghocle456@gmail.com> | 2024-06-23 19:47:17 -0700 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2025-03-19 15:32:05 +0100 |
commit | 0a03b4862107763bbce731d4f94373f4fd30a38c (patch) | |
tree | 14f5b2998afaab595add33a2efe9eb650382a222 /gcc/rust/hir/tree | |
parent | 12703f67ffd72b3842e99cf2b5558aafa2444727 (diff) | |
download | gcc-0a03b4862107763bbce731d4f94373f4fd30a38c.zip gcc-0a03b4862107763bbce731d4f94373f4fd30a38c.tar.gz gcc-0a03b4862107763bbce731d4f94373f4fd30a38c.tar.bz2 |
gccrs: Setting up interfaces for codegen
gcc/rust/ChangeLog:
* backend/rust-compile-expr.cc (CompileExpr::visit):
Setting up interfaces for codegen
* hir/tree/rust-hir-expr.h: Likewise.
Diffstat (limited to 'gcc/rust/hir/tree')
-rw-r--r-- | gcc/rust/hir/tree/rust-hir-expr.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/rust/hir/tree/rust-hir-expr.h b/gcc/rust/hir/tree/rust-hir-expr.h index 7b2e32e..ee46980 100644 --- a/gcc/rust/hir/tree/rust-hir-expr.h +++ b/gcc/rust/hir/tree/rust-hir-expr.h @@ -25,6 +25,7 @@ #include "rust-hir-path.h" #include "rust-operators.h" #include "rust-expr.h" +#include "tree.h" namespace Rust { namespace HIR { @@ -4163,8 +4164,33 @@ public: {} + 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 |