| 116 | } |
| 117 | } |
| 118 | void RemoveUnusedSymbols ( Module & mod ) { |
| 119 | auto functions = das::move(mod.functions); |
| 120 | auto globals = das::move(mod.globals); |
| 121 | mod.functionsByName.clear(); |
| 122 | // mod.globals.clear(); |
| 123 | for ( auto & fn : functions.each() ) { |
| 124 | if ( fn->used ) { |
| 125 | if ( !mod.addFunction(fn, true) ) { |
| 126 | program->error("internal error, failed to add function " + fn->name,"","", fn->at, CompilationError::internal_function ); |
| 127 | } |
| 128 | } |
| 129 | } |
| 130 | for ( auto & var : globals.each() ) { |
| 131 | if ( var->used ) { |
| 132 | if ( !mod.addVariable(var, true) ) { |
| 133 | program->error("internal error, failed to add variable " + var->name,"","", var->at, CompilationError::internal_variable ); |
| 134 | } |
| 135 | } |
| 136 | } |
| 137 | } |
| 138 | protected: |
| 139 | ProgramPtr program; |
| 140 | FunctionPtr func = nullptr; |
no test coverage detected