; REQUIRES: x86
; RUN: split-file %s %t.dir
;; LTO
; RUN: llvm-as %t.dir/main.ll -o %t.main.bc
; RUN: llvm-as %t.dir/wrap.ll -o %t.wrap.bc
; RUN: llvm-as %t.dir/other.ll -o %t.other.bc
; RUN: rm -f %t.bc.lib
; RUN: llvm-ar rcs %t.bc.lib %t.wrap.bc %t.other.bc
;; ThinLTO
; RUN: opt -module-summary %t.dir/main.ll -o %t.main.thin
; RUN: opt -module-summary %t.dir/wrap.ll -o %t.wrap.thin
; RUN: opt -module-summary %t.dir/other.ll -o %t.other.thin
; RUN: rm -f %t.thin.lib
; RUN: llvm-ar rcs %t.thin.lib %t.wrap.thin %t.other.thin
;; Object
; RUN: llc %t.dir/main.ll -o %t.main.obj --filetype=obj
; RUN: llc %t.dir/wrap.ll -o %t.wrap.obj --filetype=obj
; RUN: llc %t.dir/other.ll -o %t.other.obj --filetype=obj
; RUN: rm -f %t.obj.lib
; RUN: llvm-ar rcs %t.obj.lib %t.wrap.obj %t.other.obj

;; This test verifies that -wrap works correctly for inter-module references to
;; the wrapped symbol, when LTO or ThinLTO is involved. It checks for various
;; combinations of bitcode and regular objects.

;; LTO + LTO
; RUN: lld-link -out:%t.bc-bc.exe %t.main.bc -libpath:%T %t.bc.lib -entry:entry -subsystem:console -wrap:bar -debug:symtab -lldsavetemps
; RUN: llvm-objdump -d %t.bc-bc.exe | FileCheck %s --check-prefixes=CHECK,JMP

;; LTO + Object
; RUN: lld-link -out:%t.bc-obj.exe %t.main.bc -libpath:%T %t.obj.lib -entry:entry -subsystem:console -wrap:bar -debug:symtab -lldsavetemps
; RUN: llvm-objdump -d %t.bc-obj.exe | FileCheck %s --check-prefixes=CHECK,JMP

;; Object + LTO
; RUN: lld-link -out:%t.obj-bc.exe %t.main.obj -libpath:%T %t.bc.lib -entry:entry -subsystem:console -wrap:bar -debug:symtab -lldsavetemps
; RUN: llvm-objdump -d %t.obj-bc.exe | FileCheck %s --check-prefixes=CHECK,CALL

;; ThinLTO + ThinLTO
; RUN: lld-link -out:%t.thin-thin.exe %t.main.thin -libpath:%T %t.thin.lib -entry:entry -subsystem:console -wrap:bar -debug:symtab -lldsavetemps
; RUN: llvm-objdump -d %t.thin-thin.exe | FileCheck %s --check-prefixes=CHECK,JMP

;; ThinLTO + Object
; RUN: lld-link -out:%t.thin-obj.exe %t.main.thin -libpath:%T %t.obj.lib -entry:entry -subsystem:console -wrap:bar -debug:symtab -lldsavetemps
; RUN: llvm-objdump -d %t.thin-obj.exe | FileCheck %s --check-prefixes=CHECK,JMP

;; Object + ThinLTO
; RUN: lld-link -out:%t.obj-thin.exe %t.main.obj -libpath:%T %t.thin.lib -entry:entry -subsystem:console -wrap:bar -debug:symtab -lldsavetemps
; RUN: llvm-objdump -d %t.obj-thin.exe | FileCheck %s --check-prefixes=CHECK,CALL

;; Make sure that calls in entry() are not eliminated and that bar is
;; routed to __wrap_bar.

; CHECK: <entry>:
; JMP: jmp {{.*}}<__wrap_bar>
; CALL: callq {{.*}}<__wrap_bar>

;--- main.ll
target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-w64-windows-gnu"

declare void @bar()

define void @entry() {
  call void @bar()
  ret void
}

;--- wrap.ll
target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-w64-windows-gnu"

declare void @other()

define void @__wrap_bar() {
  call void @other()
  ret void
}

;--- other.ll
target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-w64-windows-gnu"

define void @other() {
  ret void
}
