diff options
Diffstat (limited to 'source/slang/lower-to-ir.cpp')
| -rw-r--r-- | source/slang/lower-to-ir.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/source/slang/lower-to-ir.cpp b/source/slang/lower-to-ir.cpp index 9e58d908b..c01059c61 100644 --- a/source/slang/lower-to-ir.cpp +++ b/source/slang/lower-to-ir.cpp @@ -2693,7 +2693,23 @@ struct DeclLoweringVisitor : DeclVisitor<DeclLoweringVisitor, LoweredValInfo> if( auto initExpr = decl->initExpr ) { - // TODO: need to handle global with initializer! + IRBuilder subBuilderStorage = *getBuilder(); + IRBuilder* subBuilder = &subBuilderStorage; + + subBuilder->curFunc = irGlobal; + + IRGenContext subContextStorage = *context; + IRGenContext* subContext = &subContextStorage; + + subContext->irBuilder = subBuilder; + + // TODO: set up a parent IR decl to put the instructions into + + IRBlock* entryBlock = subBuilder->emitBlock(); + subBuilder->curBlock = entryBlock; + + LoweredValInfo initVal = lowerLValueExpr(subContext, initExpr); + subContext->irBuilder->emitReturn(getSimpleVal(subContext, initVal)); } return globalVal; |
