diff --git a/driver/main.cpp b/driver/main.cpp index 0bd8c8dd15..7f0bf61707 100644 --- a/driver/main.cpp +++ b/driver/main.cpp @@ -728,6 +728,8 @@ void registerPredefinedTargetVersions() { // Set versions for arch bitwidth if (gDataLayout->getPointerSizeInBits() == 64) { VersionCondition::addPredefinedGlobalIdent("D_LP64"); + } else if (triple.isArch64Bit()) { + VersionCondition::addPredefinedGlobalIdent("D_X32"); } else if (triple.isArch16Bit()) { VersionCondition::addPredefinedGlobalIdent("D_P16"); } diff --git a/tests/compilable/arch64bit_abi32bit_gh3802.d b/tests/compilable/arch64bit_abi32bit_gh3802.d index 4ff9776bd5..8492c81e53 100644 --- a/tests/compilable/arch64bit_abi32bit_gh3802.d +++ b/tests/compilable/arch64bit_abi32bit_gh3802.d @@ -9,6 +9,7 @@ static assert(size_t.sizeof == 4); static assert(ptrdiff_t.sizeof == 4); version (D_LP64) static assert(0); +version (D_X32) { /* expected */ } else static assert(0); bool equals(string lhs, string rhs) {