xref: /aosp_15_r20/external/llvm/test/SymbolRewriter/rewrite.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt -mtriple i686-win32 -rewrite-symbols -rewrite-map-file %p/rewrite.map \
2*9880d681SAndroid Build Coastguard Worker; RUN:   %s -o - | llvm-dis | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdeclare void @source_function()
5*9880d681SAndroid Build Coastguard Worker@source_variable = external global i32
6*9880d681SAndroid Build Coastguard Workerdeclare void @source_function_pattern_function()
7*9880d681SAndroid Build Coastguard Workerdeclare void @source_function_pattern_multiple_function_matches()
8*9880d681SAndroid Build Coastguard Worker@source_variable_pattern_variable = external global i32
9*9880d681SAndroid Build Coastguard Worker@source_variable_pattern_multiple_variable_matches = external global i32
10*9880d681SAndroid Build Coastguard Workerdeclare void @"\01naked_source_function"()
11*9880d681SAndroid Build Coastguard Workerdeclare void @"\01__imp_missing_global_leader_prefix"()
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerdeclare i32 @first_callee()
14*9880d681SAndroid Build Coastguard Workerdeclare i32 @second_callee()
15*9880d681SAndroid Build Coastguard Workerdefine i32 @caller() {
16*9880d681SAndroid Build Coastguard Worker  %rhs = call i32 @first_callee()
17*9880d681SAndroid Build Coastguard Worker  %lhs = call i32 @second_callee()
18*9880d681SAndroid Build Coastguard Worker  %res = add i32 %rhs, %lhs
19*9880d681SAndroid Build Coastguard Worker  ret i32 %res
20*9880d681SAndroid Build Coastguard Worker}
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Worker%struct.S = type { i8 }
23*9880d681SAndroid Build Coastguard Worker@_ZN1SC1Ev = alias void (%struct.S*), void (%struct.S*)* @_ZN1SC2Ev
24*9880d681SAndroid Build Coastguard Workerdefine void @_ZN1SC2Ev(%struct.S* %this) unnamed_addr align 2 {
25*9880d681SAndroid Build Coastguard Workerentry:
26*9880d681SAndroid Build Coastguard Worker  %this.addr = alloca %struct.S*, align 4
27*9880d681SAndroid Build Coastguard Worker  store %struct.S* %this, %struct.S** %this.addr, align 4
28*9880d681SAndroid Build Coastguard Worker  ret void
29*9880d681SAndroid Build Coastguard Worker}
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Worker$source_comdat_function = comdat any
32*9880d681SAndroid Build Coastguard Workerdefine dllexport void @source_comdat_function() comdat($source_comdat_function) {
33*9880d681SAndroid Build Coastguard Workerentry:
34*9880d681SAndroid Build Coastguard Worker  ret void
35*9880d681SAndroid Build Coastguard Worker}
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker$source_comdat_function_1 = comdat exactmatch
38*9880d681SAndroid Build Coastguard Workerdefine dllexport void @source_comdat_function_1() comdat($source_comdat_function_1) {
39*9880d681SAndroid Build Coastguard Workerentry:
40*9880d681SAndroid Build Coastguard Worker  ret void
41*9880d681SAndroid Build Coastguard Worker}
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Worker$source_comdat_variable = comdat largest
44*9880d681SAndroid Build Coastguard Worker@source_comdat_variable = global i32 32, comdat($source_comdat_variable)
45*9880d681SAndroid Build Coastguard Worker
46*9880d681SAndroid Build Coastguard Worker$source_comdat_variable_1 = comdat noduplicates
47*9880d681SAndroid Build Coastguard Worker@source_comdat_variable_1 = global i32 64, comdat($source_comdat_variable_1)
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Worker; CHECK: $target_comdat_function = comdat any
50*9880d681SAndroid Build Coastguard Worker; CHECK: $target_comdat_function_1 = comdat exactmatch
51*9880d681SAndroid Build Coastguard Worker; CHECK: $target_comdat_variable = comdat largest
52*9880d681SAndroid Build Coastguard Worker; CHECK: $target_comdat_variable_1 = comdat noduplicates
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Worker; CHECK: @target_variable = external global i32
55*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: @source_variable = external global i32
56*9880d681SAndroid Build Coastguard Worker; CHECK: @target_pattern_variable = external global i32
57*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: @source_pattern_variable = external global i32
58*9880d681SAndroid Build Coastguard Worker; CHECK: @target_pattern_multiple_variable_matches = external global i32
59*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: @source_pattern_multiple_variable_matches = external global i32
60*9880d681SAndroid Build Coastguard Worker; CHECK: @target_comdat_variable = global i32 32, comdat
61*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: @source_comdat_variable = global i32 32, comdat
62*9880d681SAndroid Build Coastguard Worker; CHECK: @target_comdat_variable_1 = global i32 64, comdat
63*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: @source_comdat_variable_1 = global i32 64, comdat
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Worker; CHECK: declare void @target_function()
66*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: declare void @source_function()
67*9880d681SAndroid Build Coastguard Worker; CHECK: declare void @target_pattern_function()
68*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: declare void @source_function_pattern_function()
69*9880d681SAndroid Build Coastguard Worker; CHECK: declare void @target_pattern_multiple_function_matches()
70*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: declare void @source_function_pattern_multiple_function_matches()
71*9880d681SAndroid Build Coastguard Worker; CHECK: declare void @naked_target_function()
72*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: declare void @"\01naked_source_function"()
73*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: declare void @"\01__imp__imported_function"()
74*9880d681SAndroid Build Coastguard Worker; CHECK: declare void @"\01__imp_missing_global_leader_prefix"()
75*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: declare void @"\01__imp_DO_NOT_REWRITE"()
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Worker; CHECK: declare i32 @renamed_callee()
78*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: declare i32 @first_callee()
79*9880d681SAndroid Build Coastguard Worker; CHECK: declare i32 @second_callee()
80*9880d681SAndroid Build Coastguard Worker; CHECK: define i32 @caller() {
81*9880d681SAndroid Build Coastguard Worker; CHECK:   %rhs = call i32 @renamed_callee()
82*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %rhs = call i32 @first_callee()
83*9880d681SAndroid Build Coastguard Worker; CHECK:   %lhs = call i32 @second_callee()
84*9880d681SAndroid Build Coastguard Worker; CHECK:   %res = add i32 %rhs, %lhs
85*9880d681SAndroid Build Coastguard Worker; CHECK:   ret i32 %res
86*9880d681SAndroid Build Coastguard Worker; CHECK: }
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Worker; CHECK: define dllexport void @target_comdat_function() comdat
89*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: define dllexport void @source_comdat_function() comdat
90*9880d681SAndroid Build Coastguard Worker; CHECK: define dllexport void @target_comdat_function_1() comdat
91*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: define dllexport void @source_comdat_function_1() comdat
92*9880d681SAndroid Build Coastguard Worker
93