Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix conflict value for metadata "Objective-C Garbage Collection" in t…
…he mix of swift and Objective-C bitcode Summary: The change is to fix conflict value for metadata "Objective-C Garbage Collection" in the mix of swift and Objective-C bitcode. The purpose is to provide the support of LTO for swift and Objective-C mixed project. Reviewers: rjmccall, ahatanak, steven_wu Reviewed By: rjmccall, steven_wu Subscribers: manmanren, mehdi_amini, hiraditya, dexonsmith, llvm-commits, jinlin Tags: #llvm Differential Revision: https://reviews.llvm.org/D71219
- Loading branch information
1 parent
d2f3e5f
commit a0cacb6
Showing
9 changed files
with
223 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
; RUN: llvm-as %s -o - | llvm-dis - | FileCheck %s | ||
|
||
; The IRUpgrader turns a i32 type "Objective-C Garbage Collection" | ||
; into i8 value. | ||
|
||
target triple = "x86_64-apple-macosx10.15.0" | ||
|
||
!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6, !7} | ||
!llvm.ident = !{!8} | ||
|
||
!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 10, i32 15]} | ||
!1 = !{i32 1, !"Objective-C Version", i32 2} | ||
!2 = !{i32 1, !"Objective-C Image Info Version", i32 0} | ||
!3 = !{i32 1, !"Objective-C Image Info Section", !"__DATA,__objc_imageinfo,regular,no_dead_strip"} | ||
!4 = !{i32 1, !"Objective-C Garbage Collection", i32 0} | ||
!5 = !{i32 1, !"Objective-C Class Properties", i32 64} | ||
!6 = !{i32 1, !"wchar_size", i32 4} | ||
!7 = !{i32 7, !"PIC Level", i32 2} | ||
!8 = !{!"Apple clang version 11.0.0 (clang-1100.0.33.12)"} | ||
|
||
; CHECK: !{{[0-9]+}} = !{i32 1, !"Objective-C Garbage Collection", i8 0} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
; RUN: llvm-as %s -o - | llvm-dis - | FileCheck %s | ||
|
||
; The IRUpgrader turns a i32 type "Objective-C Garbage Collection" | ||
; into i8 value. If the higher bits are set, it adds the module flag for swift info. | ||
|
||
target triple = "x86_64-apple-macosx10.15.0" | ||
|
||
@__swift_reflection_version = linkonce_odr hidden constant i16 3 | ||
@llvm.used = appending global [1 x i8*] [i8* bitcast (i16* @__swift_reflection_version to i8*)], section "llvm.metadata", align 8 | ||
|
||
define i32 @main(i32 %0, i8** %1) #0 { | ||
%3 = bitcast i8** %1 to i8* | ||
ret i32 0 | ||
} | ||
|
||
attributes #0 = { "frame-pointer"="all" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" } | ||
|
||
!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6, !7, !8} | ||
!swift.module.flags = !{!9} | ||
!llvm.linker.options = !{!10, !11, !12} | ||
!llvm.asan.globals = !{!13} | ||
|
||
!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 10, i32 15]} | ||
!1 = !{i32 1, !"Objective-C Version", i32 2} | ||
!2 = !{i32 1, !"Objective-C Image Info Version", i32 0} | ||
!3 = !{i32 1, !"Objective-C Image Info Section", !"__DATA,__objc_imageinfo,regular,no_dead_strip"} | ||
!4 = !{i32 4, !"Objective-C Garbage Collection", i32 83953408} | ||
!5 = !{i32 1, !"Objective-C Class Properties", i32 64} | ||
!6 = !{i32 1, !"wchar_size", i32 4} | ||
!7 = !{i32 7, !"PIC Level", i32 2} | ||
!8 = !{i32 1, !"Swift Version", i32 7} | ||
!9 = !{!"standard-library", i1 false} | ||
!10 = !{!"-lswiftSwiftOnoneSupport"} | ||
!11 = !{!"-lswiftCore"} | ||
!12 = !{!"-lobjc"} | ||
!13 = !{[1 x i8*]* @llvm.used, null, null, i1 false, i1 true} | ||
|
||
; CHECK: !{{[0-9]+}} = !{i32 1, !"Objective-C Garbage Collection", i8 0} | ||
; CHECK: !{{[0-9]+}} = !{i32 1, !"Swift ABI Version", i32 7} | ||
; CHECK: !{{[0-9]+}} = !{i32 1, !"Swift Major Version", i8 5} | ||
; CHECK: !{{[0-9]+}} = !{i32 1, !"Swift Minor Version", i8 1} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
target triple = "x86_64-apple-macosx10.15.0" | ||
|
||
!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6, !7} | ||
!llvm.ident = !{!8} | ||
|
||
!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 10, i32 15]} | ||
!1 = !{i32 1, !"Objective-C Version", i32 2} | ||
!2 = !{i32 1, !"Objective-C Image Info Version", i32 0} | ||
!3 = !{i32 1, !"Objective-C Image Info Section", !"__DATA,__objc_imageinfo,regular,no_dead_strip"} | ||
!4 = !{i32 1, !"Objective-C Garbage Collection", i32 0} | ||
!5 = !{i32 1, !"Objective-C Class Properties", i32 64} | ||
!6 = !{i32 1, !"wchar_size", i32 4} | ||
!7 = !{i32 7, !"PIC Level", i32 2} | ||
!8 = !{!"Apple clang version 11.0.0 (clang-1100.0.33.12)"} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
; RUN: llvm-link %s %p/Inputs/empty-objc.ll -S | FileCheck %s | ||
|
||
; It tests whether Swift bitcode can be successfully linked with Objecitive-C bitcode. | ||
; During the process, the IRUpgrader turns a i32 type "Objective-C Garbage Collection" | ||
; into i8 value. If the higher bits are set, it adds the module flag for swift info. | ||
|
||
target triple = "x86_64-apple-macosx10.15.0" | ||
|
||
@__swift_reflection_version = linkonce_odr hidden constant i16 3 | ||
@llvm.used = appending global [1 x i8*] [i8* bitcast (i16* @__swift_reflection_version to i8*)], section "llvm.metadata", align 8 | ||
|
||
define i32 @main(i32 %0, i8** %1) #0 { | ||
%3 = bitcast i8** %1 to i8* | ||
ret i32 0 | ||
} | ||
|
||
attributes #0 = { "frame-pointer"="all" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" } | ||
|
||
!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6, !7, !8} | ||
!swift.module.flags = !{!9} | ||
!llvm.linker.options = !{!10, !11, !12} | ||
!llvm.asan.globals = !{!13} | ||
|
||
!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 10, i32 15]} | ||
!1 = !{i32 1, !"Objective-C Version", i32 2} | ||
!2 = !{i32 1, !"Objective-C Image Info Version", i32 0} | ||
!3 = !{i32 1, !"Objective-C Image Info Section", !"__DATA,__objc_imageinfo,regular,no_dead_strip"} | ||
!4 = !{i32 4, !"Objective-C Garbage Collection", i32 83953408} | ||
!5 = !{i32 1, !"Objective-C Class Properties", i32 64} | ||
!6 = !{i32 1, !"wchar_size", i32 4} | ||
!7 = !{i32 7, !"PIC Level", i32 2} | ||
!8 = !{i32 1, !"Swift Version", i32 7} | ||
!9 = !{!"standard-library", i1 false} | ||
!10 = !{!"-lswiftSwiftOnoneSupport"} | ||
!11 = !{!"-lswiftCore"} | ||
!12 = !{!"-lobjc"} | ||
!13 = !{[1 x i8*]* @llvm.used, null, null, i1 false, i1 true} | ||
|
||
; CHECK: !{{[0-9]+}} = !{i32 1, !"Objective-C Garbage Collection", i8 0} | ||
; CHECK: !{{[0-9]+}} = !{i32 1, !"Swift ABI Version", i32 7} | ||
; CHECK: !{{[0-9]+}} = !{i32 1, !"Swift Major Version", i8 5} | ||
; CHECK: !{{[0-9]+}} = !{i32 1, !"Swift Minor Version", i8 1} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
; RUN: llc -mtriple x86_64-apple-ios -filetype asm -o - %s | FileCheck %s | ||
; REQUIRES: x86-registered-target | ||
|
||
; It checks whether the backend generates IMAGE_INFO from Swift ABI version + major + minor + "Objective-C Garbage Collection". | ||
|
||
target triple = "x86_64-apple-macosx10.15.0" | ||
|
||
@llvm.used = appending global [1 x i8*] [i8* bitcast (i16* @__swift_reflection_version to i8*)], section "llvm.metadata", align 8 | ||
@__swift_reflection_version = linkonce_odr hidden constant i16 3 | ||
|
||
define i32 @main(i32 %0, i8** %1) #0 { | ||
%3 = bitcast i8** %1 to i8* | ||
ret i32 0 | ||
} | ||
|
||
attributes #0 = { "frame-pointer"="all" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" } | ||
|
||
!swift.module.flags = !{!0} | ||
!llvm.linker.options = !{!1, !2, !3} | ||
!llvm.asan.globals = !{!4} | ||
!llvm.module.flags = !{!5, !6, !7, !8, !9, !10, !11, !12, !13, !14, !15, !16} | ||
!llvm.ident = !{!17} | ||
|
||
!0 = !{!"standard-library", i1 false} | ||
!1 = !{!"-lswiftSwiftOnoneSupport"} | ||
!2 = !{!"-lswiftCore"} | ||
!3 = !{!"-lobjc"} | ||
!4 = !{[1 x i8*]* @llvm.used, null, null, i1 false, i1 true} | ||
!5 = !{i32 2, !"SDK Version", [2 x i32] [i32 10, i32 15]} | ||
!6 = !{i32 1, !"Objective-C Version", i32 2} | ||
!7 = !{i32 1, !"Objective-C Image Info Version", i32 0} | ||
!8 = !{i32 1, !"Objective-C Image Info Section", !"__DATA,__objc_imageinfo,regular,no_dead_strip"} | ||
!9 = !{i32 1, !"Objective-C Garbage Collection", i8 0} | ||
!10 = !{i32 1, !"Objective-C Class Properties", i32 64} | ||
!11 = !{i32 1, !"wchar_size", i32 4} | ||
!12 = !{i32 7, !"PIC Level", i32 2} | ||
!13 = !{i32 1, !"Swift Version", i32 7} | ||
!14 = !{i32 1, !"Swift ABI Version", i32 7} | ||
!15 = !{i32 1, !"Swift Major Version", i8 5} | ||
!16 = !{i32 1, !"Swift Minor Version", i8 1} | ||
!17 = !{!"Apple clang version 11.0.0 (clang-1100.0.33.12)"} | ||
|
||
; CHECK: .section __DATA,__objc_imageinfo,regular,no_dead_strip | ||
; CHECK: L_OBJC_IMAGE_INFO: | ||
; CHECK: .long 0 | ||
; CHECK: .long 83953472 |