aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2008-07-08 16:38:42 +0000
committerOwen Anderson <resistor@mac.com>2008-07-08 16:38:42 +0000
commit771a81d1a7e83c87f16ad40fa77f4c7604941fc0 (patch)
tree9bdb361f5662958be2679463596e4aa5c366df5d /tools
parent75ee49e55747b7027802d40d14c5cac923544457 (diff)
downloadexternal_llvm-771a81d1a7e83c87f16ad40fa77f4c7604941fc0.zip
external_llvm-771a81d1a7e83c87f16ad40fa77f4c7604941fc0.tar.gz
external_llvm-771a81d1a7e83c87f16ad40fa77f4c7604941fc0.tar.bz2
Global variables beginning with \01 have special meaning on Darwin, so we need to remove
the name prefix when we change them from internal to external. This allows bugpointing of codegen miscompilations to work more reliably on Darwin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53236 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/bugpoint/ExtractFunction.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/tools/bugpoint/ExtractFunction.cpp b/tools/bugpoint/ExtractFunction.cpp
index ca8a279..776922a 100644
--- a/tools/bugpoint/ExtractFunction.cpp
+++ b/tools/bugpoint/ExtractFunction.cpp
@@ -262,8 +262,11 @@ Module *llvm::SplitFunctionsOutOfModule(Module *M,
for (Module::iterator I = M->begin(), E = M->end(); I != E; ++I)
I->setLinkage(GlobalValue::ExternalLinkage);
for (Module::global_iterator I = M->global_begin(), E = M->global_end();
- I != E; ++I)
+ I != E; ++I) {
+ if (I->hasName() && *I->getNameStart() == '\01')
+ I->setName(I->getNameStart()+1, I->getNameLen()-1);
I->setLinkage(GlobalValue::ExternalLinkage);
+ }
Module *New = CloneModule(M);