| ... | ... | @@ -8587,7 +8587,57 @@ static void define_builtin_types(CodeGen *g) { |
| 8587 | 8587 | add_fp_entry(g, "f32", 32, LLVMFloatType(), &g->builtin_types.entry_f32); |
| 8588 | 8588 | add_fp_entry(g, "f64", 64, LLVMDoubleType(), &g->builtin_types.entry_f64); |
| 8589 | 8589 | add_fp_entry(g, "f128", 128, LLVMFP128Type(), &g->builtin_types.entry_f128); |
| 8590 | | add_fp_entry(g, "c_longdouble", 80, LLVMX86FP80Type(), &g->builtin_types.entry_c_longdouble); |
| 8590 | |
| 8591 | switch (g->zig_target->arch) { |
| 8592 | case ZigLLVM_x86: |
| 8593 | case ZigLLVM_x86_64: |
| 8594 | if (g->zig_target->abi != ZigLLVM_MSVC) |
| 8595 | add_fp_entry(g, "c_longdouble", 80, LLVMX86FP80Type(), &g->builtin_types.entry_c_longdouble); |
| 8596 | else |
| 8597 | add_fp_entry(g, "c_longdouble", 64, LLVMDoubleType(), &g->builtin_types.entry_c_longdouble); |
| 8598 | break; |
| 8599 | case ZigLLVM_arm: |
| 8600 | case ZigLLVM_armeb: |
| 8601 | case ZigLLVM_thumb: |
| 8602 | case ZigLLVM_thumbeb: |
| 8603 | add_fp_entry(g, "c_longdouble", 64, LLVMDoubleType(), &g->builtin_types.entry_c_longdouble); |
| 8604 | break; |
| 8605 | case ZigLLVM_aarch64: |
| 8606 | case ZigLLVM_aarch64_be: |
| 8607 | if (g->zig_target->os == OsWindows || target_os_is_darwin(g->zig_target->os)) |
| 8608 | add_fp_entry(g, "c_longdouble", 64, LLVMDoubleType(), &g->builtin_types.entry_c_longdouble); |
| 8609 | else |
| 8610 | add_fp_entry(g, "c_longdouble", 128, LLVMFP128Type(), &g->builtin_types.entry_c_longdouble); |
| 8611 | break; |
| 8612 | case ZigLLVM_riscv32: |
| 8613 | case ZigLLVM_riscv64: |
| 8614 | add_fp_entry(g, "c_longdouble", 128, LLVMFP128Type(), &g->builtin_types.entry_c_longdouble); |
| 8615 | break; |
| 8616 | case ZigLLVM_wasm32: |
| 8617 | case ZigLLVM_wasm64: |
| 8618 | add_fp_entry(g, "c_longdouble", 128, LLVMFP128Type(), &g->builtin_types.entry_c_longdouble); |
| 8619 | break; |
| 8620 | case ZigLLVM_mips: |
| 8621 | case ZigLLVM_mipsel: |
| 8622 | // Assume o32 ABI |
| 8623 | add_fp_entry(g, "c_longdouble", 64, LLVMDoubleType(), &g->builtin_types.entry_c_longdouble); |
| 8624 | break; |
| 8625 | case ZigLLVM_mips64: |
| 8626 | case ZigLLVM_mips64el: |
| 8627 | add_fp_entry(g, "c_longdouble", 128, LLVMFP128Type(), &g->builtin_types.entry_c_longdouble); |
| 8628 | break; |
| 8629 | case ZigLLVM_ppc: |
| 8630 | case ZigLLVM_ppc64: |
| 8631 | case ZigLLVM_ppc64le: |
| 8632 | add_fp_entry(g, "c_longdouble", 128, LLVMFP128Type(), &g->builtin_types.entry_c_longdouble); |
| 8633 | break; |
| 8634 | case ZigLLVM_avr: |
| 8635 | // It's either a float or a double, depending on a toolchain switch |
| 8636 | add_fp_entry(g, "c_longdouble", 64, LLVMDoubleType(), &g->builtin_types.entry_c_longdouble); |
| 8637 | break; |
| 8638 | default: |
| 8639 | zig_panic("TODO implement mapping for c_longdouble"); |
| 8640 | } |
| 8591 | 8641 | |
| 8592 | 8642 | { |
| 8593 | 8643 | ZigType *entry = new_type_table_entry(ZigTypeIdVoid); |