; LLVM IR from Try/Tempest :: Engine/thirdparty/spirv_cross/spirv_cross_parsed_ir.ll (ZN11spirv_cross8ParsedIRC2EOS0_)

; Unoptimized IR (clang -disable-llvm-passes):
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"

%"class.spirv_cross::ParsedIR" = type { %"class.std::unique_ptr", %"class.std::vector", %"class.spirv_cross::SmallVector", %"class.std::unordered_map", [14 x %"class.spirv_cross::SmallVector.7"], %"class.spirv_cross::SmallVector.7", %"class.spirv_cross::SmallVector.7", %"class.std::unordered_map.10", %"class.spirv_cross::SmallVector.24", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.30", %"class.std::unordered_map.33", %"class.std::unordered_map.52", %"class.spirv_cross::TypedID", %"struct.spirv_cross::ParsedIR::Source", i32, i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.spirv_cross::Bitset", %"class.std::unordered_set" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.spirv_cross::SmallVector" = type { %"class.spirv_cross::VectorView", i64, %"class.spirv_cross::AlignedBuffer" }
%"class.spirv_cross::VectorView" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer" = type { [192 x i8] }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.spirv_cross::SmallVector.7" = type { %"class.spirv_cross::VectorView.8", i64, %"class.spirv_cross::AlignedBuffer.9" }
%"class.spirv_cross::VectorView.8" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.9" = type { [32 x i8] }
%"class.std::unordered_map.10" = type { %"class.std::_Hashtable.11" }
%"class.std::_Hashtable.11" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.24" = type { %"class.spirv_cross::VectorView.25", i64, %"class.spirv_cross::AlignedBuffer.26" }
%"class.spirv_cross::VectorView.25" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.26" = type { [32 x i8] }
%"class.spirv_cross::SmallVector.27" = type { %"class.spirv_cross::VectorView.28", i64, %"class.spirv_cross::AlignedBuffer.29" }
%"class.spirv_cross::VectorView.28" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.29" = type { [256 x i8] }
%"class.spirv_cross::SmallVector.30" = type { %"class.spirv_cross::VectorView.31", i64, %"class.spirv_cross::AlignedBuffer.32" }
%"class.spirv_cross::VectorView.31" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.32" = type { [8 x i8] }
%"class.std::unordered_map.33" = type { %"class.std::_Hashtable.34" }
%"class.std::_Hashtable.34" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.52" = type { %"class.std::_Hashtable.53" }
%"class.std::_Hashtable.53" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::TypedID" = type { i32 }
%"struct.spirv_cross::ParsedIR::Source" = type <{ i32, i8, i8, i8, i8 }>
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.74" }
%"class.std::_Hashtable.74" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross11SmallVectorINS_7VariantELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(216)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross11SmallVectorIhLm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross7TypedIDILNS_5TypesE4EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross8ParsedIR6SourceC2Ev(ptr noundef nonnull align 4 dereferenceable(7)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross6BitsetC2Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_ZN11spirv_cross8ParsedIRC2EOS0_(ptr noundef nonnull align 8 dereferenceable(1920) %0, ptr noundef nonnull align 8 dereferenceable(1920) %1) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %5 = load ptr, ptr %3, align 8
  %6 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  call void @_ZNSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #2
  %7 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 1
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #2
  %8 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 2
  call void @_ZN11spirv_cross11SmallVectorINS_7VariantELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(216) %8) #2
  %9 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 3
  call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %9) #2
  %10 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 4
  %11 = getelementptr inbounds [14 x %"class.spirv_cross::SmallVector.7"], ptr %10, i32 0, i32 0
  %12 = getelementptr inbounds %"class.spirv_cross::SmallVector.7", ptr %11, i64 14
  br label %13

13:                                               ; preds = %13, %2
  %14 = phi ptr [ %11, %2 ], [ %15, %13 ]
  call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %14) #2
  %15 = getelementptr inbounds %"class.spirv_cross::SmallVector.7", ptr %14, i64 1
  %16 = icmp eq ptr %15, %12
  br i1 %16, label %17, label %13

