-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Open
Labels
arch-arm32-bit Arm32-bit Arm
Milestone
Description
On 64-bit targets i128 maps directly to __int128 but on targets that don't support it (seeming all <64-bit targets excluding wasm) that cannot be done. A C compiler would give you an error like __int128 is not supported on this target but we can't do that since LLVM's compiler-rt ABI requires 128-bit ints for functions like __divti3.
One option would be to make it match C23's _BitInt(128) but that is not always compatible with the 128-bit tu_int LLVM uses for compiler-rt.
Possible solutions are:
- forbid
i128on targets that don't support__int128, add specialc_tu_inttype that matches compiler-rt'stu_int - make
i128match_BitInt(128)(and make 1-128 bit integers C ABI compatible) and move the compiler-rt call lowering to our own LLVM backend - make
i128always match compiler-rt'stu_int, do not support_BitInt
Metadata
Metadata
Assignees
Labels
arch-arm32-bit Arm32-bit Arm