From b570d7112722e54f0a3e3f0fa657d72569e4b9fe Mon Sep 17 00:00:00 2001 From: Justin Lebar Date: Wed, 15 Jun 2016 23:20:12 +0000 Subject: [PATCH] [Bugpoint] Erase comdat annotations after removing a global's initializer. Summary: This is necessary to keep the verifier happy after bugpoint removes an initializer from a global variable with a comdat annotation, because globals without initializers may not have comdats. Reviewers: majnemer, rnk Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D21274 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272854 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/bugpoint/CrashDebugger.cpp | 2 ++ tools/bugpoint/ExtractFunction.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/tools/bugpoint/CrashDebugger.cpp b/tools/bugpoint/CrashDebugger.cpp index b161d88882a..02e488ed3da 100644 --- a/tools/bugpoint/CrashDebugger.cpp +++ b/tools/bugpoint/CrashDebugger.cpp @@ -164,6 +164,7 @@ ReduceCrashingGlobalVariables::TestGlobalVariables( if (I.hasInitializer() && !GVSet.count(&I)) { DeleteGlobalInitializer(&I); I.setLinkage(GlobalValue::ExternalLinkage); + I.setComdat(nullptr); } // Try running the hacked up program... @@ -668,6 +669,7 @@ static bool DebugACrash(BugDriver &BD, if (I->hasInitializer()) { DeleteGlobalInitializer(&*I); I->setLinkage(GlobalValue::ExternalLinkage); + I->setComdat(nullptr); DeletedInit = true; } diff --git a/tools/bugpoint/ExtractFunction.cpp b/tools/bugpoint/ExtractFunction.cpp index fe0ab69dc16..ae202c3f77e 100644 --- a/tools/bugpoint/ExtractFunction.cpp +++ b/tools/bugpoint/ExtractFunction.cpp @@ -215,6 +215,8 @@ void llvm::DeleteGlobalInitializer(GlobalVariable *GV) { // void llvm::DeleteFunctionBody(Function *F) { eliminateAliases(F); + // Function declarations can't have comdats. + F->setComdat(nullptr); // delete the body of the function... F->deleteBody(); -- 2.11.0