[Issue 24412] No predefined version for 64bit ?!

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Mar 26 04:46:02 UTC 2024


https://issues.dlang.org/show_bug.cgi?id=24412

Walter Bright <bugzilla at digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla at digitalmars.com

--- Comment #7 from Walter Bright <bugzilla at digitalmars.com> ---
https://dlang.org/spec/version.html

Says:

```
    D_LP64      Pointers are 64 bits (command line switch -m64). (Do not
confuse this with C's LP64 model)
    D_X32       Pointers are 32 bits, but words are still 64 bits (x32 ABI)
(This can be defined in parallel to X86_64)
```

What the implementation actually does is:

```
    if (tgt.isX86_64)
    {
        VersionCondition.addPredefinedGlobalIdent("D_InlineAsm_X86_64");
        VersionCondition.addPredefinedGlobalIdent("X86_64");
    }
    else
    {
        VersionCondition.addPredefinedGlobalIdent("D_InlineAsm"); //legacy
        VersionCondition.addPredefinedGlobalIdent("D_InlineAsm_X86");
        VersionCondition.addPredefinedGlobalIdent("X86");
    }
    if (tgt.isLP64)
        VersionCondition.addPredefinedGlobalIdent("D_LP64");
    else if (tgt.isX86_64)
        VersionCondition.addPredefinedGlobalIdent("X32");
```

Note how something simple turned into a monstrosity that nobody can figure out,
and the documentation is both wrong and incomplete. Sigh.

I suspect that the undocumented X32 is what Manu is looking for, but dmd never
generates it. Does gdc or ldc?

--


More information about the Digitalmars-d-bugs mailing list