summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-ir-lower-generics.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2020-06-25 13:19:45 -0700
committerYong He <yonghe@outlook.com>2020-06-25 13:23:28 -0700
commita1fed5e49bc1c8452752d13d401ee0bbbc5c71c4 (patch)
tree03e54a0d33caf5196416315489a8d01b973c7a5e /source/slang/slang-ir-lower-generics.cpp
parentffa9a3575ff888dc494ba4878f52441c64a9e08c (diff)
Partial fixes to code review comments
Diffstat (limited to 'source/slang/slang-ir-lower-generics.cpp')
-rw-r--r--source/slang/slang-ir-lower-generics.cpp22
1 files changed, 11 insertions, 11 deletions
diff --git a/source/slang/slang-ir-lower-generics.cpp b/source/slang/slang-ir-lower-generics.cpp
index 4701a3cce..4b1b267f9 100644
--- a/source/slang/slang-ir-lower-generics.cpp
+++ b/source/slang/slang-ir-lower-generics.cpp
@@ -79,7 +79,7 @@ namespace Slang
builder.sharedBuilder = &sharedBuilderStorage;
builder.setInsertBefore(genericParent);
auto loweredFunc = cloneInstAndOperands(&cloneEnv, &builder, func);
- loweredFunc->setFullType(lowerGenericFuncType(&builder, cast<IRGeneric>(genericParent->typeUse.get())));
+ loweredFunc->setFullType(lowerGenericFuncType(&builder, cast<IRGeneric>(genericParent->getFullType())));
List<IRInst*> clonedParams;
for (auto genericParam : genericParent->getParams())
{
@@ -100,7 +100,7 @@ namespace Slang
{
if (isPolymorphicType(param->getFullType()))
{
- param->setFullType(builder.getPtrType(builder.getVoidType()));
+ param->setFullType(builder.getRawPointerType());
}
}
addToWorkList(loweredFunc);
@@ -114,7 +114,7 @@ namespace Slang
{
if (isPolymorphicType(genericParam->getFullType()))
{
- genericParamTypes.add(builder->getPtrType(builder->getVoidType()));
+ genericParamTypes.add(builder->getRawPointerType());
}
else
{
@@ -146,7 +146,7 @@ namespace Slang
auto paramType = funcType->getOperand(i);
if (isPolymorphicType(paramType))
{
- newOperands.add(builder->getPtrType(builder->getVoidType()));
+ newOperands.add(builder->getRawPointerType());
translated = true;
}
else if (paramType->op == kIROp_Specialize)
@@ -154,7 +154,7 @@ namespace Slang
// TODO: handle static specialized type here.
// For now treat all specialized types as dynamic.
// In the future, we need to turn things like Array<IDynamic> into Array<void*>.
- newOperands.add(builder->getPtrType(builder->getVoidType()));
+ newOperands.add(builder->getRawPointerType());
translated = true;
}
else
@@ -194,11 +194,11 @@ namespace Slang
{
if (auto funcType = as<IRFuncType>(entry->getRequirementVal()))
{
- entry->requirementVal.set(lowerFuncType(&builder, funcType));
+ entry->setRequirementVal(lowerFuncType(&builder, funcType));
}
else if (auto genericFuncType = as<IRGeneric>(entry->getRequirementVal()))
{
- entry->requirementVal.set(lowerGenericFuncType(&builder, genericFuncType));
+ entry->setRequirementVal(lowerGenericFuncType(&builder, genericFuncType));
}
}
}
@@ -256,12 +256,12 @@ namespace Slang
builder->sharedBuilder = &sharedBuilderStorage;
builder->setInsertBefore(inst);
List<IRInst*> args;
- auto voidPtrType = builder->getPtrType(builder->getVoidType());
+ auto rawPtrType = builder->getRawPointerType();
for (UInt i = 0; i < callInst->getArgCount(); i++)
{
auto arg = callInst->getArg(i);
- if (paramTypes[i] == voidPtrType &&
- arg->getDataType() != voidPtrType)
+ if (paramTypes[i] == rawPtrType &&
+ arg->getDataType() != rawPtrType)
{
// We are calling a generic function that with an argument of
// concrete type. We need to convert this argument o void*.
@@ -272,7 +272,7 @@ namespace Slang
// what we needed. For now we use another instruction here
// to keep changes minimal.
arg = builder->emitGetAddress(
- voidPtrType,
+ rawPtrType,
arg);
}
args.add(arg);