Test Failure: Transforms/GlobalDCE/virtual-functions-visibility-post-lto.ll

Test source: git

Log:

Source: <stdin>
-- 1. CrossDSOCFIPass
-- 2. CrossDSOCFIPass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr %this) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture %this) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(ptr)

define ptr @_Z6make_Av() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8
_ZN1B3fooEv = constant ? bytes, align 8

define void @_ZN1BC2Ev(ptr %this) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1B3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1B3fooEv(ptr nocapture %this) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(ptr)

define ptr @_Z6make_Bv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8
_ZN1C3fooEv = constant ? bytes, align 8

define void @_ZN1CC2Ev(ptr %this) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1C3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1C3fooEv(ptr nocapture %this) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(ptr)

define ptr @_Z6make_Cv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 3. OpenMPOptPass : Skipping unsupported
-- 4. OpenMPOptPass : Skipping unsupported
-- 5. GlobalDCEPass : Skipping unsupported
-- 6. GlobalDCEPass : Skipping unsupported
-- 7. InferFunctionAttrsPass : Skipping unsupported
-- 8. InferFunctionAttrsPass : Skipping unsupported
-- 9. ModuleToFunctionPassAdaptor

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr %this) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture %this) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(ptr)

define ptr @_Z6make_Av() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(ptr)

define ptr @_Z6make_Bv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(ptr)

define ptr @_Z6make_Cv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 1. CallSiteSplittingPass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr %this) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 2. CallSiteSplittingPass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr %this) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 3. CallSiteSplittingPass

----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture %this) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 4. CallSiteSplittingPass

----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture %this) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 5. CallSiteSplittingPass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(ptr)

define ptr @_Z6make_Av() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 6. CallSiteSplittingPass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(ptr)

define ptr @_Z6make_Av() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 7. CallSiteSplittingPass

----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 8. CallSiteSplittingPass

----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 9. CallSiteSplittingPass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(ptr)

define ptr @_Z6make_Bv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 10. CallSiteSplittingPass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(ptr)

define ptr @_Z6make_Bv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 11. CallSiteSplittingPass

----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 12. CallSiteSplittingPass

----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 13. CallSiteSplittingPass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(ptr)

define ptr @_Z6make_Cv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 14. CallSiteSplittingPass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(ptr)

define ptr @_Z6make_Cv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 10. ModuleToFunctionPassAdaptor

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr %this) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture %this) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(ptr)

define ptr @_Z6make_Av() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(ptr)

define ptr @_Z6make_Bv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(ptr)

define ptr @_Z6make_Cv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 11. PGOIndirectCallPromotion

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr %this) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture %this) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(ptr)

define ptr @_Z6make_Av() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(ptr)

define ptr @_Z6make_Bv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(ptr)

define ptr @_Z6make_Cv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 12. PGOIndirectCallPromotion

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr %this) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture %this) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(ptr)

define ptr @_Z6make_Av() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(ptr)

define ptr @_Z6make_Bv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(ptr)

define ptr @_Z6make_Cv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 13. IPSCCPPass : Skipping unsupported
-- 14. IPSCCPPass : Skipping unsupported
-- 15. CalledValuePropagationPass : Skipping unsupported
-- 16. CalledValuePropagationPass : Skipping unsupported
-- 17. ModuleToPostOrderCGSCCPassAdaptor

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr %this) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture %this) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(ptr)

define ptr @_Z6make_Av() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(ptr)

define ptr @_Z6make_Bv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr %this) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(ptr)

