From: Reid Kleckner Date: Mon, 6 Jul 2015 18:48:02 +0000 (+0000) Subject: [llvm-extract] Drop comdats from declarations X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=f0101b2d6029b798f16e14223f31acc02ed344f4;ds=sidebyside [llvm-extract] Drop comdats from declarations The verifier rejects comdats on declarations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241483 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/IPO/ExtractGV.cpp b/lib/Transforms/IPO/ExtractGV.cpp index 2f8c7d9349b..b9462f2ffc7 100644 --- a/lib/Transforms/IPO/ExtractGV.cpp +++ b/lib/Transforms/IPO/ExtractGV.cpp @@ -93,8 +93,11 @@ namespace { makeVisible(*I, Delete); - if (Delete) + if (Delete) { + // Make this a declaration and drop it's comdat. I->setInitializer(nullptr); + I->setComdat(nullptr); + } } // Visit the Functions. @@ -108,8 +111,11 @@ namespace { makeVisible(*I, Delete); - if (Delete) + if (Delete) { + // Make this a declaration and drop it's comdat. I->deleteBody(); + I->setComdat(nullptr); + } } // Visit the Aliases. diff --git a/test/Other/extract.ll b/test/Other/extract.ll index 8b0c835d574..08675d8bff3 100644 --- a/test/Other/extract.ll +++ b/test/Other/extract.ll @@ -7,19 +7,22 @@ ; llvm-extract uses lazy bitcode loading, so make sure it correctly reads ; from bitcode files in addition to assembly files. -; CHECK: define hidden void @foo() { +; CHECK: define hidden void @foo() comdat($x) { ; CHECK: ret void ; CHECK: } ; The private linkage for foo() should be changed to external linkage and ; hidden visibility added. ; DELETE: declare hidden void @foo() +; DELETE-NOT: comdat ; DELETE: define void @bar() { ; DELETE: call void @foo() ; DELETE: ret void ; DELETE: } -define private void @foo() { +$x = comdat any + +define private void @foo() comdat($x) { ret void } define void @bar() {