From 2e1a84add57efd9f8a50a88d0569a48ae4b6d834 Mon Sep 17 00:00:00 2001 From: Yong He Date: Fri, 18 Mar 2022 09:35:23 -0700 Subject: Fix type truncation during SCCP. (#2163) --- source/slang/slang-ir-sccp.cpp | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) (limited to 'source/slang/slang-ir-sccp.cpp') 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(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; -- cgit v1.2.3