summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-03-10 23:42:28 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-03-10 23:42:28 +0000
commit56cc9904803154c0779c78d47595f232e73c45af (patch)
treed7f9fa800053a39c07a4347c5f9157e6668f9486 /llvm/lib/CodeGen
parent2528631f123e15d19b061ae80429c3949d0cc056 (diff)
downloadbcm5719-llvm-56cc9904803154c0779c78d47595f232e73c45af.tar.gz
bcm5719-llvm-56cc9904803154c0779c78d47595f232e73c45af.zip
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> llvm-svn: 203513
Diffstat (limited to 'llvm/lib/CodeGen')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud