; REQUIRES: x86
; RUN: rm -rf %t; split-file %s %t

;; Split-LTO bitcode files can have the same symbol (typeinfo) twice in the
;; symbol table: First undefined in the main file, then defined in the index
;; file.
;; When used in --start-lib / --end-lib, ld64.lld creates lazy symbols
;; for all non-undefined symbols in the bitcode file.
;; In vtable.o below, the typeinfo __ZTI1S is present once as undefined and
;; once as defined. The defined version is added as a added as a LazyObject
;; symbol.
;; When vtable.o gets loaded due to the __ZN1SC1Ev ref from vtable_use.o,
;; the first __ZTI1S (undefined) used to cause vtable.o to be extracted
;; a second time, which used to cause an assert.
;; See PR59162 for details.

; RUN: opt --thinlto-bc --thinlto-split-lto-unit -o %t/vtable.o %t/vtable.ll
; RUN: opt --thinlto-bc --thinlto-split-lto-unit -o %t/vtable_use.o %t/vtable_use.ll

; RUN: %lld -lc++ --start-lib %t/vtable.o --end-lib %t/vtable_use.o -o /dev/null

;; Bitcode files created by:
; % cat vtable.cc
; struct S {
;   S();
;   virtual void f();
; };
; S::S() {}
; void S::f() {}

; % cat vtable_use.cc
; struct S {
;   S();
;   virtual void f();
; };
; int main() { S s; }

; % clang -c vtable_use.cc vtable.cc -emit-llvm -S -fno-exceptions -arch x86_64 -mmacos-version-min=11 -O1

; ...and then manually adding `, !type !8, type !9` based on `clang -S -emit-llvm -flto=thin` output,
; because splitAndWriteThinLTOBitcode() in ThinLTOBitcodeWriter.cpp only splits bitcode
; if type annotations are present. While at it, also removed unnecessary metadata.
; (NB: The first comment creates vtable.ll while the latter generates vtable.s! vtable.s
; contains a few things opt complains about, so we can't use the output of that directly.)

;--- vtable.ll
; ModuleID = 'vtable.cc'
source_filename = "vtable.cc"
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx11.0.0"

@_ZTV1S = unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1S, ptr @_ZN1S1fEv] }, align 8
@_ZTVN10__cxxabiv117__class_type_infoE = external global ptr
@_ZTS1S = constant [3 x i8] c"1S\00", align 1
@_ZTI1S = constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1S }, align 8, !type !0, !type !1

; Function Attrs: mustprogress nofree norecurse nosync nounwind ssp willreturn memory(argmem: write) uwtable
define void @_ZN1SC2Ev(ptr nocapture noundef nonnull writeonly align 8 dereferenceable(8) %this) unnamed_addr align 2 {
entry:
  store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1S, i64 0, i32 0, i64 2), ptr %this, align 8
  ret void
}

; Function Attrs: mustprogress nofree norecurse nosync nounwind ssp willreturn memory(argmem: write) uwtable
define void @_ZN1SC1Ev(ptr nocapture noundef nonnull writeonly align 8 dereferenceable(8) %this) unnamed_addr align 2 {
entry:
  store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1S, i64 0, i32 0, i64 2), ptr %this, align 8
  ret void
}

; Function Attrs: mustprogress nofree norecurse nosync nounwind ssp willreturn memory(none) uwtable
define void @_ZN1S1fEv(ptr nocapture nonnull align 8 %this) unnamed_addr align 2 {
entry:
  ret void
}

!0 = !{i64 16, !"_ZTS1S"}
!1 = !{i64 16, !"_ZTSM1SFvvE.virtual"}

;--- vtable_use.ll
; ModuleID = 'vtable_use.cc'
source_filename = "vtable_use.cc"
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx11.0.0"

%struct.S = type { ptr }

; Function Attrs: mustprogress noinline norecurse nounwind optnone ssp uwtable
define noundef i32 @main() {
entry:
  %s = alloca %struct.S, align 8
  call void @_ZN1SC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %s)
  ret i32 0
}

declare void @_ZN1SC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr
