[Issue 24130] ImportC: Windows - Cannot build nearly program that uses most system headers as 32-bit.
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Sep 9 04:27:17 UTC 2023
https://issues.dlang.org/show_bug.cgi?id=24130
--- Comment #5 from Walter Bright <bugzilla at digitalmars.com> ---
Looking at the file winnt.h, the inline assembler:
--------------
#if defined(MIDL_PASS) || defined(RC_INVOKED) || defined(_M_CEE_PURE) \
|| defined(_68K_) || defined(_MPPC_) \
|| defined(_M_IA64) || defined(_M_AMD64) || defined(_M_ARM) ||
defined(_M_ARM64) \
|| defined(_M_HYBRID_X86_ARM64)
//
// Midl does not understand inline assembler. Therefore, the Rtl functions
// are used for shifts by 0..31 and multiplies of 32-bits times 32-bits to
// form a 64-bit product.
//
//
// IA64 and AMD64 have native 64-bit operations that are just as fast as their
// 32-bit counter parts. Therefore, the int64 data type is used directly to
form
// shifts of 0..31 and multiplies of 32-bits times 32-bits to form a 64-bit
// product.
//
#define Int32x32To64(a, b) (((__int64)((long)(a))) * ((__int64)((long)(b))))
#define UInt32x32To64(a, b) (((unsigned __int64)((unsigned int)(a))) *
((unsigned __int64)((unsigned int)(b))))
#define Int64ShllMod32(a, b) (((unsigned __int64)(a)) << (b))
#define Int64ShraMod32(a, b) (((__int64)(a)) >> (b))
#define Int64ShrlMod32(a, b) (((unsigned __int64)(a)) >> (b))
#elif defined(_M_IX86)
... inline assembler versions go here ...
#endif
---------------------------------
And, well, the inline assembler format is different than ImportC's.
So, try #define'ing _M_CEE_PURE to be 1 and see if that helps.
As for the line 13826 errors, I cannot find "i64" in the version of winnt.h
that I have. Perhaps you could quote the offending lines, please?
--
More information about the Digitalmars-d-bugs
mailing list