[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