Excerpts from liushuyu's message of Februar 6, 2025 2:02 am:
> From: Zixing Liu <[email protected]>
>
> This set of patches will add proper IEEE 128 quad precision marking to GDC
> compiler, so that it works with the new changes in D standard library
> where POWER system can use any math functions inside the standard library
> that requires the "real" type.
>
> The patch also adds the ELFv1 and ELFv2 version identifiers to bridge
> the gap between LLVM D Compiler (LDC) and GNU D Compiler (GDC) so that
> the user can reliably use the "version(...)" syntax to check for which
> ABI is currently in use.
Thanks. I wonder if something could be done to predefine ELFv1 for other
targets too. Unconditionally calling add_builtin_version in glibc-d.cc,
freebsd-d.cc, ..., doesn't seem like the best thing to do, but I'm open
for suggestions.
> +
> + if (TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128)
> + d_add_builtin_version ("D_PPCUseIEEE128");
It says in the spec that all version identifiers derived from any
predefined versions by appending any character(s) are reserved.
So there's no need for the `D_` prefix, `PPC_UseIEEE128` will suffice.
> +
> +// { dg-final { scan-assembler "test_version" } }
> +extern (C) bool test_version() {
> + // { dg-final { scan-assembler "li 3,1" } }
> + version (D_PPCUseIEEE128) return true;
> + else return false;
> +}
> +
> +// { dg-final { scan-assembler "test_elf_version" } }
> +extern (C) bool test_elf_version() {
> + // { dg-final { scan-assembler "li 3,1" } }
> + version (ELFv2) return true;
> + else return false;
> +}
These two tests should return a different value, otherwise you could
just end up matching the same function return twice.
Kind regards,
Iain.