aboutsummaryrefslogtreecommitdiff
path: root/backend/lib/CodeGen/GenericOpcodes.cpp
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-14 04:33:41 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-14 04:33:41 +0800
commit8be4d04455f70892a94d1e0798e266c948b4750a (patch)
tree6ef304317a6980ecfbe32868d64cd05f5e8af8bd /backend/lib/CodeGen/GenericOpcodes.cpp
parentaa69e15c6909c3b162b15f5326f0a72ba9bb7163 (diff)
downloadrcc-project-8be4d04455f70892a94d1e0798e266c948b4750a.tar.gz
rcc-project-8be4d04455f70892a94d1e0798e266c948b4750a.tar.xz
[CodeGen] Match LLVM Legalizer ownership
Diffstat (limited to 'backend/lib/CodeGen/GenericOpcodes.cpp')
-rw-r--r--backend/lib/CodeGen/GenericOpcodes.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/backend/lib/CodeGen/GenericOpcodes.cpp b/backend/lib/CodeGen/GenericOpcodes.cpp
index f3ff5f1..ef51147 100644
--- a/backend/lib/CodeGen/GenericOpcodes.cpp
+++ b/backend/lib/CodeGen/GenericOpcodes.cpp
@@ -451,7 +451,13 @@ private:
if (Predicate == nullptr || ((Generic == GO::G_ICMP) != Predicate->isInteger())) {
return semanticError("generic comparison predicate kind does not match its opcode");
}
- return requireI1WithShape(TypeAt(0), TypeAt(2), false);
+ const LowLevelType Result = TypeAt(0);
+ const LowLevelType Compared = TypeAt(2);
+ if (!Compared.isVector())
+ return Result.isCategoryNeutralScalar()
+ ? Expected<void>{}
+ : semanticError("scalar generic comparison requires a scalar integer result");
+ return requireI1WithShape(Result, Compared, false);
}
case GO::G_SCMP:
case GO::G_UCMP: