diff options
| author | Yong He <yonghe@outlook.com> | 2022-03-18 09:35:23 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-18 09:35:23 -0700 |
| commit | 2e1a84add57efd9f8a50a88d0569a48ae4b6d834 (patch) | |
| tree | 3e1ce103fa75a62eb3f1efd3c832e468bc9e8aed /source/slang/slang-ir-sccp.cpp | |
| parent | 42ca6758046e11451b0788092f9c95fc7f788da6 (diff) | |
Fix type truncation during SCCP. (#2163)
Diffstat (limited to 'source/slang/slang-ir-sccp.cpp')
| -rw-r--r-- | source/slang/slang-ir-sccp.cpp | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/source/slang/slang-ir-sccp.cpp b/source/slang/slang-ir-sccp.cpp index 28f262c1a..e724d0d88 100644 --- a/source/slang/slang-ir-sccp.cpp +++ b/source/slang/slang-ir-sccp.cpp @@ -288,7 +288,11 @@ struct SCCPContext { SLANG_SCCP_RETURN_IF_NONE_OR_ANY(v0) auto irConstant = as<IRConstant>(v0.value); + IRInst* resultVal = nullptr; + if (type->getOp() == irConstant->getOp()) + return LatticeVal::getConstant(irConstant); + switch (type->getOp()) { case kIROp_Int8Type: @@ -309,24 +313,6 @@ struct SCCPContext case kIROp_BoolLit: { IRIntegerValue intVal = irConstant->value.intVal; - switch (type->getOp()) - { - case kIROp_Int8Type: - case kIROp_UInt8Type: - intVal = intVal & 0xFF; - break; - case kIROp_Int16Type: - case kIROp_UInt16Type: - intVal = intVal & 0xFFFF; - break; - case kIROp_IntType: - case kIROp_UIntType: - case kIROp_BoolType: - intVal = intVal & 0xFFFFFFFF; - break; - default: - break; - } resultVal = getBuilder()->getIntValue(type, (IRIntegerValue)intVal); } break; |
