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 Replace OwningPtr<T> with std::unique_ptr<T>. 2014-03-06 05:51:42 +00:00
AttributeImpl.h [C++11] Add 'override' keyword to IR library. 2014-03-05 06:35:38 +00:00
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 [C++11] Add 'override' keyword to IR library. 2014-03-05 06:35:38 +00:00
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 [Layering] Move DebugInfo.h into the IR library where its implementation 2014-03-06 00:46:21 +00:00
DiagnosticInfo.cpp
DiagnosticPrinter.cpp
DIBuilder.cpp [Layering] Move DebugInfo.h into the IR library where its implementation 2014-03-06 00:46:21 +00:00
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 Replace OwningPtr<T> with std::unique_ptr<T>. 2014-03-06 05:51:42 +00:00
Globals.cpp
GVMaterializer.cpp [Layering] Move GVMaterializer.h into the IR library where its 2014-03-06 03:50:29 +00:00
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 [C++11] Add 'override' keyword to IR library. 2014-03-05 06:35:38 +00:00
LeakDetector.cpp
LeaksContext.h
LegacyPassManager.cpp [C++11] Add 'override' keyword to IR library. 2014-03-05 06:35:38 +00:00
LLVMBuild.txt
LLVMContext.cpp
LLVMContextImpl.cpp
LLVMContextImpl.h [C++11] Add 'override' keyword to IR library. 2014-03-05 06:35:38 +00:00
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 [C++11] Add 'override' keyword to IR library. 2014-03-05 06:35:38 +00:00
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