summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/hir/deserialise.cpp2
-rw-r--r--src/hir_conv/bind.cpp2
-rw-r--r--src/hir_conv/constant_evaluation.cpp2
-rw-r--r--src/hir_expand/const_eval_full.cpp2
-rw-r--r--src/mir/check.cpp3
-rw-r--r--src/mir/cleanup.cpp2
-rw-r--r--src/mir/mir.hpp6
-rw-r--r--src/mir/mir_builder.cpp2
-rw-r--r--src/mir/optimise.cpp2
-rw-r--r--src/trans/codegen_c.cpp2
-rw-r--r--src/trans/enumerate.cpp4
-rw-r--r--src/trans/monomorphise.cpp2
12 files changed, 16 insertions, 15 deletions
diff --git a/src/hir/deserialise.cpp b/src/hir/deserialise.cpp
index fd6cbbf2..c9c94be3 100644
--- a/src/hir/deserialise.cpp
+++ b/src/hir/deserialise.cpp
@@ -399,7 +399,7 @@ namespace {
deserialise_mir_lvalue()
})
_(MakeDst, {
- deserialise_mir_lvalue(),
+ deserialise_mir_param(),
deserialise_mir_param()
})
_(Tuple, {
diff --git a/src/hir_conv/bind.cpp b/src/hir_conv/bind.cpp
index 53d97fb0..20e8f7ca 100644
--- a/src/hir_conv/bind.cpp
+++ b/src/hir_conv/bind.cpp
@@ -576,7 +576,7 @@ namespace {
H::visit_lvalue(*this, e.val);
),
(MakeDst,
- H::visit_lvalue(*this, e.ptr_val);
+ H::visit_param(*this, e.ptr_val);
H::visit_param(*this, e.meta_val);
),
(Tuple,
diff --git a/src/hir_conv/constant_evaluation.cpp b/src/hir_conv/constant_evaluation.cpp
index b604b510..be27e0a4 100644
--- a/src/hir_conv/constant_evaluation.cpp
+++ b/src/hir_conv/constant_evaluation.cpp
@@ -1351,7 +1351,7 @@ namespace {
TODO(sp, "RValue::DstPtr");
),
(MakeDst,
- auto ptr = read_lval(e.ptr_val);
+ auto ptr = read_param(e.ptr_val);
auto meta = read_param(e.meta_val);
if( ! meta.is_Integer() ) {
TODO(sp, "RValue::MakeDst - (non-integral meta) " << ptr << " , " << meta);
diff --git a/src/hir_expand/const_eval_full.cpp b/src/hir_expand/const_eval_full.cpp
index 4a6fec21..a88d6075 100644
--- a/src/hir_expand/const_eval_full.cpp
+++ b/src/hir_expand/const_eval_full.cpp
@@ -677,7 +677,7 @@ namespace {
TODO(sp, "RValue::DstPtr");
),
(MakeDst,
- auto ptr = read_lval(e.ptr_val);
+ auto ptr = read_param(e.ptr_val);
auto meta = read_param(e.meta_val);
if( ! meta.is_Integer() ) {
TODO(sp, "RValue::MakeDst - (non-integral meta) " << ptr << " , " << meta);
diff --git a/src/mir/check.cpp b/src/mir/check.cpp
index 62e06d51..c76b6e92 100644
--- a/src/mir/check.cpp
+++ b/src/mir/check.cpp
@@ -430,7 +430,8 @@ void MIR_Validate_ValState(::MIR::TypeResolve& state, const ::MIR::Function& fcn
),
(MakeDst,
//val_state.move_val(state, se.ptr_val);
- val_state.ensure_valid(state, se.ptr_val);
+ if( const auto* e = se.ptr_val.opt_LValue() )
+ val_state.ensure_valid(state, *e);
val_state.move_val(state, se.meta_val);
),
(Tuple,
diff --git a/src/mir/cleanup.cpp b/src/mir/cleanup.cpp
index c9dba9bd..8ab78ab2 100644
--- a/src/mir/cleanup.cpp
+++ b/src/mir/cleanup.cpp
@@ -997,7 +997,7 @@ void MIR_Cleanup(const StaticTraitResolve& resolve, const ::HIR::ItemPath& path,
re.val = mv$( *v.as_Deref().val );
),
(MakeDst,
- MIR_Cleanup_LValue(state, mutator, re.ptr_val);
+ MIR_Cleanup_Param(state, mutator, re.ptr_val);
MIR_Cleanup_Param(state, mutator, re.meta_val);
),
(Tuple,
diff --git a/src/mir/mir.hpp b/src/mir/mir.hpp
index 94eaa973..d2d75e1c 100644
--- a/src/mir/mir.hpp
+++ b/src/mir/mir.hpp
@@ -91,8 +91,8 @@ enum class eUniOp
// Compile-time known values
TAGGED_UNION_EX(Constant, (), Int, (
- (Int, ::std::int64_t),
- (Uint, ::std::uint64_t),
+ (Int, ::std::int64_t), // TODO: Include eCoreType
+ (Uint, ::std::uint64_t), // TODO: Include eCoreType
(Float, double),
(Bool, bool),
(Bytes, ::std::vector< ::std::uint8_t>), // Byte string
@@ -163,7 +163,7 @@ TAGGED_UNION_EX(RValue, (), Use, (
}),
// Construct a DST pointer from a thin pointer and metadata
(MakeDst, struct {
- LValue ptr_val; // NOTE: Not a Param, becuase the pointer is a borrow
+ Param ptr_val;
Param meta_val;
}),
(Tuple, struct {
diff --git a/src/mir/mir_builder.cpp b/src/mir/mir_builder.cpp
index 110d87e3..13d17d91 100644
--- a/src/mir/mir_builder.cpp
+++ b/src/mir/mir_builder.cpp
@@ -492,7 +492,7 @@ void MirBuilder::raise_variables(const Span& sp, const ::MIR::RValue& rval, cons
this->raise_variables(sp, e.val, scope);
),
(MakeDst,
- this->raise_variables(sp, e.ptr_val, scope);
+ raise_vars(e.ptr_val);
raise_vars(e.meta_val);
),
(Tuple,
diff --git a/src/mir/optimise.cpp b/src/mir/optimise.cpp
index c7c4e6d7..e487cade 100644
--- a/src/mir/optimise.cpp
+++ b/src/mir/optimise.cpp
@@ -900,7 +900,7 @@ bool MIR_Optimise_Inlining(::MIR::TypeResolve& state, ::MIR::Function& fcn)
return ::MIR::RValue::make_DstPtr({ this->clone_lval(se.val) });
),
(MakeDst,
- return ::MIR::RValue::make_MakeDst({ this->clone_lval(se.ptr_val), this->clone_param(se.meta_val) });
+ return ::MIR::RValue::make_MakeDst({ this->clone_param(se.ptr_val), this->clone_param(se.meta_val) });
),
(Tuple,
return ::MIR::RValue::make_Tuple({ this->clone_param_vec(se.vals) });
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp
index 4b7d6a72..5f87e126 100644
--- a/src/trans/codegen_c.cpp
+++ b/src/trans/codegen_c.cpp
@@ -1624,7 +1624,7 @@ namespace {
(MakeDst,
emit_lvalue(e.dst);
m_of << ".PTR = ";
- emit_lvalue(ve.ptr_val);
+ emit_param(ve.ptr_val);
m_of << ";\n\t";
emit_lvalue(e.dst);
m_of << ".META = ";
diff --git a/src/trans/enumerate.cpp b/src/trans/enumerate.cpp
index fceddfbf..89846344 100644
--- a/src/trans/enumerate.cpp
+++ b/src/trans/enumerate.cpp
@@ -905,7 +905,7 @@ void Trans_Enumerate_Types(EnumState& state)
H::visit_lvalue(tv,pp,fcn, re.val);
),
(MakeDst,
- H::visit_lvalue(tv,pp,fcn, re.ptr_val);
+ H::visit_param(tv,pp,fcn, re.ptr_val);
H::visit_param(tv,pp,fcn, re.meta_val);
),
(Tuple,
@@ -1428,7 +1428,7 @@ void Trans_Enumerate_FillFrom_MIR(EnumState& state, const ::MIR::Function& code,
Trans_Enumerate_FillFrom_MIR_LValue(state, e.val, pp);
),
(MakeDst,
- Trans_Enumerate_FillFrom_MIR_LValue(state, e.ptr_val, pp);
+ Trans_Enumerate_FillFrom_MIR_Param(state, e.ptr_val, pp);
Trans_Enumerate_FillFrom_MIR_Param(state, e.meta_val, pp);
),
(Tuple,
diff --git a/src/trans/monomorphise.cpp b/src/trans/monomorphise.cpp
index 13819c18..1688a8f5 100644
--- a/src/trans/monomorphise.cpp
+++ b/src/trans/monomorphise.cpp
@@ -212,7 +212,7 @@ namespace {
),
(MakeDst,
rval = ::MIR::RValue::make_MakeDst({
- monomorph_LValue(resolve, params, se.ptr_val),
+ monomorph_Param(resolve, params, se.ptr_val),
monomorph_Param(resolve, params, se.meta_val)
});
),