Browse Source

Fix LLVM 18 ABI for 128-bit integers (because LLVM broke things)

gingerBill 10 months ago
parent
commit
b173fa1b9a
1 changed files with 5 additions and 0 deletions
  1. 5 0
      src/llvm_abi.cpp

+ 5 - 0
src/llvm_abi.cpp

@@ -531,6 +531,7 @@ namespace lbAbiAmd64SysV {
 		RegClass_SSEInt16,
 		RegClass_SSEInt16,
 		RegClass_SSEInt32,
 		RegClass_SSEInt32,
 		RegClass_SSEInt64,
 		RegClass_SSEInt64,
+		RegClass_SSEInt128,
 		RegClass_SSEUp,
 		RegClass_SSEUp,
 		RegClass_X87,
 		RegClass_X87,
 		RegClass_X87Up,
 		RegClass_X87Up,
@@ -616,6 +617,10 @@ namespace lbAbiAmd64SysV {
 		}
 		}
 		switch (kind) {
 		switch (kind) {
 		case LLVMIntegerTypeKind:
 		case LLVMIntegerTypeKind:
+			if (LLVM_VERSION_MAJOR >= 18 && sz >= 16) {
+				return false;
+			}
+			return true;
 		case LLVMHalfTypeKind:
 		case LLVMHalfTypeKind:
 		case LLVMFloatTypeKind:
 		case LLVMFloatTypeKind:
 		case LLVMDoubleTypeKind:
 		case LLVMDoubleTypeKind: