[llvm] r208263 - IR: Don't allow non-default visibility on local linkage

Duncan P. N. Exon Smith dexonsmith at apple.com
Wed May 7 15:57:21 PDT 2014


Author: dexonsmith
Date: Wed May  7 17:57:20 2014
New Revision: 208263

URL: http://llvm.org/viewvc/llvm-project?rev=208263&view=rev
Log:
IR: Don't allow non-default visibility on local linkage

Visibilities of `hidden` and `protected` are meaningless for symbols
with local linkage.

  - Change the assembler to reject non-default visibility on symbols
    with local linkage.

  - Change the bitcode reader to auto-upgrade `hidden` and `protected`
    to `default` when the linkage is local.

  - Update LangRef.

<rdar://problem/16141113>

Added:
    llvm/trunk/test/Assembler/internal-hidden-alias.ll
    llvm/trunk/test/Assembler/internal-hidden-function.ll
    llvm/trunk/test/Assembler/internal-hidden-variable.ll
    llvm/trunk/test/Assembler/internal-protected-alias.ll
    llvm/trunk/test/Assembler/internal-protected-function.ll
    llvm/trunk/test/Assembler/internal-protected-variable.ll
    llvm/trunk/test/Assembler/private-hidden-alias.ll
    llvm/trunk/test/Assembler/private-hidden-function.ll
    llvm/trunk/test/Assembler/private-hidden-variable.ll
    llvm/trunk/test/Assembler/private-protected-alias.ll
    llvm/trunk/test/Assembler/private-protected-function.ll
    llvm/trunk/test/Assembler/private-protected-variable.ll
    llvm/trunk/test/Bitcode/local-linkage-default-visibility.3.4.ll
    llvm/trunk/test/Bitcode/local-linkage-default-visibility.3.4.ll.bc
Modified:
    llvm/trunk/docs/LangRef.rst
    llvm/trunk/lib/AsmParser/LLParser.cpp
    llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
    llvm/trunk/test/LTO/keep-used-puts-during-instcombine.ll
    llvm/trunk/test/Transforms/GlobalOpt/alias-used-section.ll
    llvm/trunk/test/Transforms/GlobalOpt/atexit.ll
    llvm/trunk/test/Transforms/MergeFunc/crash.ll
    llvm/trunk/test/Transforms/MergeFunc/inttoptr-address-space.ll
    llvm/trunk/test/Transforms/MergeFunc/inttoptr.ll

Modified: llvm/trunk/docs/LangRef.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LangRef.rst?rev=208263&r1=208262&r2=208263&view=diff
==============================================================================
--- llvm/trunk/docs/LangRef.rst (original)
+++ llvm/trunk/docs/LangRef.rst Wed May  7 17:57:20 2014
@@ -440,6 +440,9 @@ styles:
     defining module will bind to the local symbol. That is, the symbol
     cannot be overridden by another module.
 
+A symbol with ``internal`` or ``private`` linkage must have ``default``
+visibility.
+
 .. _namedtypes:
 
 DLL Storage Classes

Modified: llvm/trunk/lib/AsmParser/LLParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.cpp?rev=208263&r1=208262&r2=208263&view=diff
==============================================================================
--- llvm/trunk/lib/AsmParser/LLParser.cpp (original)
+++ llvm/trunk/lib/AsmParser/LLParser.cpp Wed May  7 17:57:20 2014
@@ -622,6 +622,11 @@ bool LLParser::ParseStandaloneMetadata()
   return false;
 }
 
+static bool isValidVisibilityForLinkage(unsigned V, unsigned L) {
+  return !GlobalValue::isLocalLinkage((GlobalValue::LinkageTypes)L) ||
+         (GlobalValue::VisibilityTypes)V == GlobalValue::DefaultVisibility;
+}
+
 /// ParseAlias:
 ///   ::= GlobalVar '=' OptionalVisibility OptionalDLLStorageClass 'alias'
 ///                     OptionalLinkage Aliasee
@@ -646,6 +651,10 @@ bool LLParser::ParseAlias(const std::str
   if(!GlobalAlias::isValidLinkage(Linkage))
     return Error(LinkageLoc, "invalid linkage type for alias");
 
+  if (!isValidVisibilityForLinkage(Visibility, L))
+    return Error(LinkageLoc,
+                 "symbol with local linkage must have default visibility");
+
   Constant *Aliasee;
   LocTy AliaseeLoc = Lex.getLoc();
   if (Lex.getKind() != lltok::kw_bitcast &&
@@ -714,6 +723,10 @@ bool LLParser::ParseAlias(const std::str
 bool LLParser::ParseGlobal(const std::string &Name, LocTy NameLoc,
                            unsigned Linkage, bool HasLinkage,
                            unsigned Visibility, unsigned DLLStorageClass) {
+  if (!isValidVisibilityForLinkage(Visibility, Linkage))
+    return Error(NameLoc,
+                 "symbol with local linkage must have default visibility");
+
   unsigned AddrSpace;
   bool IsConstant, UnnamedAddr, IsExternallyInitialized;
   GlobalVariable::ThreadLocalMode TLM;
@@ -3014,6 +3027,10 @@ bool LLParser::ParseFunctionHeader(Funct
     return Error(LinkageLoc, "invalid function linkage type");
   }
 
+  if (!isValidVisibilityForLinkage(Visibility, Linkage))
+    return Error(LinkageLoc,
+                 "symbol with local linkage must have default visibility");
+
   if (!FunctionType::isValidReturnType(RetType))
     return Error(RetTypeLoc, "invalid function return type");
 

Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=208263&r1=208262&r2=208263&view=diff
==============================================================================
--- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
+++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Wed May  7 17:57:20 2014
@@ -1856,7 +1856,9 @@ error_code BitcodeReader::ParseModule(bo
         Section = SectionTable[Record[5]-1];
       }
       GlobalValue::VisibilityTypes Visibility = GlobalValue::DefaultVisibility;
-      if (Record.size() > 6)
+      // Local linkage must have default visibility.
+      if (Record.size() > 6 && !GlobalValue::isLocalLinkage(Linkage))
+        // FIXME: Change to an error if non-default in 4.0.
         Visibility = GetDecodedVisibility(Record[6]);
 
       GlobalVariable::ThreadLocalMode TLM = GlobalVariable::NotThreadLocal;
@@ -1922,7 +1924,10 @@ error_code BitcodeReader::ParseModule(bo
           return Error(InvalidID);
         Func->setSection(SectionTable[Record[6]-1]);
       }
-      Func->setVisibility(GetDecodedVisibility(Record[7]));
+      // Local linkage must have default visibility.
+      if (!Func->hasLocalLinkage())
+        // FIXME: Change to an error if non-default in 4.0.
+        Func->setVisibility(GetDecodedVisibility(Record[7]));
       if (Record.size() > 8 && Record[8]) {
         if (Record[8]-1 > GCTable.size())
           return Error(InvalidID);
@@ -1964,7 +1969,9 @@ error_code BitcodeReader::ParseModule(bo
       GlobalAlias *NewGA = new GlobalAlias(Ty, GetDecodedLinkage(Record[2]),
                                            "", nullptr, TheModule);
       // Old bitcode files didn't have visibility field.
-      if (Record.size() > 3)
+      // Local linkage must have default visibility.
+      if (Record.size() > 3 && !NewGA->hasLocalLinkage())
+        // FIXME: Change to an error if non-default in 4.0.
         NewGA->setVisibility(GetDecodedVisibility(Record[3]));
       if (Record.size() > 4)
         NewGA->setDLLStorageClass(GetDecodedDLLStorageClass(Record[4]));

Added: llvm/trunk/test/Assembler/internal-hidden-alias.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/internal-hidden-alias.ll?rev=208263&view=auto
==============================================================================
--- llvm/trunk/test/Assembler/internal-hidden-alias.ll (added)
+++ llvm/trunk/test/Assembler/internal-hidden-alias.ll Wed May  7 17:57:20 2014
@@ -0,0 +1,6 @@
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+
+ at global = global i32 0
+
+ at alias = hidden alias internal i32* @global
+; CHECK: symbol with local linkage must have default visibility

Added: llvm/trunk/test/Assembler/internal-hidden-function.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/internal-hidden-function.ll?rev=208263&view=auto
==============================================================================
--- llvm/trunk/test/Assembler/internal-hidden-function.ll (added)
+++ llvm/trunk/test/Assembler/internal-hidden-function.ll Wed May  7 17:57:20 2014
@@ -0,0 +1,7 @@
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+
+define internal hidden void @function() {
+; CHECK: symbol with local linkage must have default visibility
+entry:
+  ret void
+}

Added: llvm/trunk/test/Assembler/internal-hidden-variable.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/internal-hidden-variable.ll?rev=208263&view=auto
==============================================================================
--- llvm/trunk/test/Assembler/internal-hidden-variable.ll (added)
+++ llvm/trunk/test/Assembler/internal-hidden-variable.ll Wed May  7 17:57:20 2014
@@ -0,0 +1,4 @@
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+
+ at var = internal hidden global i32 0
+; CHECK: symbol with local linkage must have default visibility

Added: llvm/trunk/test/Assembler/internal-protected-alias.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/internal-protected-alias.ll?rev=208263&view=auto
==============================================================================
--- llvm/trunk/test/Assembler/internal-protected-alias.ll (added)
+++ llvm/trunk/test/Assembler/internal-protected-alias.ll Wed May  7 17:57:20 2014
@@ -0,0 +1,6 @@
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+
+ at global = global i32 0
+
+ at alias = protected alias internal i32* @global
+; CHECK: symbol with local linkage must have default visibility

Added: llvm/trunk/test/Assembler/internal-protected-function.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/internal-protected-function.ll?rev=208263&view=auto
==============================================================================
--- llvm/trunk/test/Assembler/internal-protected-function.ll (added)
+++ llvm/trunk/test/Assembler/internal-protected-function.ll Wed May  7 17:57:20 2014
@@ -0,0 +1,7 @@
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+
+define internal protected void @function() {
+; CHECK: symbol with local linkage must have default visibility
+entry:
+  ret void
+}

Added: llvm/trunk/test/Assembler/internal-protected-variable.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/internal-protected-variable.ll?rev=208263&view=auto
==============================================================================
--- llvm/trunk/test/Assembler/internal-protected-variable.ll (added)
+++ llvm/trunk/test/Assembler/internal-protected-variable.ll Wed May  7 17:57:20 2014
@@ -0,0 +1,4 @@
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+
+ at var = internal protected global i32 0
+; CHECK: symbol with local linkage must have default visibility

Added: llvm/trunk/test/Assembler/private-hidden-alias.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/private-hidden-alias.ll?rev=208263&view=auto
==============================================================================
--- llvm/trunk/test/Assembler/private-hidden-alias.ll (added)
+++ llvm/trunk/test/Assembler/private-hidden-alias.ll Wed May  7 17:57:20 2014
@@ -0,0 +1,6 @@
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+
+ at global = global i32 0
+
+ at alias = hidden alias private i32* @global
+; CHECK: symbol with local linkage must have default visibility

Added: llvm/trunk/test/Assembler/private-hidden-function.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/private-hidden-function.ll?rev=208263&view=auto
==============================================================================
--- llvm/trunk/test/Assembler/private-hidden-function.ll (added)
+++ llvm/trunk/test/Assembler/private-hidden-function.ll Wed May  7 17:57:20 2014
@@ -0,0 +1,7 @@
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+
+define private hidden void @function() {
+; CHECK: symbol with local linkage must have default visibility
+entry:
+  ret void
+}

Added: llvm/trunk/test/Assembler/private-hidden-variable.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/private-hidden-variable.ll?rev=208263&view=auto
==============================================================================
--- llvm/trunk/test/Assembler/private-hidden-variable.ll (added)
+++ llvm/trunk/test/Assembler/private-hidden-variable.ll Wed May  7 17:57:20 2014
@@ -0,0 +1,4 @@
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+
+ at var = private hidden global i32 0
+; CHECK: symbol with local linkage must have default visibility

Added: llvm/trunk/test/Assembler/private-protected-alias.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/private-protected-alias.ll?rev=208263&view=auto
==============================================================================
--- llvm/trunk/test/Assembler/private-protected-alias.ll (added)
+++ llvm/trunk/test/Assembler/private-protected-alias.ll Wed May  7 17:57:20 2014
@@ -0,0 +1,6 @@
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+
+ at global = global i32 0
+
+ at alias = protected alias private i32* @global
+; CHECK: symbol with local linkage must have default visibility

Added: llvm/trunk/test/Assembler/private-protected-function.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/private-protected-function.ll?rev=208263&view=auto
==============================================================================
--- llvm/trunk/test/Assembler/private-protected-function.ll (added)
+++ llvm/trunk/test/Assembler/private-protected-function.ll Wed May  7 17:57:20 2014
@@ -0,0 +1,7 @@
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+
+define private protected void @function() {
+; CHECK: symbol with local linkage must have default visibility
+entry:
+  ret void
+}

Added: llvm/trunk/test/Assembler/private-protected-variable.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/private-protected-variable.ll?rev=208263&view=auto
==============================================================================
--- llvm/trunk/test/Assembler/private-protected-variable.ll (added)
+++ llvm/trunk/test/Assembler/private-protected-variable.ll Wed May  7 17:57:20 2014
@@ -0,0 +1,4 @@
+; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
+
+ at var = private protected global i32 0
+; CHECK: symbol with local linkage must have default visibility

Added: llvm/trunk/test/Bitcode/local-linkage-default-visibility.3.4.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/local-linkage-default-visibility.3.4.ll?rev=208263&view=auto
==============================================================================
--- llvm/trunk/test/Bitcode/local-linkage-default-visibility.3.4.ll (added)
+++ llvm/trunk/test/Bitcode/local-linkage-default-visibility.3.4.ll Wed May  7 17:57:20 2014
@@ -0,0 +1,79 @@
+; RUN: llvm-dis < %s.bc | FileCheck %s
+
+; local-linkage-default-visibility.3.4.ll.bc was generated by passing this file
+; to llvm-as-3.4.  The test checks that LLVM upgrades visibility of symbols
+; with local linkage to default visibility.
+
+ at default.internal.var = internal global i32 0
+; CHECK: @default.internal.var = internal global i32 0
+
+ at hidden.internal.var = internal hidden global i32 0
+; CHECK: @hidden.internal.var = internal global i32 0
+
+ at protected.internal.var = internal protected global i32 0
+; CHECK: @protected.internal.var = internal global i32 0
+
+ at default.private.var = private global i32 0
+; CHECK: @default.private.var = private global i32 0
+
+ at hidden.private.var = private hidden global i32 0
+; CHECK: @hidden.private.var = private global i32 0
+
+ at protected.private.var = private protected global i32 0
+; CHECK: @protected.private.var = private global i32 0
+
+ at global = global i32 0
+
+ at default.internal.alias = alias internal i32* @global
+; CHECK: @default.internal.alias = alias internal i32* @global
+
+ at hidden.internal.alias = hidden alias internal i32* @global
+; CHECK: @hidden.internal.alias = alias internal i32* @global
+
+ at protected.internal.alias = protected alias internal i32* @global
+; CHECK: @protected.internal.alias = alias internal i32* @global
+
+ at default.private.alias = alias private i32* @global
+; CHECK: @default.private.alias = alias private i32* @global
+
+ at hidden.private.alias = hidden alias private i32* @global
+; CHECK: @hidden.private.alias = alias private i32* @global
+
+ at protected.private.alias = protected alias private i32* @global
+; CHECK: @protected.private.alias = alias private i32* @global
+
+define internal void @default.internal() {
+; CHECK: define internal void @default.internal
+entry:
+  ret void
+}
+
+define internal hidden void @hidden.internal() {
+; CHECK: define internal void @hidden.internal
+entry:
+  ret void
+}
+
+define internal protected void @protected.internal() {
+; CHECK: define internal void @protected.internal
+entry:
+  ret void
+}
+
+define private void @default.private() {
+; CHECK: define private void @default.private
+entry:
+  ret void
+}
+
+define private hidden void @hidden.private() {
+; CHECK: define private void @hidden.private
+entry:
+  ret void
+}
+
+define private protected void @protected.private() {
+; CHECK: define private void @protected.private
+entry:
+  ret void
+}

Added: llvm/trunk/test/Bitcode/local-linkage-default-visibility.3.4.ll.bc
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/local-linkage-default-visibility.3.4.ll.bc?rev=208263&view=auto
==============================================================================
Binary files llvm/trunk/test/Bitcode/local-linkage-default-visibility.3.4.ll.bc (added) and llvm/trunk/test/Bitcode/local-linkage-default-visibility.3.4.ll.bc Wed May  7 17:57:20 2014 differ

Modified: llvm/trunk/test/LTO/keep-used-puts-during-instcombine.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/LTO/keep-used-puts-during-instcombine.ll?rev=208263&r1=208262&r2=208263&view=diff
==============================================================================
--- llvm/trunk/test/LTO/keep-used-puts-during-instcombine.ll (original)
+++ llvm/trunk/test/LTO/keep-used-puts-during-instcombine.ll Wed May  7 17:57:20 2014
@@ -20,14 +20,14 @@ entry:
   ret i32 0
 }
 
-define internal hidden i32 @printf(i8* readonly nocapture %fmt, ...) {
+define internal i32 @printf(i8* readonly nocapture %fmt, ...) {
 entry:
   %ret = call i32 @bar(i8* %fmt)
   ret i32 %ret
 }
 
 ; CHECK: define {{.*}} @puts(
-define internal hidden i32 @puts(i8* %s) {
+define internal i32 @puts(i8* %s) {
 entry:
   %ret = call i32 @bar(i8* %s)
   ret i32 %ret

Modified: llvm/trunk/test/Transforms/GlobalOpt/alias-used-section.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GlobalOpt/alias-used-section.ll?rev=208263&r1=208262&r2=208263&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/GlobalOpt/alias-used-section.ll (original)
+++ llvm/trunk/test/Transforms/GlobalOpt/alias-used-section.ll Wed May  7 17:57:20 2014
@@ -1,8 +1,8 @@
 ; RUN: opt -S -globalopt < %s | FileCheck %s
 
 @_Z17in_custom_section = internal global i8 42, section "CUSTOM"
- at in_custom_section = protected dllexport alias internal i8* @_Z17in_custom_section
+ at in_custom_section = dllexport alias internal i8* @_Z17in_custom_section
 
-; CHECK: @in_custom_section = internal protected dllexport global i8 42, section "CUSTOM"
+; CHECK: @in_custom_section = internal dllexport global i8 42, section "CUSTOM"
 
 @llvm.used = appending global [1 x i8*] [i8* @in_custom_section], section "llvm.metadata"

Modified: llvm/trunk/test/Transforms/GlobalOpt/atexit.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GlobalOpt/atexit.ll?rev=208263&r1=208262&r2=208263&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/GlobalOpt/atexit.ll (original)
+++ llvm/trunk/test/Transforms/GlobalOpt/atexit.ll Wed May  7 17:57:20 2014
@@ -1,6 +1,6 @@
 ; RUN: opt < %s -globalopt -S | FileCheck %s
 
 ; CHECK: ModuleID
-define internal hidden i32 @__cxa_atexit(void (i8*)* nocapture %func, i8* nocapture %arg, i8* nocapture %dso_handle) nounwind readnone optsize noimplicitfloat {
+define internal i32 @__cxa_atexit(void (i8*)* nocapture %func, i8* nocapture %arg, i8* nocapture %dso_handle) nounwind readnone optsize noimplicitfloat {
   unreachable
 }

Modified: llvm/trunk/test/Transforms/MergeFunc/crash.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/MergeFunc/crash.ll?rev=208263&r1=208262&r2=208263&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/MergeFunc/crash.ll (original)
+++ llvm/trunk/test/Transforms/MergeFunc/crash.ll Wed May  7 17:57:20 2014
@@ -8,9 +8,9 @@ target triple = "i386-pc-linux-gnu"
 %.qux.2585 = type { i32, i32, i8* }
 
 @g2 = external unnamed_addr constant [9 x i8], align 1
- at g3 = internal hidden unnamed_addr constant [1 x i8*] [i8* bitcast (i8* (%.qux.2585*)* @func35 to i8*)]
+ at g3 = internal unnamed_addr constant [1 x i8*] [i8* bitcast (i8* (%.qux.2585*)* @func35 to i8*)]
 
-define internal hidden i32 @func1(i32* %ptr, { i32, i32 }* nocapture %method) align 2 {
+define internal i32 @func1(i32* %ptr, { i32, i32 }* nocapture %method) align 2 {
   br label %1
 
 ; <label>:1
@@ -20,26 +20,26 @@ define internal hidden i32 @func1(i32* %
   ret i32 undef
 }
 
-define internal hidden i32 @func10(%.qux.2496* nocapture %this) align 2 {
+define internal i32 @func10(%.qux.2496* nocapture %this) align 2 {
   %1 = getelementptr inbounds %.qux.2496* %this, i32 0, i32 1, i32 1
   %2 = load i32* %1, align 4
   ret i32 %2
 }
 
-define internal hidden i8* @func29(i32* nocapture %this) align 2 {
+define internal i8* @func29(i32* nocapture %this) align 2 {
   ret i8* getelementptr inbounds ([9 x i8]* @g2, i32 0, i32 0)
 }
 
-define internal hidden i32* @func33(%.qux.2585* nocapture %this) align 2 {
+define internal i32* @func33(%.qux.2585* nocapture %this) align 2 {
   ret i32* undef
 }
 
-define internal hidden i32* @func34(%.qux.2585* nocapture %this) align 2 {
+define internal i32* @func34(%.qux.2585* nocapture %this) align 2 {
   %1 = getelementptr inbounds %.qux.2585* %this, i32 0
   ret i32* undef
 }
 
-define internal hidden i8* @func35(%.qux.2585* nocapture %this) align 2 {
+define internal i8* @func35(%.qux.2585* nocapture %this) align 2 {
   %1 = getelementptr inbounds %.qux.2585* %this, i32 0, i32 2
   %2 = load i8** %1, align 4
   ret i8* %2

Modified: llvm/trunk/test/Transforms/MergeFunc/inttoptr-address-space.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/MergeFunc/inttoptr-address-space.ll?rev=208263&r1=208262&r2=208263&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/MergeFunc/inttoptr-address-space.ll (original)
+++ llvm/trunk/test/Transforms/MergeFunc/inttoptr-address-space.ll Wed May  7 17:57:20 2014
@@ -6,10 +6,10 @@ target datalayout = "e-p:32:32:32-p1:16:
 %.qux.2585 = type { i32, i32, i8* }
 
 @g2 = external addrspace(1) constant [9 x i8], align 1
- at g3 = internal hidden unnamed_addr constant [1 x i8*] [i8* bitcast (i8* (%.qux.2585 addrspace(1)*)* @func35 to i8*)]
+ at g3 = internal unnamed_addr constant [1 x i8*] [i8* bitcast (i8* (%.qux.2585 addrspace(1)*)* @func35 to i8*)]
 
 
-define internal hidden i32 @func10(%.qux.2496 addrspace(1)* nocapture %this) align 2 {
+define internal i32 @func10(%.qux.2496 addrspace(1)* nocapture %this) align 2 {
 bb:
   %tmp = getelementptr inbounds %.qux.2496 addrspace(1)* %this, i32 0, i32 1, i32 1
   %tmp1 = load i32 addrspace(1)* %tmp, align 4
@@ -17,7 +17,7 @@ bb:
 }
 
 ; Check for pointer bitwidth equal assertion failure
-define internal hidden i8* @func35(%.qux.2585 addrspace(1)* nocapture %this) align 2 {
+define internal i8* @func35(%.qux.2585 addrspace(1)* nocapture %this) align 2 {
 bb:
 ; CHECK-LABEL: @func35(
 ; CHECK: %[[V2:.+]] = bitcast %.qux.2585 addrspace(1)* %{{.*}} to %.qux.2496 addrspace(1)*

Modified: llvm/trunk/test/Transforms/MergeFunc/inttoptr.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/MergeFunc/inttoptr.ll?rev=208263&r1=208262&r2=208263&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/MergeFunc/inttoptr.ll (original)
+++ llvm/trunk/test/Transforms/MergeFunc/inttoptr.ll Wed May  7 17:57:20 2014
@@ -8,9 +8,9 @@ target triple = "i386-pc-linux-gnu"
 %.qux.2585 = type { i32, i32, i8* }
 
 @g2 = external unnamed_addr constant [9 x i8], align 1
- at g3 = internal hidden unnamed_addr constant [1 x i8*] [i8* bitcast (i8* (%.qux.2585*)* @func35 to i8*)]
+ at g3 = internal unnamed_addr constant [1 x i8*] [i8* bitcast (i8* (%.qux.2585*)* @func35 to i8*)]
 
-define internal hidden i32 @func1(i32* %ptr, { i32, i32 }* nocapture %method) align 2 {
+define internal i32 @func1(i32* %ptr, { i32, i32 }* nocapture %method) align 2 {
 bb:
   br label %bb1
 
@@ -21,30 +21,30 @@ bb2:
   ret i32 undef
 }
 
-define internal hidden i32 @func10(%.qux.2496* nocapture %this) align 2 {
+define internal i32 @func10(%.qux.2496* nocapture %this) align 2 {
 bb:
   %tmp = getelementptr inbounds %.qux.2496* %this, i32 0, i32 1, i32 1
   %tmp1 = load i32* %tmp, align 4
   ret i32 %tmp1
 }
 
-define internal hidden i8* @func29(i32* nocapture %this) align 2 {
+define internal i8* @func29(i32* nocapture %this) align 2 {
 bb:
   ret i8* getelementptr inbounds ([9 x i8]* @g2, i32 0, i32 0)
 }
 
-define internal hidden i32* @func33(%.qux.2585* nocapture %this) align 2 {
+define internal i32* @func33(%.qux.2585* nocapture %this) align 2 {
 bb:
   ret i32* undef
 }
 
-define internal hidden i32* @func34(%.qux.2585* nocapture %this) align 2 {
+define internal i32* @func34(%.qux.2585* nocapture %this) align 2 {
 bb:
   %tmp = getelementptr inbounds %.qux.2585* %this, i32 0
   ret i32* undef
 }
 
-define internal hidden i8* @func35(%.qux.2585* nocapture %this) align 2 {
+define internal i8* @func35(%.qux.2585* nocapture %this) align 2 {
 bb:
 ; CHECK-LABEL: @func35(
 ; CHECK: %[[V2:.+]] = bitcast %.qux.2585* %{{.*}} to %.qux.2496*





More information about the llvm-commits mailing list