aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/backend/rust-compile-asm.h
diff options
context:
space:
mode:
authorbadumbatish <tanghocle456@gmail.com>2024-07-07 22:03:12 -0700
committerCohenArthur <arthur.cohen@embecosm.com>2024-09-02 09:44:55 +0000
commit63bccfc7f19f95b198d1436630118c8f9473ba1b (patch)
tree6db519600ad6301569067aa0e891f28533b28eb4 /gcc/rust/backend/rust-compile-asm.h
parentf627811f55b3258c3be1813ad71babac262d7387 (diff)
downloadgcc-63bccfc7f19f95b198d1436630118c8f9473ba1b.zip
gcc-63bccfc7f19f95b198d1436630118c8f9473ba1b.tar.gz
gcc-63bccfc7f19f95b198d1436630118c8f9473ba1b.tar.bz2
Refactor compile-asm for first round review
gcc/rust/ChangeLog: * backend/rust-compile-asm.cc (strip_double_quotes): Refactor compile-asm for first round review (CompileAsm::asm_build_asm_stmt): Likewise. (CompileAsm::asm_build_expr): Likewise. (CompileAsm::asm_get_locus): Likewise. (CompileAsm::asm_construct_string_tree): Likewise. (CompileAsm::asm_construct_outputs): Likewise. (CompileAsm::asm_construct_inputs): Likewise. (CompileAsm::asm_construct_clobber_tree): Likewise. (CompileAsm::asm_construct_label_tree): Likewise. (CompileAsm::asm_is_simple): Likewise. (CompileAsm::asm_is_inline): Likewise. * backend/rust-compile-asm.h (strip_double_quotes): Likewise. (class CompileAsm): Likewise.
Diffstat (limited to 'gcc/rust/backend/rust-compile-asm.h')
-rw-r--r--gcc/rust/backend/rust-compile-asm.h127
1 files changed, 62 insertions, 65 deletions
diff --git a/gcc/rust/backend/rust-compile-asm.h b/gcc/rust/backend/rust-compile-asm.h
index d7967bc..15ffc70 100644
--- a/gcc/rust/backend/rust-compile-asm.h
+++ b/gcc/rust/backend/rust-compile-asm.h
@@ -26,78 +26,25 @@
namespace Rust {
namespace Compile {
+std::string
+strip_double_quotes (const std::string &);
+
class CompileAsm : private HIRCompileBase, protected HIR::HIRExpressionVisitor
{
+private:
+ tree translated;
+
public:
+ // WE WILL OPEN THIS UP WHEN WE WANT TO ADD A DEDICATED PASS OF HIR'S ASM
+ // translation.
// static tree Compile (HIR::Expr *expr, Context *ctx);
- void visit (HIR::InlineAsm &expr) override;
-
- void visit (HIR::TupleIndexExpr &expr) override {}
- void visit (HIR::TupleExpr &expr) override {}
- void visit (HIR::ReturnExpr &expr) override {}
- void visit (HIR::CallExpr &expr) override {}
- void visit (HIR::MethodCallExpr &expr) override {}
- void visit (HIR::LiteralExpr &expr) override {}
- void visit (HIR::AssignmentExpr &expr) override {}
- void visit (HIR::CompoundAssignmentExpr &expr) override {}
- void visit (HIR::ArrayIndexExpr &expr) override {}
- void visit (HIR::ArrayExpr &expr) override {}
- void visit (HIR::ArithmeticOrLogicalExpr &expr) override {}
- void visit (HIR::ComparisonExpr &expr) override {}
- void visit (HIR::LazyBooleanExpr &expr) override {}
- void visit (HIR::NegationExpr &expr) override {}
- void visit (HIR::TypeCastExpr &expr) override {}
- void visit (HIR::IfExpr &expr) override {}
- void visit (HIR::IfExprConseqElse &expr) override {}
- void visit (HIR::BlockExpr &expr) override {}
- void visit (HIR::UnsafeBlockExpr &expr) override {}
- void visit (HIR::StructExprStruct &struct_expr) override {}
- void visit (HIR::StructExprStructFields &struct_expr) override {}
- void visit (HIR::GroupedExpr &expr) override {}
- void visit (HIR::FieldAccessExpr &expr) override {}
- void visit (HIR::QualifiedPathInExpression &expr) override {}
- void visit (HIR::PathInExpression &expr) override {}
- void visit (HIR::LoopExpr &expr) override {}
- void visit (HIR::WhileLoopExpr &expr) override {}
- void visit (HIR::BreakExpr &expr) override {}
- void visit (HIR::ContinueExpr &expr) override {}
- void visit (HIR::BorrowExpr &expr) override {}
- void visit (HIR::DereferenceExpr &expr) override {}
- void visit (HIR::MatchExpr &expr) override {}
- void visit (HIR::RangeFromToExpr &expr) override {}
- void visit (HIR::RangeFromExpr &expr) override {}
- void visit (HIR::RangeToExpr &expr) override {}
- void visit (HIR::RangeFullExpr &expr) override {}
- void visit (HIR::RangeFromToInclExpr &expr) override {}
- void visit (HIR::ClosureExpr &expr) override {}
-
- // TODO
- void visit (HIR::ErrorPropagationExpr &) override {}
- void visit (HIR::RangeToInclExpr &) override {}
-
- // TODO
- // these need to be sugared in the HIR to if statements and a match
- void visit (HIR::WhileLetLoopExpr &) override {}
- void visit (HIR::IfLetExpr &) override {}
- void visit (HIR::IfLetExprConseqElse &) override {}
-
- // lets not worry about async yet....
- void visit (HIR::AwaitExpr &) override {}
- void visit (HIR::AsyncBlockExpr &) override {}
-
- // nothing to do for these
- void visit (HIR::StructExprFieldIdentifier &) override {}
- void visit (HIR::StructExprFieldIdentifierValue &) override {}
- void visit (HIR::StructExprFieldIndexValue &) override {}
-
+ // RELEVANT MEMBER FUNCTIONS
static const int ASM_TREE_ARRAY_LENGTH = 5;
- static tree asm_build_asm_stmt (HIR::InlineAsm &);
static tree asm_build_expr (HIR::InlineAsm &);
- static tree asm_build_stmt (location_t, enum tree_code,
+ static tree asm_build_stmt (location_t,
const std::array<tree, ASM_TREE_ARRAY_LENGTH> &);
- static location_t asm_get_locus (HIR::InlineAsm &);
static tree asm_construct_string_tree (HIR::InlineAsm &);
static tree asm_construct_outputs (HIR::InlineAsm &);
static tree asm_construct_inputs (HIR::InlineAsm &);
@@ -108,8 +55,58 @@ public:
CompileAsm (Context *ctx);
-private:
- tree translated;
+ void visit (HIR::InlineAsm &) override;
+
+ // NON RELEVANT MEMBER FUNCTIONS
+
+ void visit (HIR::TupleIndexExpr &) override {}
+ void visit (HIR::TupleExpr &) override {}
+ void visit (HIR::ReturnExpr &) override {}
+ void visit (HIR::CallExpr &) override {}
+ void visit (HIR::MethodCallExpr &) override {}
+ void visit (HIR::LiteralExpr &) override {}
+ void visit (HIR::AssignmentExpr &) override {}
+ void visit (HIR::CompoundAssignmentExpr &) override {}
+ void visit (HIR::ArrayIndexExpr &) override {}
+ void visit (HIR::ArrayExpr &) override {}
+ void visit (HIR::ArithmeticOrLogicalExpr &) override {}
+ void visit (HIR::ComparisonExpr &) override {}
+ void visit (HIR::LazyBooleanExpr &) override {}
+ void visit (HIR::NegationExpr &) override {}
+ void visit (HIR::TypeCastExpr &) override {}
+ void visit (HIR::IfExpr &) override {}
+ void visit (HIR::IfExprConseqElse &) override {}
+ void visit (HIR::BlockExpr &) override {}
+ void visit (HIR::UnsafeBlockExpr &) override {}
+ void visit (HIR::StructExprStruct &struct_) override {}
+ void visit (HIR::StructExprStructFields &struct_) override {}
+ void visit (HIR::GroupedExpr &) override {}
+ void visit (HIR::FieldAccessExpr &) override {}
+ void visit (HIR::QualifiedPathInExpression &) override {}
+ void visit (HIR::PathInExpression &) override {}
+ void visit (HIR::LoopExpr &) override {}
+ void visit (HIR::WhileLoopExpr &) override {}
+ void visit (HIR::BreakExpr &) override {}
+ void visit (HIR::ContinueExpr &) override {}
+ void visit (HIR::BorrowExpr &) override {}
+ void visit (HIR::DereferenceExpr &) override {}
+ void visit (HIR::MatchExpr &) override {}
+ void visit (HIR::RangeFromToExpr &) override {}
+ void visit (HIR::RangeFromExpr &) override {}
+ void visit (HIR::RangeToExpr &) override {}
+ void visit (HIR::RangeFullExpr &) override {}
+ void visit (HIR::RangeFromToInclExpr &) override {}
+ void visit (HIR::ClosureExpr &) override {}
+ void visit (HIR::ErrorPropagationExpr &) override {}
+ void visit (HIR::RangeToInclExpr &) override {}
+ void visit (HIR::WhileLetLoopExpr &) override {}
+ void visit (HIR::IfLetExpr &) override {}
+ void visit (HIR::IfLetExprConseqElse &) override {}
+ void visit (HIR::AwaitExpr &) override {}
+ void visit (HIR::AsyncBlockExpr &) override {}
+ void visit (HIR::StructExprFieldIdentifier &) override {}
+ void visit (HIR::StructExprFieldIdentifierValue &) override {}
+ void visit (HIR::StructExprFieldIndexValue &) override {}
};
} // namespace Compile
} // namespace Rust