xref: /aosp_15_r20/external/clang/test/CodeGen/link-bitcode-file.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -triple i386-pc-linux-gnu -DBITCODE -emit-llvm-bc -o %t.bc %s
2*67e74705SXin Li // RUN: %clang_cc1 -triple i386-pc-linux-gnu -DBITCODE2 -emit-llvm-bc -o %t-2.bc %s
3*67e74705SXin Li // RUN: %clang_cc1 -triple i386-pc-linux-gnu -mlink-bitcode-file %t.bc \
4*67e74705SXin Li // RUN:     -O3 -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-NO-BC %s
5*67e74705SXin Li // RUN: %clang_cc1 -triple i386-pc-linux-gnu -O3 -emit-llvm -o - \
6*67e74705SXin Li // RUN:     -mlink-bitcode-file %t.bc -mlink-bitcode-file %t-2.bc %s \
7*67e74705SXin Li // RUN:     | FileCheck -check-prefix=CHECK-NO-BC -check-prefix=CHECK-NO-BC2 %s
8*67e74705SXin Li // RUN: not %clang_cc1 -triple i386-pc-linux-gnu -DBITCODE -O3 -emit-llvm -o - \
9*67e74705SXin Li // RUN:     -mlink-bitcode-file %t.bc %s 2>&1 | FileCheck -check-prefix=CHECK-BC %s
10*67e74705SXin Li // Make sure we deal with failure to load the file.
11*67e74705SXin Li // RUN: not %clang_cc1 -triple i386-pc-linux-gnu -mlink-bitcode-file no-such-file.bc \
12*67e74705SXin Li // RUN:    -emit-llvm -o - %s 2>&1 | FileCheck -check-prefix=CHECK-NO-FILE %s
13*67e74705SXin Li 
14*67e74705SXin Li int f(void);
15*67e74705SXin Li 
16*67e74705SXin Li #ifdef BITCODE
17*67e74705SXin Li 
18*67e74705SXin Li extern int f2(void);
19*67e74705SXin Li // CHECK-BC: fatal error: cannot link module {{.*}}'f': symbol multiply defined
f(void)20*67e74705SXin Li int f(void) {
21*67e74705SXin Li   f2();
22*67e74705SXin Li   return 42;
23*67e74705SXin Li }
24*67e74705SXin Li 
25*67e74705SXin Li #elif BITCODE2
f2(void)26*67e74705SXin Li int f2(void) { return 43; }
27*67e74705SXin Li #else
28*67e74705SXin Li 
29*67e74705SXin Li // CHECK-NO-BC-LABEL: define i32 @g
30*67e74705SXin Li // CHECK-NO-BC: ret i32 42
g(void)31*67e74705SXin Li int g(void) {
32*67e74705SXin Li   return f();
33*67e74705SXin Li }
34*67e74705SXin Li 
35*67e74705SXin Li // CHECK-NO-BC-LABEL: define i32 @f
36*67e74705SXin Li // CHECK-NO-BC2-LABEL: define i32 @f2
37*67e74705SXin Li 
38*67e74705SXin Li #endif
39*67e74705SXin Li 
40*67e74705SXin Li // CHECK-NO-FILE: fatal error: cannot open file 'no-such-file.bc'
41