| ... | @@ -8587,7 +8587,57 @@ static void define_builtin_types(CodeGen *g) { | ... | @@ -8587,7 +8587,57 @@ static void define_builtin_types(CodeGen *g) { |
| 8587 | add_fp_entry(g, "f32", 32, LLVMFloatType(), &g->builtin_types.entry_f32); | 8587 | add_fp_entry(g, "f32", 32, LLVMFloatType(), &g->builtin_types.entry_f32); |
| 8588 | add_fp_entry(g, "f64", 64, LLVMDoubleType(), &g->builtin_types.entry_f64); | 8588 | add_fp_entry(g, "f64", 64, LLVMDoubleType(), &g->builtin_types.entry_f64); |
| 8589 | add_fp_entry(g, "f128", 128, LLVMFP128Type(), &g->builtin_types.entry_f128); | 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 | ZigType *entry = new_type_table_entry(ZigTypeIdVoid); | 8643 | ZigType *entry = new_type_table_entry(ZigTypeIdVoid); |