mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-04 21:31:03 +00:00
LTO: -internalize sets visibility to default
Visibility is meaningless when the linkage is local. Change `-internalize` to reset the visibility to `default`. <rdar://problem/16141113> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207979 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c6e42b5590
commit
bbd9c21e07
@ -159,6 +159,7 @@ bool InternalizePass::runOnModule(Module &M) {
|
||||
if (!shouldInternalize(*I, ExternalNames))
|
||||
continue;
|
||||
|
||||
I->setVisibility(GlobalValue::DefaultVisibility);
|
||||
I->setLinkage(GlobalValue::InternalLinkage);
|
||||
|
||||
if (ExternalNode)
|
||||
@ -195,6 +196,7 @@ bool InternalizePass::runOnModule(Module &M) {
|
||||
if (!shouldInternalize(*I, ExternalNames))
|
||||
continue;
|
||||
|
||||
I->setVisibility(GlobalValue::DefaultVisibility);
|
||||
I->setLinkage(GlobalValue::InternalLinkage);
|
||||
Changed = true;
|
||||
++NumGlobals;
|
||||
@ -207,6 +209,7 @@ bool InternalizePass::runOnModule(Module &M) {
|
||||
if (!shouldInternalize(*I, ExternalNames))
|
||||
continue;
|
||||
|
||||
I->setVisibility(GlobalValue::DefaultVisibility);
|
||||
I->setLinkage(GlobalValue::InternalLinkage);
|
||||
Changed = true;
|
||||
++NumAliases;
|
||||
|
25
test/Transforms/Internalize/local-visibility.ll
Normal file
25
test/Transforms/Internalize/local-visibility.ll
Normal file
@ -0,0 +1,25 @@
|
||||
; RUN: opt < %s -internalize -S | FileCheck %s
|
||||
; Internalized symbols should have default visibility.
|
||||
|
||||
; CHECK: @global = global i32 0
|
||||
@global = global i32 0
|
||||
@llvm.used = appending global [1 x i32*] [i32* @global]
|
||||
|
||||
; CHECK: @hidden.variable = internal global i32 0
|
||||
@hidden.variable = hidden global i32 0
|
||||
; CHECK: @protected.variable = internal global i32 0
|
||||
@protected.variable = protected global i32 0
|
||||
|
||||
; CHECK: @hidden.alias = alias internal i32* @global
|
||||
@hidden.alias = hidden alias i32* @global
|
||||
; CHECK: @protected.alias = alias internal i32* @global
|
||||
@protected.alias = protected alias i32* @global
|
||||
|
||||
; CHECK: define internal void @hidden.function() {
|
||||
define hidden void @hidden.function() {
|
||||
ret void
|
||||
}
|
||||
; CHECK: define internal void @protected.function() {
|
||||
define protected void @protected.function() {
|
||||
ret void
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user