mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-23 15:29:51 +00:00
4799cdb81e
The fix is simply to use CurI instead of I when handling aliases to avoid accessing a invalid iterator. original message: Convert linkonce* to weak* instead of strong. Also refactor the logic into a helper function. This is an important improve on mingw where the linker complains about mixed weak and strong symbols. Converting to weak ensures that the symbol is not dropped, but keeps in a comdat, making the linker happy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195477 91177308-0d34-0410-b5e6-96231b3b80d8
25 lines
547 B
LLVM
25 lines
547 B
LLVM
; RUN: llvm-extract -func foo -S < %s | FileCheck %s
|
|
; RUN: llvm-extract -delete -func foo -S < %s | FileCheck --check-prefix=DELETE %s
|
|
|
|
; Test that linkonce definitions are mapped to weak so that they are not
|
|
; dropped.
|
|
|
|
; CHECK: @bar = external global i32
|
|
; CHECK: define weak i32* @foo() {
|
|
; CHECK-NEXT: ret i32* @bar
|
|
; CHECK-NEXT: }
|
|
|
|
; DELETE: @bar = weak global i32 42
|
|
; DELETE: declare i32* @foo()
|
|
|
|
@bar = linkonce global i32 42
|
|
|
|
define linkonce i32* @foo() {
|
|
ret i32* @bar
|
|
}
|
|
|
|
define void @g() {
|
|
call i32* @foo()
|
|
ret void
|
|
}
|