diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-14 04:33:41 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-14 04:33:41 +0800 |
| commit | 8be4d04455f70892a94d1e0798e266c948b4750a (patch) | |
| tree | 6ef304317a6980ecfbe32868d64cd05f5e8af8bd /backend/lib/CodeGen/GenericOpcodes.cpp | |
| parent | aa69e15c6909c3b162b15f5326f0a72ba9bb7163 (diff) | |
| download | rcc-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.cpp | 8 |
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: |
