mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-20 03:55:48 -04:00

Embedded bitcode should have private linkage instead of appending or external. Otherwise, it will cause link failure due to duplicated symbols. Also add llvm.embedded.module and llvm.cmdline to llvm.compiler.used so they don't get optimized out. rdar://problem/21555860 llvm-svn: 269679
60 lines
2.3 KiB
LLVM
60 lines
2.3 KiB
LLVM
; REQUIRES: arm-registered-target
|
|
; REQUIRES: aarch64-registered-target
|
|
; check .ll input
|
|
; RUN: %clang_cc1 -triple thumbv7-apple-ios8.0.0 -emit-llvm \
|
|
; RUN: -fembed-bitcode=all -x ir %s -o - \
|
|
; RUN: | FileCheck %s
|
|
; RUN: %clang_cc1 -triple thumbv7-apple-ios8.0.0 -emit-llvm \
|
|
; RUN: -fembed-bitcode=marker -x ir %s -o - \
|
|
; RUN: | FileCheck %s -check-prefix=CHECK-MARKER
|
|
; RUN: %clang_cc1 -triple aarch64-unknown-linux-gnueabi -emit-llvm \
|
|
; RUN: -fembed-bitcode=all -x ir %s -o - \
|
|
; RUN: | FileCheck %s -check-prefix=CHECK-ELF
|
|
|
|
; check .bc input
|
|
; RUN: %clang_cc1 -triple thumbv7-apple-ios8.0.0 -emit-llvm-bc \
|
|
; RUN: -x ir %s -o %t.bc
|
|
; RUN: %clang_cc1 -triple thumbv7-apple-ios8.0.0 -emit-llvm \
|
|
; RUN: -fembed-bitcode=all -x ir %t.bc -o - \
|
|
; RUN: | FileCheck %s
|
|
; RUN: %clang_cc1 -triple thumbv7-apple-ios8.0.0 -emit-llvm \
|
|
; RUN: -fembed-bitcode=bitcode -x ir %t.bc -o - \
|
|
; RUN: | FileCheck %s -check-prefix=CHECK-ONLY-BITCODE
|
|
; RUN: %clang_cc1 -triple thumbv7-apple-ios8.0.0 -emit-llvm \
|
|
; RUN: -fembed-bitcode=marker -x ir %t.bc -o - \
|
|
; RUN: | FileCheck %s -check-prefix=CHECK-MARKER
|
|
|
|
; run through -fembed-bitcode twice and make sure it doesn't crash
|
|
; RUN: %clang_cc1 -triple thumbv7-apple-ios8.0.0 -emit-llvm-bc \
|
|
; RUN: -fembed-bitcode=all -x ir %s -o - \
|
|
; RUN: | %clang_cc1 -triple thumbv7-apple-ios8.0.0 -emit-llvm \
|
|
; RUN: -fembed-bitcode=all -x ir - -o /dev/null
|
|
|
|
; check the magic number of bitcode at the beginning of the string
|
|
; CHECK: @llvm.embedded.module = private constant
|
|
; CHECK: c"\DE\C0\17\0B
|
|
; CHECK: section "__LLVM,__bitcode"
|
|
; CHECK: @llvm.cmdline = private constant
|
|
; CHECK: section "__LLVM,__cmdline"
|
|
|
|
; CHECK-ELF: @llvm.embedded.module
|
|
; CHECK-ELF: section ".llvmbc"
|
|
; CHECK-ELF: @llvm.cmdline
|
|
; CHECK-ELF: section ".llvmcmd"
|
|
|
|
; CHECK-ONLY-BITCODE: @llvm.embedded.module = private constant
|
|
; CHECK-ONLY-BITCODE: c"\DE\C0\17\0B
|
|
; CHECK-ONLY-BITCODE: section "__LLVM,__bitcode"
|
|
; CHECK-ONLY-BITCODE-NOT: @llvm.cmdline = private constant
|
|
; CHECK-ONLY-BITCODE-NOT: section "__LLVM,__cmdline"
|
|
|
|
; CHECK-MARKER: @llvm.embedded.module
|
|
; CHECK-MARKER: constant [0 x i8] zeroinitializer
|
|
; CHECK-MARKER: section "__LLVM,__bitcode"
|
|
; CHECK-MARKER: @llvm.cmdline
|
|
; CHECK-MARKER: section "__LLVM,__cmdline"
|
|
|
|
define i32 @f0() {
|
|
ret i32 0
|
|
}
|