17:                                               ; preds = %13
  %18 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 5
  call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #2
  %19 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 6
  call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %19) #2
  %20 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 7
  call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %20) #2
  %21 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 8
  call void @_ZN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %21) #2
  %22 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 9
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %22) #2
  %23 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 10
  call void @_ZN11spirv_cross11SmallVectorIhLm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #2
  %24 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 11
  call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %24) #2
  %25 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 12
  call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %25) #2
  %26 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 13
  invoke void @_ZN11spirv_cross7TypedIDILNS_5TypesE4EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %26, i32 noundef 0)
          to label %27 unwind label %38

27:                                               ; preds = %17
  %28 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 14
  call void @_ZN11spirv_cross8ParsedIR6SourceC2Ev(ptr noundef nonnull align 4 dereferenceable(7) %28) #2
  %29 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 15
  store i32 2147483647, ptr %29, align 4, !tbaa !9
  %30 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 16
  store i32 2147483647, ptr %30, align 8, !tbaa !59
  %31 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 17
  store i32 0, ptr %31, align 4, !tbaa !60
  %32 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 18
  store i32 0, ptr %32, align 8, !tbaa !61
  %33 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 19
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #2
  %34 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 20
  call void @_ZN11spirv_cross6BitsetC2Ev(ptr noundef nonnull align 8 dereferenceable(64) %34) #2
  %35 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 21
  call void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %35) #2
  %36 = load ptr, ptr %4, align 8, !tbaa !5
  %37 = call noundef nonnull align 8 dereferenceable(1920) ptr @_ZN11spirv_cross8ParsedIRaSEOS0_(ptr noundef nonnull align 8 dereferenceable(1920) %5, ptr noundef nonnull align 8 dereferenceable(1920) %36) #2
  ret void

38:                                               ; preds = %17
  %39 = landingpad { ptr, i32 }
          catch ptr null
  %40 = extractvalue { ptr, i32 } %39, 0
  call void @__clang_call_terminate(ptr %40) #3
  unreachable
}

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(1920) ptr @_ZN11spirv_cross8ParsedIRaSEOS0_(ptr noundef nonnull align 8 dereferenceable(1920), ptr noundef nonnull align 8 dereferenceable(1920)) #0 align 2

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind }
attributes #3 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !52, i64 1748}
!10 = !{!"_ZTSN11spirv_cross8ParsedIRE", !11, i64 0, !17, i64 8, !21, i64 32, !25, i64 248, !7, i64 304, !30, i64 1088, !30, i64 1144, !33, i64 1200, !35, i64 1256, !38, i64 1312, !41, i64 1592, !44, i64 1624, !46, i64 1680, !48, i64 1736, !50, i64 1740, !52, i64 1748, !53, i64 1752, !49, i64 1756, !49, i64 1760, !54, i64 1768, !56, i64 1800, !57, i64 1864}
!11 = !{!"_ZTSSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !12, i64 0}
!12 = !{!"_ZTSSt15__uniq_ptr_dataIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_ELb1ELb1EE", !13, i64 0}
!13 = !{!"_ZTSSt15__uniq_ptr_implIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !14, i64 0}
!14 = !{!"_ZTSSt5tupleIJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !15, i64 0}
!15 = !{!"_ZTSSt11_Tuple_implILm0EJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !16, i64 0}
!16 = !{!"_ZTSSt10_Head_baseILm0EPN11spirv_cross15ObjectPoolGroupELb0EE", !6, i64 0}
!17 = !{!"_ZTSSt6vectorIjSaIjEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7VariantELm8EEE", !22, i64 0, !23, i64 16, !24, i64 24}
!22 = !{!"_ZTSN11spirv_cross10VectorViewINS_7VariantEEE", !6, i64 0, !23, i64 8}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7VariantELm8EEE", !7, i64 0}
!25 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !26, i64 0}
!26 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE0EEESt4pairIKS3_NS0_4MetaEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !23, i64 8, !27, i64 16, !23, i64 24, !28, i64 32, !6, i64 48}
!27 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!28 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !29, i64 0, !23, i64 8}
!29 = !{!"float", !7, i64 0}
!30 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEE", !31, i64 0, !23, i64 16, !32, i64 24}
!31 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE0EEEEE", !6, i64 0, !23, i64 8}
!32 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE0EEELm8EEE", !7, i64 0}
!33 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEE", !34, i64 0}
!34 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE0EEESt4pairIKS3_jESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !23, i64 8, !27, i64 16, !23, i64 24, !28, i64 32, !6, i64 48}
!35 = !{!"_ZTSN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EEE", !36, i64 0, !23, i64 16, !37, i64 24}
!36 = !{!"_ZTSN11spirv_cross10VectorViewIN3spv10CapabilityEEE", !6, i64 0, !23, i64 8}
!37 = !{!"_ZTSN11spirv_cross13AlignedBufferIN3spv10CapabilityELm8EEE", !7, i64 0}
!38 = !{!"_ZTSN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !39, i64 0, !23, i64 16, !40, i64 24}
!39 = !{!"_ZTSN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !6, i64 0, !23, i64 8}
!40 = !{!"_ZTSN11spirv_cross13AlignedBufferINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !7, i64 0}
!41 = !{!"_ZTSN11spirv_cross11SmallVectorIhLm8EEE", !42, i64 0, !23, i64 16, !43, i64 24}
!42 = !{!"_ZTSN11spirv_cross10VectorViewIhEE", !6, i64 0, !23, i64 8}
!43 = !{!"_ZTSN11spirv_cross13AlignedBufferIhLm8EEE", !7, i64 0}
!44 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEE", !45, i64 0}
!45 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE6EEESt4pairIKS3_S3_ESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !23, i64 8, !27, i64 16, !23, i64 24, !28, i64 32, !6, i64 48}
!46 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !47, i64 0}
!47 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE4EEESt4pairIKS3_NS0_14SPIREntryPointEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !23, i64 8, !27, i64 16, !23, i64 24, !28, i64 32, !6, i64 48}
!48 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE4EEE", !49, i64 0}
!49 = !{!"int", !7, i64 0}
!50 = !{!"_ZTSN11spirv_cross8ParsedIR6SourceE", !49, i64 0, !51, i64 4, !51, i64 5, !51, i64 6}
!51 = !{!"bool", !7, i64 0}
!52 = !{!"_ZTSN3spv15AddressingModelE", !7, i64 0}
!53 = !{!"_ZTSN3spv11MemoryModelE", !7, i64 0}
!54 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !55, i64 0, !23, i64 8, !7, i64 16}
!55 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!56 = !{!"_ZTSN11spirv_cross6BitsetE", !23, i64 0, !57, i64 8}
!57 = !{!"_ZTSSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE", !58, i64 0}
!58 = !{!"_ZTSSt10_HashtableIjjSaIjENSt8__detail9_IdentityESt8equal_toIjESt4hashIjENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE", !6, i64 0, !23, i64 8, !27, i64 16, !23, i64 24, !28, i64 32, !6, i64 48}
!59 = !{!10, !53, i64 1752}
!60 = !{!10, !49, i64 1756}
!61 = !{!10, !49, i64 1760}


