| ... | @@ -8485,7 +8485,57 @@ static void define_builtin_types(CodeGen *g) { | ... | @@ -8485,7 +8485,57 @@ static void define_builtin_types(CodeGen *g) { |
| 8485 | add_fp_entry(g, "f32", 32, LLVMFloatType(), &g->builtin_types.entry_f32); | 8485 | add_fp_entry(g, "f32", 32, LLVMFloatType(), &g->builtin_types.entry_f32); |
| 8486 | add_fp_entry(g, "f64", 64, LLVMDoubleType(), &g->builtin_types.entry_f64); | 8486 | add_fp_entry(g, "f64", 64, LLVMDoubleType(), &g->builtin_types.entry_f64); |
| 8487 | add_fp_entry(g, "f128", 128, LLVMFP128Type(), &g->builtin_types.entry_f128); | 8487 | add_fp_entry(g, "f128", 128, LLVMFP128Type(), &g->builtin_types.entry_f128); |
| 8488 | add_fp_entry(g, "c_longdouble", 80, LLVMX86FP80Type(), &g->builtin_types.entry_c_longdouble); | 8488 | |
| | 8489 | switch (g->zig_target->arch) { |
| | 8490 | case ZigLLVM_x86: |
| | 8491 | case ZigLLVM_x86_64: |
| | 8492 | if (g->zig_target->abi != ZigLLVM_MSVC) |
| | 8493 | add_fp_entry(g, "c_longdouble", 80, LLVMX86FP80Type(), &g->builtin_types.entry_c_longdouble); |
| | 8494 | else |
| | 8495 | add_fp_entry(g, "c_longdouble", 64, LLVMDoubleType(), &g->builtin_types.entry_c_longdouble); |
| | 8496 | break; |
| | 8497 | case ZigLLVM_arm: |
| | 8498 | case ZigLLVM_armeb: |
| | 8499 | case ZigLLVM_thumb: |
| | 8500 | case ZigLLVM_thumbeb: |
| | 8501 | add_fp_entry(g, "c_longdouble", 64, LLVMDoubleType(), &g->builtin_types.entry_c_longdouble); |
| | 8502 | break; |
| | 8503 | case ZigLLVM_aarch64: |
| | 8504 | case ZigLLVM_aarch64_be: |
| | 8505 | if (g->zig_target->os == OsWindows || target_os_is_darwin(g->zig_target->os)) |
| | 8506 | add_fp_entry(g, "c_longdouble", 64, LLVMDoubleType(), &g->builtin_types.entry_c_longdouble); |
| | 8507 | else |
| | 8508 | add_fp_entry(g, "c_longdouble", 128, LLVMFP128Type(), &g->builtin_types.entry_c_longdouble); |
| | 8509 | break; |
| | 8510 | case ZigLLVM_riscv32: |
| | 8511 | case ZigLLVM_riscv64: |
| | 8512 | add_fp_entry(g, "c_longdouble", 128, LLVMFP128Type(), &g->builtin_types.entry_c_longdouble); |
| | 8513 | break; |
| | 8514 | case ZigLLVM_wasm32: |
| | 8515 | case ZigLLVM_wasm64: |
| | 8516 | add_fp_entry(g, "c_longdouble", 128, LLVMFP128Type(), &g->builtin_types.entry_c_longdouble); |
| | 8517 | break; |
| | 8518 | case ZigLLVM_mips: |
| | 8519 | case ZigLLVM_mipsel: |
| | 8520 | // Assume o32 ABI |
| | 8521 | add_fp_entry(g, "c_longdouble", 64, LLVMDoubleType(), &g->builtin_types.entry_c_longdouble); |
| | 8522 | break; |
| | 8523 | case ZigLLVM_mips64: |
| | 8524 | case ZigLLVM_mips64el: |
| | 8525 | add_fp_entry(g, "c_longdouble", 128, LLVMFP128Type(), &g->builtin_types.entry_c_longdouble); |
| | 8526 | break; |
| | 8527 | case ZigLLVM_ppc: |
| | 8528 | case ZigLLVM_ppc64: |
| | 8529 | case ZigLLVM_ppc64le: |
| | 8530 | add_fp_entry(g, "c_longdouble", 128, LLVMFP128Type(), &g->builtin_types.entry_c_longdouble); |
| | 8531 | break; |
| | 8532 | case ZigLLVM_avr: |
| | 8533 | // It's either a float or a double, depending on a toolchain switch |
| | 8534 | add_fp_entry(g, "c_longdouble", 64, LLVMDoubleType(), &g->builtin_types.entry_c_longdouble); |
| | 8535 | break; |
| | 8536 | default: |
| | 8537 | zig_panic("TODO implement mapping for c_longdouble"); |
| | 8538 | } |
| 8489 | | 8539 | |
| 8490 | { | 8540 | { |
| 8491 | ZigType *entry = new_type_table_entry(ZigTypeIdVoid); | 8541 | ZigType *entry = new_type_table_entry(ZigTypeIdVoid); |