Global variables beginning with \01 have special meaning on Darwin, so we need to...
authorOwen Anderson <resistor@mac.com>
Tue, 8 Jul 2008 16:38:42 +0000 (16:38 +0000)
committerOwen Anderson <resistor@mac.com>
Tue, 8 Jul 2008 16:38:42 +0000 (16:38 +0000)
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

tools/bugpoint/ExtractFunction.cpp

index ca8a279153fe62321a058c6c8bf429496bc5fe99..776922aa5d43c32efb168e86a52aecd5bd0a6ca9 100644 (file)
@@ -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);