; Optimized IR (opt -passes='default<O3>'):
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"

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross11SmallVectorINS_7VariantELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(216)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross11SmallVectorIhLm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross7TypedIDILNS_5TypesE4EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross8ParsedIR6SourceC2Ev(ptr noundef nonnull align 4 dereferenceable(7)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross6BitsetC2Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_ZN11spirv_cross8ParsedIRC2EOS0_(ptr noundef nonnull align 8 dereferenceable(1920) %0, ptr noundef nonnull align 8 dereferenceable(1920) %1) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  tail call void @_ZNSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #1
  %3 = getelementptr inbounds i8, ptr %0, i64 8
  tail call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #1
  %4 = getelementptr inbounds i8, ptr %0, i64 32
  tail call void @_ZN11spirv_cross11SmallVectorINS_7VariantELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(216) %4) #1
  %5 = getelementptr inbounds i8, ptr %0, i64 248
  tail call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %5) #1
  %.ptr = getelementptr inbounds i8, ptr %0, i64 304
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr) #1
  %.ptr.1 = getelementptr inbounds i8, ptr %0, i64 360
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.1) #1
  %.ptr.2 = getelementptr inbounds i8, ptr %0, i64 416
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.2) #1
  %.ptr.3 = getelementptr inbounds i8, ptr %0, i64 472
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.3) #1
  %.ptr.4 = getelementptr inbounds i8, ptr %0, i64 528
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.4) #1
  %.ptr.5 = getelementptr inbounds i8, ptr %0, i64 584
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.5) #1
  %.ptr.6 = getelementptr inbounds i8, ptr %0, i64 640
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.6) #1
  %.ptr.7 = getelementptr inbounds i8, ptr %0, i64 696
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.7) #1
  %.ptr.8 = getelementptr inbounds i8, ptr %0, i64 752
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.8) #1
  %.ptr.9 = getelementptr inbounds i8, ptr %0, i64 808
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.9) #1
  %.ptr.10 = getelementptr inbounds i8, ptr %0, i64 864
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.10) #1
  %.ptr.11 = getelementptr inbounds i8, ptr %0, i64 920
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.11) #1
  %.ptr.12 = getelementptr inbounds i8, ptr %0, i64 976
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.12) #1
  %.ptr.13 = getelementptr inbounds i8, ptr %0, i64 1032
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.13) #1
  %6 = getelementptr inbounds i8, ptr %0, i64 1088
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #1
  %7 = getelementptr inbounds i8, ptr %0, i64 1144
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %7) #1
  %8 = getelementptr inbounds i8, ptr %0, i64 1200
  tail call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #1
  %9 = getelementptr inbounds i8, ptr %0, i64 1256
  tail call void @_ZN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %9) #1
  %10 = getelementptr inbounds i8, ptr %0, i64 1312
  tail call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %10) #1
  %11 = getelementptr inbounds i8, ptr %0, i64 1592
  tail call void @_ZN11spirv_cross11SmallVectorIhLm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #1
  %12 = getelementptr inbounds i8, ptr %0, i64 1624
  tail call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #1
  %13 = getelementptr inbounds i8, ptr %0, i64 1680
  tail call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %13) #1
  %14 = getelementptr inbounds i8, ptr %0, i64 1736
  tail call void @_ZN11spirv_cross7TypedIDILNS_5TypesE4EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %14, i32 noundef 0)
  %15 = getelementptr inbounds i8, ptr %0, i64 1740
  tail call void @_ZN11spirv_cross8ParsedIR6SourceC2Ev(ptr noundef nonnull align 4 dereferenceable(7) %15) #1
  %16 = getelementptr inbounds i8, ptr %0, i64 1748
  store <4 x i32> <i32 2147483647, i32 2147483647, i32 0, i32 0>, ptr %16, align 4, !tbaa !5
  %17 = getelementptr inbounds i8, ptr %0, i64 1768
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #1
  %18 = getelementptr inbounds i8, ptr %0, i64 1800
  tail call void @_ZN11spirv_cross6BitsetC2Ev(ptr noundef nonnull align 8 dereferenceable(64) %18) #1
  %19 = getelementptr inbounds i8, ptr %0, i64 1864
  tail call void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %19) #1
  %20 = tail call noundef nonnull align 8 dereferenceable(1920) ptr @_ZN11spirv_cross8ParsedIRaSEOS0_(ptr noundef nonnull align 8 dereferenceable(1920) %0, ptr noundef nonnull align 8 dereferenceable(1920) %1) #1
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(1920) ptr @_ZN11spirv_cross8ParsedIRaSEOS0_(ptr noundef nonnull align 8 dereferenceable(1920), ptr noundef nonnull align 8 dereferenceable(1920)) local_unnamed_addr #0 align 2

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,InstCombinePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass