Memory: Put pragma tables in the pool.

Fixes #916 (the last change covered by the PR).
3rd list item in #976.
This commit is contained in:
John Kessenich 2017-11-20 17:41:39 -07:00
parent cbdf871d7f
commit fd1d07daf1
5 changed files with 12 additions and 9 deletions

View file

@ -3170,10 +3170,10 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC
node->getLoc());
}
void TIntermAggregate::addToPragmaTable(const TPragmaTable& pTable)
void TIntermAggregate::setPragmaTable(const TPragmaTable& pTable)
{
assert(!pragmaTable);
pragmaTable = new TPragmaTable();
assert(pragmaTable == nullptr);
pragmaTable = new TPragmaTable;
*pragmaTable = pTable;
}

View file

@ -2916,7 +2916,7 @@ function_definition
// information. This information can be queried from the parse tree
$$->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize);
$$->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
$$->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable);
$$->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
}
;

View file

@ -7975,7 +7975,7 @@ yyreduce:
// information. This information can be queried from the parse tree
(yyval.interm.intermNode)->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize);
(yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
(yyval.interm.intermNode)->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable);
(yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
}
#line 7981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;