summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-bit-field-accessors.cpp
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2024-03-02 05:19:19 +0800
committerGitHub <noreply@github.com>2024-03-01 13:19:19 -0800
commitcc9ada16b3dbbbd85f03faec74afc7bae4b8014c (patch)
treeaf65901e5508c13df707c85fed214878e3705153 /source/slang/slang-ir-bit-field-accessors.cpp
parenta4ba7d63e3035895b8081387b49a52b0fda53424 (diff)
Small cleanups for bitfield accessor synthesis (#3651)
* Remove duplicate function * neaten --------- Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'source/slang/slang-ir-bit-field-accessors.cpp')
-rw-r--r--source/slang/slang-ir-bit-field-accessors.cpp20
1 files changed, 3 insertions, 17 deletions
diff --git a/source/slang/slang-ir-bit-field-accessors.cpp b/source/slang/slang-ir-bit-field-accessors.cpp
index 3ca660a30..21b663bf8 100644
--- a/source/slang/slang-ir-bit-field-accessors.cpp
+++ b/source/slang/slang-ir-bit-field-accessors.cpp
@@ -5,20 +5,6 @@
namespace Slang
{
-static IRInst* maybeUnwrapGeneric(IRInst* inst)
-{
- if(const auto g = as<IRGeneric>(inst))
- return findInnerMostGenericReturnVal(g);
- return inst;
-}
-
-static IRInst* maybeUnwrapSpecialize(IRInst* inst)
-{
- if(const auto g = as<IRSpecialize>(inst))
- return maybeUnwrapGeneric(maybeUnwrapSpecialize(g->getBase()));
- return inst;
-}
-
static IRInst* shl(IRBuilder& builder, IRInst* inst, const IRIntegerValue value)
{
if(value == 0)
@@ -55,7 +41,7 @@ static void synthesizeBitFieldGetter(IRFunc* func, IRBitFieldAccessorDecoration*
SLANG_ASSERT(isIntegralType(bitFieldType));
SLANG_ASSERT(func->getParamCount() == 1);
const auto structParamType = func->getParamType(0);
- const auto structType = as<IRStructType>(maybeUnwrapSpecialize(structParamType));
+ const auto structType = as<IRStructType>(getResolvedInstForDecorations(structParamType));
SLANG_ASSERT(structType);
const auto backingMember = findStructField(structType, dec->getBackingMemberKey());
@@ -102,7 +88,7 @@ static void synthesizeBitFieldSetter(IRFunc* func, IRBitFieldAccessorDecoration*
const auto ptrType = as<IRPtrTypeBase>(func->getParamType(0));
SLANG_ASSERT(ptrType);
const auto structParamType = ptrType->getValueType();
- const auto structType = as<IRStructType>(maybeUnwrapSpecialize(structParamType));
+ const auto structType = as<IRStructType>(getResolvedInstForDecorations(structParamType));
SLANG_ASSERT(structType);
const auto bitFieldType = func->getParamType(1);
SLANG_ASSERT(isIntegralType(bitFieldType));
@@ -145,7 +131,7 @@ void synthesizeBitFieldAccessors(IRModule* module)
{
for(const auto inst : module->getModuleInst()->getGlobalInsts())
{
- const auto func = as<IRFunc>(maybeUnwrapGeneric(inst));
+ const auto func = as<IRFunc>(getResolvedInstForDecorations(inst));
if(!func)
continue;
const auto bfd = func->findDecoration<IRBitFieldAccessorDecoration>();