diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2017-12-08 14:23:12 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-12-08 14:23:12 -0800 |
| commit | 0f55649cc1aa8ad3218b7f8ba7b1eabdd2ec6526 (patch) | |
| tree | 0dc7fd5e88fbc530dc121946f4a20085aa5518d8 /source/slang/ir.cpp | |
| parent | 301cdf5ef42797b1073d9e6c741ef0ba98a38792 (diff) | |
Cleanups to `ParameterBlock<T>` behavior. (#304)
* Cleanups to `ParameterBlock<T>` behavior.
These add some more realistic tests using the `ParameterBlock<T>` support, and show that it can work with the "rewriter" mode.
Unfortunately, this code does *not* currently work with the rewriter + the IR at once. That will need to be fixed in a follow-on change, because I now see that the root problem is pretty ugly.
* cleanup
Diffstat (limited to 'source/slang/ir.cpp')
| -rw-r--r-- | source/slang/ir.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/source/slang/ir.cpp b/source/slang/ir.cpp index d35ffe2d1..d4d2f0f51 100644 --- a/source/slang/ir.cpp +++ b/source/slang/ir.cpp @@ -956,16 +956,22 @@ namespace Slang IRInst* IRBuilder::emitLoad( IRValue* ptr) { - auto ptrType = ptr->getType()->As<PtrTypeBase>(); - if( !ptrType ) + RefPtr<Type> valueType; + if(auto ptrType = ptr->getType()->As<PtrTypeBase>()) + { + valueType = ptrType->getValueType(); + } + else if(auto ptrLikeType = ptr->getType()->As<PointerLikeType>()) + { + valueType = ptrLikeType->getElementType(); + } + else { // Bad! SLANG_ASSERT(ptrType); return nullptr; } - auto valueType = ptrType->getValueType(); - auto inst = createInst<IRLoad>( this, kIROp_Load, |
