mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-27 05:49:08 +00:00
Support ValuePtr in alias analysis and llvm
This commit is contained in:
parent
8d9c6d09b9
commit
0385da490a
2 changed files with 3 additions and 2 deletions
|
@ -1820,7 +1820,7 @@ fn erasure_load(
|
||||||
) -> Result<ValueId> {
|
) -> Result<ValueId> {
|
||||||
match field {
|
match field {
|
||||||
ErasedField::Callee => builder.add_get_tuple_field(block, value, ERASURE_CALEE_INDEX),
|
ErasedField::Callee => builder.add_get_tuple_field(block, value, ERASURE_CALEE_INDEX),
|
||||||
ErasedField::Value => {
|
ErasedField::Value | ErasedField::ValuePtr => {
|
||||||
let unknown_heap_cell_value =
|
let unknown_heap_cell_value =
|
||||||
builder.add_get_tuple_field(block, value, ERASURE_VALUE_INDEX)?;
|
builder.add_get_tuple_field(block, value, ERASURE_VALUE_INDEX)?;
|
||||||
// Cast the unknown cell to the wanted type
|
// Cast the unknown cell to the wanted type
|
||||||
|
|
|
@ -96,12 +96,13 @@ pub fn load<'ctx>(
|
||||||
) -> PointerValue<'ctx> {
|
) -> PointerValue<'ctx> {
|
||||||
let index = match field {
|
let index = match field {
|
||||||
ErasedField::Value => 0,
|
ErasedField::Value => 0,
|
||||||
|
ErasedField::ValuePtr => 0,
|
||||||
ErasedField::Callee => 1,
|
ErasedField::Callee => 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
let value = env
|
let value = env
|
||||||
.builder
|
.builder
|
||||||
.build_extract_value(erasure, index, "extract_value")
|
.build_extract_value(erasure, index, "extract_erased_value")
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.into_pointer_value();
|
.into_pointer_value();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue