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