Simplify the computation of undefined symbols. Instead of walking
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 18 Mar 2011 05:12:38 +0000 (05:12 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 18 Mar 2011 05:12:38 +0000 (05:12 +0000)
commit9a4584b54b1c2f212e77fe9cd3ebd3f05bac3118
tree18fcf86ba76fdc0db5b5224677aece4660dc6780
parent2a72bfa1b1a634ef6c5aa866cac1c0afda4534e4
Simplify the computation of undefined symbols. Instead of walking
functions and initializers, just report the declarations present in
the module.

The motivation is to open the way for using the lazy module parsing,
which should speed up clients that just want a symbol list (nm, ar).

This is slightly less precise, but since both -strip-dead-prototypes
and -globaldce are part of the standard pipeline, this shouldn't
change the result for clang/dragonegg produced binaries.

Any decl in an IL file was also put there because a FE expected it
to be necessary, so this should not be a problem for "-O0 -emit-llvm".

As a sanity check, I have bootstrapped clang on linux and built
firefox on both linux and darwin. A clang bootstrap on darwin
with LTO fails with or without this patch because, ironically,
the linker doesn't like the combination of dead_strip and LTO
when building libLTO.so :-)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127870 91177308-0d34-0410-b5e6-96231b3b80d8
tools/lto/LTOModule.cpp
tools/lto/LTOModule.h