diff options
Diffstat (limited to 'source/slang/slang-ir.cpp')
| -rw-r--r-- | source/slang/slang-ir.cpp | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/source/slang/slang-ir.cpp b/source/slang/slang-ir.cpp index a718470ff..ed86e4d6d 100644 --- a/source/slang/slang-ir.cpp +++ b/source/slang/slang-ir.cpp @@ -2955,6 +2955,30 @@ namespace Slang return inst; } + IRGlobalConstant* IRBuilder::emitGlobalConstant( + IRType* type) + { + auto inst = createInst<IRGlobalConstant>( + this, + kIROp_GlobalConstant, + type); + addInst(inst); + return inst; + } + + IRGlobalConstant* IRBuilder::emitGlobalConstant( + IRType* type, + IRInst* val) + { + auto inst = createInst<IRGlobalConstant>( + this, + kIROp_GlobalConstant, + type, + val); + addInst(inst); + return inst; + } + // // Decorations // @@ -4284,7 +4308,8 @@ namespace Slang case kIROp_StructField: case kIROp_Func: case kIROp_Generic: - case kIROp_GlobalVar: + case kIROp_GlobalVar: // Note: the IRGlobalVar represents the *address*, so only a load/store would have side effects + case kIROp_GlobalConstant: case kIROp_GlobalParam: case kIROp_StructKey: case kIROp_GlobalGenericParam: @@ -4459,6 +4484,9 @@ namespace Slang case kIROp_Generic: return val->getFirstChild() != nullptr; + case kIROp_GlobalConstant: + return cast<IRGlobalConstant>(val)->getValue() != nullptr; + case kIROp_StructType: case kIROp_GlobalVar: case kIROp_GlobalParam: |
