diff options
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; |
