[llvm] r242030 - Don't change the visibility when converting a definition to a declaration.

Rafael Espindola rafael.espindola at gmail.com
Mon Jul 13 07:18:22 PDT 2015


Author: rafael
Date: Mon Jul 13 09:18:22 2015
New Revision: 242030

URL: http://llvm.org/viewvc/llvm-project?rev=242030&view=rev
Log:
Don't change the visibility when converting a definition to a declaration.

Added:
    llvm/trunk/test/Transforms/EliminateAvailableExternally/
    llvm/trunk/test/Transforms/EliminateAvailableExternally/visibility.ll
Modified:
    llvm/trunk/include/llvm/LinkAllPasses.h
    llvm/trunk/lib/Transforms/IPO/ElimAvailExtern.cpp
    llvm/trunk/lib/Transforms/IPO/IPO.cpp

Modified: llvm/trunk/include/llvm/LinkAllPasses.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LinkAllPasses.h?rev=242030&r1=242029&r2=242030&view=diff
==============================================================================
--- llvm/trunk/include/llvm/LinkAllPasses.h (original)
+++ llvm/trunk/include/llvm/LinkAllPasses.h Mon Jul 13 09:18:22 2015
@@ -176,6 +176,7 @@ namespace {
       (void) llvm::createStraightLineStrengthReducePass();
       (void) llvm::createMemDerefPrinter();
       (void) llvm::createFloat2IntPass();
+      (void) llvm::createEliminateAvailableExternallyPass();
 
       (void)new llvm::IntervalPartition();
       (void)new llvm::ScalarEvolution();

Modified: llvm/trunk/lib/Transforms/IPO/ElimAvailExtern.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/ElimAvailExtern.cpp?rev=242030&r1=242029&r2=242030&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/IPO/ElimAvailExtern.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/ElimAvailExtern.cpp Mon Jul 13 09:18:22 2015
@@ -67,7 +67,6 @@ bool EliminateAvailableExternally::runOn
     }
     I->removeDeadConstantUsers();
     I->setLinkage(GlobalValue::ExternalLinkage);
-    I->setVisibility(GlobalValue::DefaultVisibility);
     NumVariables++;
   }
 
@@ -78,7 +77,6 @@ bool EliminateAvailableExternally::runOn
     if (!I->isDeclaration())
       // This will set the linkage to external
       I->deleteBody();
-    I->setVisibility(GlobalValue::DefaultVisibility);
     I->removeDeadConstantUsers();
     NumFunctions++;
   }
@@ -91,7 +89,6 @@ bool EliminateAvailableExternally::runOn
     I->setAliasee(nullptr);
     I->removeDeadConstantUsers();
     I->setLinkage(GlobalValue::ExternalLinkage);
-    I->setVisibility(GlobalValue::DefaultVisibility);
     NumAliases++;
   }
 

Modified: llvm/trunk/lib/Transforms/IPO/IPO.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/IPO.cpp?rev=242030&r1=242029&r2=242030&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/IPO/IPO.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/IPO.cpp Mon Jul 13 09:18:22 2015
@@ -46,6 +46,7 @@ void llvm::initializeIPO(PassRegistry &R
   initializeStripDeadDebugInfoPass(Registry);
   initializeStripNonDebugSymbolsPass(Registry);
   initializeBarrierNoopPass(Registry);
+  initializeEliminateAvailableExternallyPass(Registry);
 }
 
 void LLVMInitializeIPO(LLVMPassRegistryRef R) {

Added: llvm/trunk/test/Transforms/EliminateAvailableExternally/visibility.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/EliminateAvailableExternally/visibility.ll?rev=242030&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/EliminateAvailableExternally/visibility.ll (added)
+++ llvm/trunk/test/Transforms/EliminateAvailableExternally/visibility.ll Mon Jul 13 09:18:22 2015
@@ -0,0 +1,11 @@
+; RUN: opt -elim-avail-extern -S < %s | FileCheck %s
+
+; CHECK: declare hidden void @f()
+define available_externally hidden void @f() {
+  ret void
+}
+
+define void @g() {
+  call void @f()
+  ret void
+}





More information about the llvm-commits mailing list