]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/optimize.cpp
Add push_back_nocopy to NodeContainer for clarity
[libs/gl.git] / source / glsl / optimize.cpp
index 7d605f1f12bc755812a3252172828a84d3720777..b7a722f42c96c6cc718de3b964697ac9416822bb 100644 (file)
@@ -91,7 +91,6 @@ const string &InlineContentInjector::apply(Stage &stage, FunctionDeclaration &ta
        pass = INLINE;
        staging_block.parent = &tgt_blk;
        staging_block.variables.clear();
-       remap_prefix = source_func->name;
 
        std::vector<RefPtr<VariableDeclaration> > params;
        params.reserve(source_func->parameters.size());
@@ -103,8 +102,7 @@ const string &InlineContentInjector::apply(Stage &stage, FunctionDeclaration &ta
                SetForScope<Pass> set_pass(pass, RENAME);
                var->visit(*this);
 
-               staging_block.body.push_back(0);
-               staging_block.body.back() = var;
+               staging_block.body.push_back_nocopy(var);
                params.push_back(var);
        }
 
@@ -118,8 +116,7 @@ const string &InlineContentInjector::apply(Stage &stage, FunctionDeclaration &ta
                SetForScope<Pass> set_pass(pass, RENAME);
                r_inlined_statement->visit(*this);
 
-               staging_block.body.push_back(0);
-               staging_block.body.back() = r_inlined_statement;
+               staging_block.body.push_back_nocopy(r_inlined_statement);
        }
 
        /* Now collect names from the staging block.  Local variables that would
@@ -133,7 +130,6 @@ const string &InlineContentInjector::apply(Stage &stage, FunctionDeclaration &ta
        global identifiers used by the source function. */
        pass = RENAME;
        staging_block.parent = source_func->body.parent;
-       remap_prefix = target_func.name;
        target_func.visit(*this);
 
        // Put the argument expressions in place after all renaming has been done.
@@ -193,7 +189,7 @@ void InlineContentInjector::visit(VariableDeclaration &var)
                staging_block.variables[var.name] = &var;
                if(referenced_names.count(var.name))
                {
-                       string mapped_name = get_unused_variable_name(staging_block, var.name, remap_prefix);
+                       string mapped_name = get_unused_variable_name(staging_block, var.name);
                        if(mapped_name!=var.name)
                        {
                                staging_block.variables[mapped_name] = &var;
@@ -217,7 +213,7 @@ void InlineContentInjector::visit(Return &ret)
        if(pass==INLINE && ret.expression)
        {
                // Create a new variable to hold the return value of the inlined function.
-               r_result_name = get_unused_variable_name(staging_block, "_return", source_func->name);
+               r_result_name = get_unused_variable_name(staging_block, "_return");
                RefPtr<VariableDeclaration> var = new VariableDeclaration;
                var->source = ret.source;
                var->line = ret.line;
@@ -285,7 +281,7 @@ void FunctionInliner::visit(FunctionCall &call)
 
                // This will later get removed by UnusedVariableRemover.
                if(result_name.empty())
-                       result_name = "msp_unused_from_inline";
+                       result_name = "_msp_unused_from_inline";
 
                RefPtr<VariableReference> ref = new VariableReference;
                ref->name = result_name;