mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 23:58:50 +00:00
Fix ptr != ptr type cast problem in LLVM 17
This commit is contained in:
@@ -864,8 +864,21 @@ gb_internal lbValue lb_emit_call_internal(lbProcedure *p, lbValue value, lbValue
|
|||||||
for (unsigned i = 0; i < param_count; i++) {
|
for (unsigned i = 0; i < param_count; i++) {
|
||||||
LLVMTypeRef param_type = param_types[i];
|
LLVMTypeRef param_type = param_types[i];
|
||||||
LLVMTypeRef arg_type = LLVMTypeOf(args[i]);
|
LLVMTypeRef arg_type = LLVMTypeOf(args[i]);
|
||||||
// LLVMTypeKind param_kind = LLVMGetTypeKind(param_type);
|
if (LB_USE_NEW_PASS_SYSTEM &&
|
||||||
// LLVMTypeKind arg_kind = LLVMGetTypeKind(arg_type);
|
arg_type != param_type) {
|
||||||
|
LLVMTypeKind arg_kind = LLVMGetTypeKind(arg_type);
|
||||||
|
LLVMTypeKind param_kind = LLVMGetTypeKind(param_type);
|
||||||
|
if (arg_kind == param_kind &&
|
||||||
|
arg_kind == LLVMPointerTypeKind) {
|
||||||
|
// NOTE(bill): LLVM's newer `ptr` only type system seems to fail at times
|
||||||
|
// I don't know why...
|
||||||
|
args[i] = LLVMBuildPointerCast(p->builder, args[i], param_type, "");
|
||||||
|
gb_printf_err("%s\n", LLVMPrintValueToString(args[i]));
|
||||||
|
arg_type = param_type;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
GB_ASSERT_MSG(
|
GB_ASSERT_MSG(
|
||||||
arg_type == param_type,
|
arg_type == param_type,
|
||||||
"Parameter types do not match: %s != %s, argument: %s\n\t%s",
|
"Parameter types do not match: %s != %s, argument: %s\n\t%s",
|
||||||
|
|||||||
Reference in New Issue
Block a user