mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-15 23:31:37 +00:00
2798b77586
As defined in LangRef, aliases do not have sections. However, LLVM's GlobalAlias class inherits from GlobalValue, which means we can read and set its section. We should probably ban that as a separate change, since it doesn't make much sense for an alias to have a section that differs from its aliasee. Fixes PR18757, where the section was being lost on the global in code from Clang like: extern "C" { __attribute__((used, section("CUSTOM"))) static int in_custom_section; } Reviewers: rafael.espindola Differential Revision: http://llvm-reviews.chandlerc.com/D2758 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201286 91177308-0d34-0410-b5e6-96231b3b80d8
36 lines
644 B
LLVM
36 lines
644 B
LLVM
; RUN: opt < %s -globalopt -S | FileCheck %s
|
|
|
|
@foo1 = alias void ()* @foo2
|
|
; CHECK: @foo1 = alias void ()* @foo2
|
|
|
|
@foo2 = alias weak void()* @bar1
|
|
; CHECK: @foo2 = alias weak void ()* @bar2
|
|
|
|
@bar1 = alias void ()* @bar2
|
|
; CHECK: @bar1 = alias void ()* @bar2
|
|
|
|
declare void @bar2()
|
|
; CHECK: declare void @bar2()
|
|
|
|
define void @baz() {
|
|
entry:
|
|
call void @foo1()
|
|
; CHECK: call void @foo2()
|
|
|
|
call void @foo2()
|
|
; CHECK: call void @foo2()
|
|
|
|
call void @bar1()
|
|
; CHECK: call void @bar2()
|
|
|
|
ret void
|
|
}
|
|
|
|
@foo3 = alias void ()* @bar3
|
|
; CHECK-NOT: bar3
|
|
|
|
define internal void @bar3() {
|
|
ret void
|
|
}
|
|
;CHECK: define void @foo3
|