[llvm-commits] [llvm] r166745 - /llvm/trunk/tools/gold/gold-plugin.cpp
Michael Liao
michael.liao at intel.com
Thu Oct 25 17:44:52 PDT 2012
On Fri, 2012-10-26 at 00:29 +0000, Rafael Espindola wrote:
> Author: rafael
> Date: Thu Oct 25 19:29:57 2012
> New Revision: 166745
>
> URL: http://llvm.org/viewvc/llvm-project?rev=166745&view=rev
> Log:
> libLTO has a bug in that it will keep every symbol if none is needed. We used
> to hack around this in the gold plugin by deleting a module if no symbol was
> needed. Unfortunately, the hack is wrong in the case of o module having no
> visible symbols but still having side effects via static constructors.
>
> The bug will have to be fixed in libLTO itself.
Do u have PR filed?
- michael
>
> Modified:
> llvm/trunk/tools/gold/gold-plugin.cpp
>
> Modified: llvm/trunk/tools/gold/gold-plugin.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/gold/gold-plugin.cpp?rev=166745&r1=166744&r2=166745&view=diff
> ==============================================================================
> --- llvm/trunk/tools/gold/gold-plugin.cpp (original)
> +++ llvm/trunk/tools/gold/gold-plugin.cpp Thu Oct 25 19:29:57 2012
> @@ -378,9 +378,6 @@
> }
> }
>
> - // If we don't preserve any symbols, libLTO will assume that all symbols are
> - // needed. Keep all symbols unless we're producing a final executable.
> - bool anySymbolsPreserved = false;
> for (std::list<claimed_file>::iterator I = Modules.begin(),
> E = Modules.end(); I != E; ++I) {
> if (I->syms.empty())
> @@ -389,7 +386,6 @@
> for (unsigned i = 0, e = I->syms.size(); i != e; i++) {
> if (I->syms[i].resolution == LDPR_PREVAILING_DEF) {
> lto_codegen_add_must_preserve_symbol(code_gen, I->syms[i].name);
> - anySymbolsPreserved = true;
>
> if (options::generate_api_file)
> api_file << I->syms[i].name << "\n";
> @@ -400,12 +396,6 @@
> if (options::generate_api_file)
> api_file.close();
>
> - if (!anySymbolsPreserved) {
> - // All of the IL is unnecessary!
> - lto_codegen_dispose(code_gen);
> - return LDPS_OK;
> - }
> -
> lto_codegen_set_pic_model(code_gen, output_type);
> lto_codegen_set_debug_model(code_gen, LTO_DEBUG_MODEL_DWARF);
> if (!options::mcpu.empty())
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list