Fix UserPointer being completely monkeypatched, found the issue
This commit is contained in:
parent
10d62eb1f7
commit
836a532d8d
@ -1075,7 +1075,7 @@ impl ConstValue {
|
|||||||
ConstValue::U32(val) => LLVMConstInt(t, *val as u64, 1),
|
ConstValue::U32(val) => LLVMConstInt(t, *val as u64, 1),
|
||||||
ConstValue::U64(val) => LLVMConstInt(t, *val as u64, 1),
|
ConstValue::U64(val) => LLVMConstInt(t, *val as u64, 1),
|
||||||
ConstValue::U128(val) => LLVMConstInt(t, *val as u64, 1),
|
ConstValue::U128(val) => LLVMConstInt(t, *val as u64, 1),
|
||||||
ConstValue::StringPtr(val) => LLVMBuildGlobalString(
|
ConstValue::Str(val) => LLVMBuildGlobalString(
|
||||||
module.builder_ref,
|
module.builder_ref,
|
||||||
into_cstring(val).as_ptr(),
|
into_cstring(val).as_ptr(),
|
||||||
c"string".as_ptr(),
|
c"string".as_ptr(),
|
||||||
|
@ -439,7 +439,7 @@ pub enum ConstValue {
|
|||||||
U64(u64),
|
U64(u64),
|
||||||
U128(u128),
|
U128(u128),
|
||||||
Bool(bool),
|
Bool(bool),
|
||||||
StringPtr(String),
|
Str(String),
|
||||||
F16(f32),
|
F16(f32),
|
||||||
F32B(f32),
|
F32B(f32),
|
||||||
F32(f32),
|
F32(f32),
|
||||||
@ -505,12 +505,12 @@ impl InstructionValue {
|
|||||||
ArrayAlloca(ty, _) => Ok(Type::Ptr(Box::new(ty.clone()))),
|
ArrayAlloca(ty, _) => Ok(Type::Ptr(Box::new(ty.clone()))),
|
||||||
GetElemPtr(instr, _) => {
|
GetElemPtr(instr, _) => {
|
||||||
let instr_ty = instr.get_type(builder)?;
|
let instr_ty = instr.get_type(builder)?;
|
||||||
let Type::Ptr(inner_ty) = instr_ty else {
|
let Type::Ptr(inner_ty) = &instr_ty else {
|
||||||
panic!("GetStructElemPtr on non-pointer! ({:?})", &instr_ty)
|
panic!("GetStructElemPtr on non-pointer! ({:?})", &instr_ty)
|
||||||
};
|
};
|
||||||
match *inner_ty {
|
match *inner_ty.clone() {
|
||||||
Type::Array(elem_ty, _) => Ok(Type::Ptr(Box::new(*elem_ty.clone()))),
|
Type::Array(elem_ty, _) => Ok(Type::Ptr(Box::new(*elem_ty.clone()))),
|
||||||
_ => Ok(*inner_ty),
|
_ => Ok(instr_ty),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GetStructElemPtr(instr, idx) => {
|
GetStructElemPtr(instr, idx) => {
|
||||||
@ -562,7 +562,7 @@ impl ConstValue {
|
|||||||
ConstValue::U32(_) => U32,
|
ConstValue::U32(_) => U32,
|
||||||
ConstValue::U64(_) => U64,
|
ConstValue::U64(_) => U64,
|
||||||
ConstValue::U128(_) => U128,
|
ConstValue::U128(_) => U128,
|
||||||
ConstValue::StringPtr(_) => Ptr(Box::new(I8)),
|
ConstValue::Str(_) => Type::Ptr(Box::new(I8)),
|
||||||
ConstValue::Bool(_) => Bool,
|
ConstValue::Bool(_) => Bool,
|
||||||
ConstValue::F16(_) => F16,
|
ConstValue::F16(_) => F16,
|
||||||
ConstValue::F32B(_) => F32B,
|
ConstValue::F32B(_) => F32B,
|
||||||
|
@ -490,7 +490,7 @@ impl mir::Statement {
|
|||||||
.block
|
.block
|
||||||
.build(
|
.build(
|
||||||
name,
|
name,
|
||||||
Instr::Alloca(ty.get_type(scope.type_values, scope.types)),
|
Instr::Alloca(value.1.get_type(scope.type_values, scope.types)),
|
||||||
)
|
)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.maybe_location(&mut scope.block, location);
|
.maybe_location(&mut scope.block, location);
|
||||||
@ -1167,7 +1167,7 @@ impl mir::Literal {
|
|||||||
mir::Literal::U64(val) => ConstValue::U64(val),
|
mir::Literal::U64(val) => ConstValue::U64(val),
|
||||||
mir::Literal::U128(val) => ConstValue::U128(val),
|
mir::Literal::U128(val) => ConstValue::U128(val),
|
||||||
mir::Literal::Bool(val) => ConstValue::Bool(val),
|
mir::Literal::Bool(val) => ConstValue::Bool(val),
|
||||||
mir::Literal::String(val) => ConstValue::StringPtr(val.clone()),
|
mir::Literal::String(val) => ConstValue::Str(val.clone()),
|
||||||
mir::Literal::Vague(VagueLiteral::Number(val)) => ConstValue::I32(val as i32),
|
mir::Literal::Vague(VagueLiteral::Number(val)) => ConstValue::I32(val as i32),
|
||||||
mir::Literal::Vague(VagueLiteral::Decimal(val)) => ConstValue::F32(val as f32),
|
mir::Literal::Vague(VagueLiteral::Decimal(val)) => ConstValue::F32(val as f32),
|
||||||
mir::Literal::F16(val) => ConstValue::F16(val),
|
mir::Literal::F16(val) => ConstValue::F16(val),
|
||||||
@ -1216,9 +1216,9 @@ impl TypeKind {
|
|||||||
let type_val = type_vals.get(n).unwrap().clone();
|
let type_val = type_vals.get(n).unwrap().clone();
|
||||||
Type::CustomType(type_val)
|
Type::CustomType(type_val)
|
||||||
}
|
}
|
||||||
TypeKind::UserPtr(type_kind) => Type::Ptr(Box::new(Type::Ptr(Box::new(
|
TypeKind::UserPtr(type_kind) => {
|
||||||
type_kind.get_type(type_vals, typedefs),
|
Type::Ptr(Box::new(type_kind.get_type(type_vals, typedefs)))
|
||||||
)))),
|
}
|
||||||
TypeKind::CodegenPtr(type_kind) => {
|
TypeKind::CodegenPtr(type_kind) => {
|
||||||
Type::Ptr(Box::new(type_kind.get_type(type_vals, typedefs)))
|
Type::Ptr(Box::new(type_kind.get_type(type_vals, typedefs)))
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
|
|
||||||
import std::print;
|
import std::print;
|
||||||
|
|
||||||
fn main() -> i32 {
|
fn main() -> i32 {
|
||||||
let hello = "hello world";
|
print("hello world");
|
||||||
|
|
||||||
print(hello);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user