Have Env store TargetData instead of pointer_bytes

This commit is contained in:
Richard Feldman 2020-03-17 23:05:54 -04:00
parent ee4227ba52
commit eed9fb0e69
2 changed files with 6 additions and 8 deletions

View file

@ -3,6 +3,7 @@ use bumpalo::Bump;
use inkwell::builder::Builder;
use inkwell::context::Context;
use inkwell::module::{Linkage, Module};
use inkwell::targets::TargetData;
use inkwell::types::BasicTypeEnum;
use inkwell::values::BasicValueEnum::{self, *};
use inkwell::values::{FunctionValue, IntValue, PointerValue};
@ -32,7 +33,7 @@ pub struct Env<'a, 'ctx, 'env> {
pub builder: &'env Builder<'ctx>,
pub module: &'ctx Module<'ctx>,
pub interns: Interns,
pub pointer_bytes: u32,
pub target_data: &'env TargetData,
}
pub fn build_expr<'a, 'ctx, 'env>(
@ -230,7 +231,8 @@ pub fn build_expr<'a, 'ctx, 'env>(
BasicValueEnum::StructValue(struct_val.into_struct_value())
} else {
let len_u64 = elems.len() as u64;
let elem_bytes = elem_layout.stack_size(env.pointer_bytes) as u64;
let pointer_bytes = env.target_data.get_pointer_byte_size(None);
let elem_bytes = elem_layout.stack_size(pointer_bytes) as u64;
let ptr = {
let bytes_len = elem_bytes * len_u64;

View file

@ -210,8 +210,6 @@ mod test_gen {
.create_jit_execution_engine(OptimizationLevel::None)
.expect("Error creating JIT execution engine for test");
let pointer_bytes = execution_engine.get_target_data().get_pointer_byte_size(None);
// Compile and add all the Procs before adding main
let mut env = roc_gen::llvm::build::Env {
arena: &arena,
@ -219,7 +217,7 @@ mod test_gen {
context: &context,
interns,
module: arena.alloc(module),
pointer_bytes
target_data: execution_engine.get_target_data()
};
let mut procs = Procs::default();
let mut ident_ids = env.interns.all_ident_ids.remove(&home).unwrap();
@ -347,8 +345,6 @@ mod test_gen {
.create_jit_execution_engine(OptimizationLevel::None)
.expect("Error creating JIT execution engine for test");
let pointer_bytes = execution_engine.get_target_data().get_pointer_byte_size(None);
// Compile and add all the Procs before adding main
let mut env = roc_gen::llvm::build::Env {
arena: &arena,
@ -356,7 +352,7 @@ mod test_gen {
context: &context,
interns,
module: arena.alloc(module),
pointer_bytes
target_data: execution_engine.get_target_data()
};
let mut procs = Procs::default();
let mut ident_ids = env.interns.all_ident_ids.remove(&home).unwrap();