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 Revert "[C++11] Replace LLVM atomics with std::atomic." 2014-03-03 18:02:34 +00:00
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 [Modules] Move the ConstantRange class into the IR library. This is 2014-03-04 12:24:34 +00:00
ConstantFold.cpp [Modules] Move GetElementPtrTypeIterator into the IR library. As its 2014-03-04 10:40:04 +00:00
ConstantFold.h
ConstantRange.cpp [Modules] Move the ConstantRange class into the IR library. This is 2014-03-04 12:24:34 +00:00
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 Revert "[C++11] Replace LLVM atomics with std::atomic." 2014-03-03 18:02:34 +00:00
DiagnosticPrinter.cpp Report a warning when dropping outdated debug info metadata. 2014-01-16 01:51:12 +00:00
DIBuilder.cpp [Layering] Move DebugInfo.h into the IR library where its implementation 2014-03-06 00:46:21 +00:00
Dominators.cpp [Modules] Move CFG.h to the IR library as it defines graph traits over 2014-03-04 11:45:46 +00:00
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 [Modules] Move the LeakDetector header into the IR library where the 2014-03-04 12:46:06 +00:00
GVMaterializer.cpp [Layering] Move GVMaterializer.h into the IR library where its 2014-03-06 03:50:29 +00:00
InlineAsm.cpp Add static cast to unsigned char whenever a character classification function is called with a signed char argument, in order to avoid assertions in Windows Debug configuration. 2013-02-12 21:21:59 +00:00
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 Remove spurious emacs major mode marker, these should only go on .h files. 2014-02-26 03:10:45 +00:00
IRBuilder.cpp
IRPrintingPasses.cpp [C++11] Add 'override' keyword to IR library. 2014-03-05 06:35:38 +00:00
LeakDetector.cpp [Modules] Move the LeakDetector header into the IR library where the 2014-03-04 12:46:06 +00:00
LeaksContext.h Revert "Give internal classes hidden visibility." 2013-09-11 18:05:11 +00:00
LegacyPassManager.cpp [C++11] Add 'override' keyword to IR library. 2014-03-05 06:35:38 +00:00
LLVMBuild.txt
LLVMContext.cpp Add 'remark' diagnostic type in LLVM 2014-02-28 09:08:45 +00:00
LLVMContextImpl.cpp Add warning capabilities in LLVM. 2013-12-17 17:47:22 +00:00
LLVMContextImpl.h [C++11] Add 'override' keyword to IR library. 2014-03-05 06:35:38 +00:00
Makefile Actually update the CMake and Makefile builds correctly, and update the 2013-01-02 12:09:16 +00:00
Mangler.cpp Add back r201608, r201622, r201624 and r201625 2014-02-19 17:23:20 +00:00
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 [opt][PassInfo] Allow opt to run passes that need target machine. 2014-01-16 21:44:34 +00:00
SymbolTableListTraitsImpl.h
Type.cpp Mark some Type and EVT methods as LLVM_READONLY. 2013-12-28 16:17:26 +00:00
TypeFinder.cpp TypeFinder: prefer iterative algorithm to keep stack usage low. 2013-10-16 04:10:06 +00:00
Use.cpp [cleanup] Add a getOperandNo method to the Use class and implement it 2014-03-04 09:19:43 +00:00
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 Add v4f16 to supported value types. 2013-10-03 03:29:21 +00:00
Verifier.cpp IR: Slightly more verbose error in Verifier 2014-03-10 21:22:44 +00:00