llvm-6502/lib/IR
Duncan P. N. Exon Smith f5d17528ee Module: Don't rename in getOrInsertFunction()
During LTO, user-supplied definitions of C library functions often
exist.  -instcombine uses Module::getOrInsertFunction() to get a handle
on library functions (e.g., @puts, when optimizing @printf).

Previously, Module::getOrInsertFunction() would rename any matching
functions with local linkage, and create a new declaration.  In LTO,
this is the opposite of desired behaviour, as it skips by the
user-supplied version of the library function and creates a new
undefined reference which the linker often cannot resolve.

After some discussing with Rafael on the list, it looks like it's
undesired behaviour.  If a consumer actually *needs* this behaviour, we
should add new API with a more explicit name.

I added two testcases: one specifically for the -instcombine behaviour
and one for the LTO flow.

<rdar://problem/16165191>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203513 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-10 23:42:28 +00:00
..
AsmWriter.cpp IR: Change inalloca's grammar a bit 2014-03-09 06:41:58 +00:00
AsmWriter.h
AttributeImpl.h
Attributes.cpp
AutoUpgrade.cpp [C++11] Add range based accessors for the Use-Def chain of a Value. 2014-03-09 03:16:01 +00:00
BasicBlock.cpp [C++11] Add range based accessors for the Use-Def chain of a Value. 2014-03-09 03:16:01 +00:00
CMakeLists.txt
ConstantFold.cpp
ConstantFold.h
ConstantRange.cpp
Constants.cpp [C++11] Add range based accessors for the Use-Def chain of a Value. 2014-03-09 03:16:01 +00:00
ConstantsContext.h
Core.cpp llvm-c: expose unnamedaddr field of globals 2014-03-10 19:24:35 +00:00
DataLayout.cpp [C++11] Modernize the IR library a bit. 2014-03-10 15:03:06 +00:00
DebugInfo.cpp [C++11] Add range based accessors for the Use-Def chain of a Value. 2014-03-09 03:16:01 +00:00
DebugLoc.cpp
DiagnosticInfo.cpp
DiagnosticPrinter.cpp
DIBuilder.cpp
Dominators.cpp
Function.cpp For functions with ARM target specific calling convention, when simplify-libcall 2014-03-10 20:49:45 +00:00
GCOV.cpp
Globals.cpp
GVMaterializer.cpp
InlineAsm.cpp
Instruction.cpp [C++11] Modernize the IR library a bit. 2014-03-10 15:03:06 +00:00
Instructions.cpp [C++11] Modernize the IR library a bit. 2014-03-10 15:03:06 +00:00
IntrinsicInst.cpp
IRBuilder.cpp
IRPrintingPasses.cpp
LeakDetector.cpp
LeaksContext.h
LegacyPassManager.cpp
LLVMBuild.txt
LLVMContext.cpp
LLVMContextImpl.cpp
LLVMContextImpl.h
Makefile
Mangler.cpp
Metadata.cpp [C++11] Modernize the IR library a bit. 2014-03-10 15:03:06 +00:00
Module.cpp Module: Don't rename in getOrInsertFunction() 2014-03-10 23:42:28 +00:00
Pass.cpp
PassManager.cpp [PM] While I'm here, fix a few other clang-format issues. Pulls some 2014-03-10 02:12:14 +00:00
PassRegistry.cpp
SymbolTableListTraitsImpl.h
Type.cpp
TypeFinder.cpp
Use.cpp
User.cpp
Value.cpp [C++11] Add range based accessors for the Use-Def chain of a Value. 2014-03-09 03:16:01 +00:00
ValueSymbolTable.cpp
ValueTypes.cpp
Verifier.cpp IR: Slightly more verbose error in Verifier 2014-03-10 21:22:44 +00:00