[Bug ipa/59469] [4.8/4.9 Regression] LLVM build failure with gcc LTO

hubicka at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Dec 15 15:33:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59469

--- Comment #9 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
LTO-ing libbackend.a into every frontend binary theoretically results in better
code.  I did not see numbers on this.
Now I understand what you complain about. LTO build optimizes out the symbol or
makes it static, while non-LTO build produces weak.
I think this is correct: weak symbols should be always produced by the unit
that needs it unless they are keyed. This one does not seem to be.
_ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEE21transferNodesFromListERNS_12ilist_traitsIS1_EENS_14ilist_iteratorIS1_EES8_/3295
(transferNodesFromList) @0x7fd527d7ee18
  Type: function definition analyzed
  Visibility: externally_visible prevailing_def_ironly_exp public weak comdat
comdat_group:_ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEE21transferNodesFromListERNS_12ilist_traitsIS1_EENS_14ilist_iteratorIS1_EES8_
one_only
  next sharing asm name: 9004
  References:
  Referring:
  Read from file: BasicBlock.o
  First run: 0
  Function flags:
  Called by:
_ZN4llvm6iplistINS_10BasicBlockENS_12ilist_traitsIS1_EEE8transferENS_14ilist_iteratorIS1_EERS4_S6_S6_/3184
(0.90 per call) (can throw external)
  Calls: _ZN4llvm10BasicBlock9setParentEPNS_8FunctionE/2560 (1.36 per call)
(can throw external) _ZN4llvm16ValueSymbolTable13reinsertValueEPNS_5ValueE/4100
(2.24 per call) (can throw exte

So I think the problem really is libLLVMAsmParser.so requring this symbol while
not providing weak definition.  Can you look into resolution file and
-fdump-ipa-cgraph file how the symbol looks like while building the library?
It may also be error on llvm side declaring the symbol but not providing inline
definition within some source file of libASMParser. (I saw similar things in
Firefox)



More information about the Gcc-bugs mailing list