TIntermDeclaration* ir_add_declaration(TSymbol* symbol, TIntermTyped* initializer, TSourceLoc line, TParseContext& ctx) { TVariable* var = static_cast<TVariable*>(symbol); TIntermSymbol* sym = ir_add_symbol(var, line); return ir_add_declaration(sym, initializer, line, ctx); }
TIntermDeclaration* ir_add_declaration(TSymbol* symbol, TIntermTyped* initializer, TSourceLoc line, TInfoSink& infoSink) { TVariable* var = static_cast<TVariable*>(symbol); TIntermSymbol* sym = ir_add_symbol(var->getUniqueId(), var->getName(), var->getType(), line); sym->setGlobal(symbol->isGlobal()); return ir_add_declaration(sym, initializer, line, infoSink); }
TIntermAggregate* ir_grow_declaration(TIntermTyped* declaration, TIntermSymbol *symbol, TIntermTyped *initializer, TParseContext& ctx) { TIntermTyped* added_decl = ir_add_declaration (symbol, initializer, symbol->getLine(), ctx); if (declaration->getAsDeclaration()) { TIntermAggregate* aggregate = ir_make_aggregate(declaration, declaration->getLine()); aggregate->setOperator(EOpSequence); declaration = aggregate; } assert (declaration->getAsAggregate()); TIntermAggregate* aggregate = ir_grow_aggregate(declaration, added_decl, added_decl->getLine(), EOpSequence); aggregate->setOperator(EOpSequence); return aggregate; }