mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
3d41fcb3da
This change includes a fix for https://code.google.com/p/chromium/issues/detail?id=499508#c3, which required updating the visibility for symbols with eliminated definitions. --Original Commit Message-- Add new EliminateAvailableExternally module pass, which is performed in O2 compiles just before GlobalDCE, unless we are preparing for LTO. This pass eliminates available externally globals (turning them into declarations), regardless of whether they are dead/unreferenced, since we are guaranteed to have a copy available elsewhere at link time. This enables additional opportunities for GlobalDCE. If we are preparing for LTO (e.g. a -flto -c compile), the pass is not included as we want to preserve available externally functions for possible link time inlining. The FE indicates whether we are doing an -flto compile via the new PrepareForLTO flag on the PassManagerBuilder. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241466 91177308-0d34-0410-b5e6-96231b3b80d8
32 lines
647 B
CMake
32 lines
647 B
CMake
add_llvm_library(LLVMipo
|
|
ArgumentPromotion.cpp
|
|
BarrierNoopPass.cpp
|
|
ConstantMerge.cpp
|
|
DeadArgumentElimination.cpp
|
|
ElimAvailExtern.cpp
|
|
ExtractGV.cpp
|
|
FunctionAttrs.cpp
|
|
GlobalDCE.cpp
|
|
GlobalOpt.cpp
|
|
IPConstantPropagation.cpp
|
|
IPO.cpp
|
|
InlineAlways.cpp
|
|
InlineSimple.cpp
|
|
Inliner.cpp
|
|
Internalize.cpp
|
|
LoopExtractor.cpp
|
|
LowerBitSets.cpp
|
|
MergeFunctions.cpp
|
|
PartialInlining.cpp
|
|
PassManagerBuilder.cpp
|
|
PruneEH.cpp
|
|
StripDeadPrototypes.cpp
|
|
StripSymbols.cpp
|
|
|
|
ADDITIONAL_HEADER_DIRS
|
|
${LLVM_MAIN_INCLUDE_DIR}/llvm/Transforms
|
|
${LLVM_MAIN_INCLUDE_DIR}/llvm/Transforms/IPO
|
|
)
|
|
|
|
add_dependencies(LLVMipo intrinsics_gen)
|