define ptr @_Z6make_Cv() {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(ptr %call)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 18. PostOrderFunctionAttrsPass : Skipping unsupported
-- 19. PostOrderFunctionAttrsPass : Skipping unsupported
-- 20. PostOrderFunctionAttrsPass : Skipping unsupported
-- 21. PostOrderFunctionAttrsPass : Skipping unsupported
-- 22. PostOrderFunctionAttrsPass : Skipping unsupported
-- 23. PostOrderFunctionAttrsPass : Skipping unsupported
-- 24. PostOrderFunctionAttrsPass : Skipping unsupported
-- 25. PostOrderFunctionAttrsPass : Skipping unsupported
-- 26. PostOrderFunctionAttrsPass : Skipping unsupported
-- 27. PostOrderFunctionAttrsPass : Skipping unsupported
-- 28. PostOrderFunctionAttrsPass : Skipping unsupported
-- 29. PostOrderFunctionAttrsPass : Skipping unsupported
-- 30. PostOrderFunctionAttrsPass : Skipping unsupported
-- 31. PostOrderFunctionAttrsPass : Skipping unsupported
-- 32. ModuleToPostOrderCGSCCPassAdaptor

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(nocapture noread ptr)

define ptr @_Z6make_Bv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(nocapture noread ptr)

define ptr @_Z6make_Cv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 33. ReversePostOrderFunctionAttrsPass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(nocapture noread ptr)

define ptr @_Z6make_Bv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(nocapture noread ptr)

define ptr @_Z6make_Cv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 34. ReversePostOrderFunctionAttrsPass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(nocapture noread ptr)

define ptr @_Z6make_Bv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(nocapture noread ptr)

define ptr @_Z6make_Cv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 35. GlobalSplitPass : Skipping unsupported
-- 36. GlobalSplitPass : Skipping unsupported
-- 37. WholeProgramDevirtPass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(nocapture noread ptr)

define ptr @_Z6make_Bv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(nocapture noread ptr)

define ptr @_Z6make_Cv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 38. WholeProgramDevirtPass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(nocapture noread ptr)

define ptr @_Z6make_Bv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(nocapture noread ptr)

define ptr @_Z6make_Cv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 39. GlobalOptPass : Skipping unsupported
-- 40. GlobalOptPass : Skipping unsupported
-- 41. ModuleToFunctionPassAdaptor

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(nocapture noread ptr)

define ptr @_Z6make_Bv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(nocapture noread ptr)

define ptr @_Z6make_Cv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 15. PromotePass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 16. PromotePass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 17. PromotePass

----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 18. PromotePass

----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 19. PromotePass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 20. PromotePass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 21. PromotePass

----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 22. PromotePass

----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 23. PromotePass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(nocapture noread ptr)

define ptr @_Z6make_Bv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 24. PromotePass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(nocapture noread ptr)

define ptr @_Z6make_Bv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 25. PromotePass

----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 26. PromotePass

----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 27. PromotePass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(nocapture noread ptr)

define ptr @_Z6make_Cv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 28. PromotePass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(nocapture noread ptr)

define ptr @_Z6make_Cv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 42. ModuleToFunctionPassAdaptor

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(nocapture noread ptr)

define ptr @_Z6make_Bv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(nocapture noread ptr)

define ptr @_Z6make_Cv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 43. ConstantMergePass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(nocapture noread ptr)

define ptr @_Z6make_Bv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(nocapture noread ptr)

define ptr @_Z6make_Cv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 44. ConstantMergePass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(nocapture noread ptr)

define ptr @_Z6make_Bv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(nocapture noread ptr)

define ptr @_Z6make_Cv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 45. DeadArgumentEliminationPass : Skipping unsupported
-- 46. DeadArgumentEliminationPass : Skipping unsupported
-- 47. ModuleToFunctionPassAdaptor

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1B = constant 24 bytes, align 8

define void @_ZN1BC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1B, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1B, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1BC2Ev(nocapture noread ptr)

define ptr @_Z6make_Bv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1BC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
@_ZTV1C = constant 24 bytes, align 8

define void @_ZN1CC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  store {[3 x ptr]} { { null, null, null } }, ptr @_ZTV1C, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1C, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1CC2Ev(nocapture noread ptr)

define ptr @_Z6make_Cv() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1CC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 29. PassManager<Function> : Skipping NOP
-- 30. InstCombinePass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 31. InstCombinePass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 32. AggressiveInstCombinePass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 33. AggressiveInstCombinePass

----------------------------------------
@_ZTV1A = constant 24 bytes, align 8
_ZN1A3fooEv = constant ? bytes, align 8

define void @_ZN1AC2Ev(ptr nocapture noread %this) nofree willreturn memory(argmem: write) {
init:
  %__copy_0 = [3 x ptr] { null, null, _ZN1A3fooEv }
  %__copy_1 = {[3 x ptr]} { %__copy_0 }
  store {[3 x ptr]} %__copy_1, ptr @_ZTV1A, align 8
  br label %entry

entry:
  %__constexpr_0 = gep inbounds ptr @_ZTV1A, 24 x i64 0, 1 x i64 0, 8 x i64 2
  store ptr %__constexpr_0, ptr nocapture noread %this, align 8
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 34. PassManager<Function> : Skipping NOP
-- 35. PassManager<Function> : Skipping NOP
-- 36. InstCombinePass

----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 37. InstCombinePass

----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 38. AggressiveInstCombinePass

----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 39. AggressiveInstCombinePass

----------------------------------------
define void @_ZN1A3fooEv(ptr nocapture noread nowrite %this) nofree willreturn memory(none) {
entry:
  ret void
}
Transformation seems to be correct! (syntactically equal)

-- 40. PassManager<Function> : Skipping NOP
-- 41. PassManager<Function> : Skipping NOP
-- 42. InstCombinePass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation seems to be correct! (syntactically equal)

-- 43. InstCombinePass

----------------------------------------
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
=>
declare ptr @_Znwm(i64)
declare void @_ZN1AC2Ev(nocapture noread ptr)

define ptr @_Z6make_Av() nonnull nofree noalias {
entry:
  %call = call ptr @_Znwm(noundef i64 8) dereferenceable(8) nonnull nofree noundef noalias willreturn dereferenceable_or_null(8) alloc-family(_Znwm) allockind(alloc, uninitialized) allocsize(0) memory(inaccessiblemem: readwrite)
  call void @_ZN1AC2Ev(nonnull nocapture noread ptr %call) nofree willreturn memory(argmem: write)
  ret ptr %call
}
Transformation doesn't verify! (unsound)
ERROR: Source is more defined than target

Example:

Source:
ptr %call = null
Function @_ZN1AC2Ev returned

SOURCE MEMORY STATE
===================
NON-LOCAL BLOCKS:
Block 0 >	size: 0	align: 1	alloc type: 0	alive: false	address: 0
Block 1 >	size: 0	align: 1	alloc type: 0	alive: true	address: 0

LOCAL BLOCKS:
Block 2 >	size: 8	align: 8	alloc type: 2	alive: true

Target:
ptr %call = null
Function @_ZN1AC2Ev triggered UB

TARGET MEMORY STATE
===================
LOCAL BLOCKS:
Block 2 >	size: 8	align: 8	alloc type: 2	alive: true	address: 256


Pass: InstCombinePass
Command line: '/home/nlopes/llvm/build/bin/opt' '-load=/home/nlopes/alive2/build/tv/tv.so' '-load-pass-plugin=/home/nlopes/alive2/build/tv/tv.so' '-tv-exit-on-error' '-passes=lto<O2>' '-S' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats'
Wrote bitcode to: "/home/nlopes/alive2/build/logs/in_qnOkABtu_dNzl.bc"


------------------- SMT STATS -------------------
Num queries: 7
Num invalid: 0
Num skips:   0
Num trivial: 2 (22.2%)
Num timeout: 0 (0.0%)
Num errors:  0 (0.0%)
Num SAT:     7 (100.0%)
Num UNSAT:   0 (0.0%)
Alive2: Transform doesn't verify; aborting!

stderr:

RUN: at line 1: /home/nlopes/alive2/build/opt-alive.sh < /bitbucket/nlopes/llvm/llvm/test/Transforms/GlobalDCE/virtual-functions-visibility-post-lto.ll -passes='globaldce<vfe-linkage-unit-visibility>' -S | /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/GlobalDCE/virtual-functions-visibility-post-lto.ll
+ /home/nlopes/alive2/build/opt-alive.sh '-passes=globaldce<vfe-linkage-unit-visibility>' -S
+ /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/GlobalDCE/virtual-functions-visibility-post-lto.ll
RUN: at line 2: /home/nlopes/alive2/build/opt-alive.sh < /bitbucket/nlopes/llvm/llvm/test/Transforms/GlobalDCE/virtual-functions-visibility-post-lto.ll -passes='lto<O2>' -S | /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/GlobalDCE/virtual-functions-visibility-post-lto.ll
+ /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/GlobalDCE/virtual-functions-visibility-post-lto.ll
+ /home/nlopes/alive2/build/opt-alive.sh '-passes=lto<O2>' -S

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/GlobalDCE/virtual-functions-visibility-post-lto.ll

 

<-- Back