mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 20:16:05 +00:00

With RTTI, a C++ class type info will get two entries in the summary index: a gv and a typeidCompatibleVTable, both sharing the same GUID. Ensure we use different namespaces to generate the entry slot numbers for these two different summary entries.
33 lines
1.4 KiB
LLVM
33 lines
1.4 KiB
LLVM
;; Test to ensure that the summary is correctly printed when there is both a
|
|
;; global variable summary and a vtable typeid summary entry for the same
|
|
;; symbol.
|
|
|
|
; RUN: opt %s -S -module-summary | FileCheck %s
|
|
;; Make sure it round trips correctly.
|
|
; RUN: opt %s -S -module-summary -o - | llvm-as -o - | llvm-dis -o - | FileCheck %s
|
|
|
|
;; These summary entries should get numbered differently.
|
|
; CHECK: ^2 = gv: (name: "_ZTS1A"
|
|
; CHECK: ^6 = typeidCompatibleVTable: (name: "_ZTS1A"
|
|
|
|
; ModuleID = 'thinlto-vtable-summary2.cc'
|
|
source_filename = "thinlto-vtable-summary2.cc"
|
|
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
@_ZTV1A = dso_local unnamed_addr constant { [3 x ptr] } { [3 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A3fooEv] }, align 8, !type !0, !type !1
|
|
@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr]
|
|
@_ZTS1A = dso_local constant [3 x i8] c"1A\00", align 1
|
|
@_ZTI1A = dso_local constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, align 8
|
|
|
|
define dso_local noundef i32 @_ZN1A3fooEv(ptr noundef nonnull align 8 dereferenceable(8) %this) unnamed_addr align 2 {
|
|
entry:
|
|
%this.addr = alloca ptr, align 8
|
|
store ptr %this, ptr %this.addr, align 8
|
|
%this1 = load ptr, ptr %this.addr, align 8
|
|
ret i32 1
|
|
}
|
|
|
|
!0 = !{i64 16, !"_ZTS1A"}
|
|
!1 = !{i64 16, !"_ZTSM1AFivE.virtual"}
|