; LLVM IR from opset/openset :: src/queryindexing.ll (ZN7openset5query8IndexingC2Ev)

; 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.openset::query::Indexing" = type { %"class.std::vector", %"struct.openset::query::Macro_s", ptr, ptr, i32, i32, %"class.std::vector.344" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<openset::query::Indexing::StackItem_s, std::allocator<openset::query::Indexing::StackItem_s>>::_Vector_impl" }
%"struct.std::_Vector_base<openset::query::Indexing::StackItem_s, std::allocator<openset::query::Indexing::StackItem_s>>::_Vector_impl" = type { %"struct.std::_Vector_base<openset::query::Indexing::StackItem_s, std::allocator<openset::query::Indexing::StackItem_s>>::_Vector_impl_data" }
%"struct.std::_Vector_base<openset::query::Indexing::StackItem_s, std::allocator<openset::query::Indexing::StackItem_s>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.openset::query::Macro_s" = type { %"struct.openset::query::Variables_S", %"class.std::vector.297", %"class.std::vector.297", %"class.std::vector.322", %"class.std::vector.327", %"class.std::vector.332", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::vector.337", i8, %"class.std::__cxx11::basic_string", %"class.std::vector.342", %"class.std::unordered_set.200", i64, i64, i32, i64, %"class.std::__cxx11::basic_string", i8, i8, i8, i8, i8, i8, i8, i8, i8, i32 }
%"struct.openset::query::Variables_S" = type { %"class.std::vector.292", %"class.std::vector.292", %"class.std::vector.292", %"class.std::vector.297", %"class.std::vector.302", %"class.std::vector.307", %"class.std::vector.312", %"class.std::vector.317" }
%"class.std::vector.292" = type { %"struct.std::_Vector_base.293" }
%"struct.std::_Vector_base.293" = type { %"struct.std::_Vector_base<openset::query::Variable_s, std::allocator<openset::query::Variable_s>>::_Vector_impl" }
%"struct.std::_Vector_base<openset::query::Variable_s, std::allocator<openset::query::Variable_s>>::_Vector_impl" = type { %"struct.std::_Vector_base<openset::query::Variable_s, std::allocator<openset::query::Variable_s>>::_Vector_impl_data" }
%"struct.std::_Vector_base<openset::query::Variable_s, std::allocator<openset::query::Variable_s>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.302" = type { %"struct.std::_Vector_base.303" }
%"struct.std::_Vector_base.303" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.307" = type { %"struct.std::_Vector_base.308" }
%"struct.std::_Vector_base.308" = type { %"struct.std::_Vector_base<openset::query::Function_s, std::allocator<openset::query::Function_s>>::_Vector_impl" }
%"struct.std::_Vector_base<openset::query::Function_s, std::allocator<openset::query::Function_s>>::_Vector_impl" = type { %"struct.std::_Vector_base<openset::query::Function_s, std::allocator<openset::query::Function_s>>::_Vector_impl_data" }
%"struct.std::_Vector_base<openset::query::Function_s, std::allocator<openset::query::Function_s>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.312" = type { %"struct.std::_Vector_base.313" }
%"struct.std::_Vector_base.313" = type { %"struct.std::_Vector_base<openset::query::TextLiteral_s, std::allocator<openset::query::TextLiteral_s>>::_Vector_impl" }
%"struct.std::_Vector_base<openset::query::TextLiteral_s, std::allocator<openset::query::TextLiteral_s>>::_Vector_impl" = type { %"struct.std::_Vector_base<openset::query::TextLiteral_s, std::allocator<openset::query::TextLiteral_s>>::_Vector_impl_data" }
%"struct.std::_Vector_base<openset::query::TextLiteral_s, std::allocator<openset::query::TextLiteral_s>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.317" = type { %"struct.std::_Vector_base.318" }
%"struct.std::_Vector_base.318" = type { %"struct.std::_Vector_base<openset::query::Count_S, std::allocator<openset::query::Count_S>>::_Vector_impl" }
%"struct.std::_Vector_base<openset::query::Count_S, std::allocator<openset::query::Count_S>>::_Vector_impl" = type { %"struct.std::_Vector_base<openset::query::Count_S, std::allocator<openset::query::Count_S>>::_Vector_impl_data" }
%"struct.std::_Vector_base<openset::query::Count_S, std::allocator<openset::query::Count_S>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.297" = type { %"struct.std::_Vector_base.298" }
%"struct.std::_Vector_base.298" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.322" = type { %"struct.std::_Vector_base.323" }
%"struct.std::_Vector_base.323" = type { %"struct.std::_Vector_base<openset::query::Filter_s, std::allocator<openset::query::Filter_s>>::_Vector_impl" }
%"struct.std::_Vector_base<openset::query::Filter_s, std::allocator<openset::query::Filter_s>>::_Vector_impl" = type { %"struct.std::_Vector_base<openset::query::Filter_s, std::allocator<openset::query::Filter_s>>::_Vector_impl_data" }
%"struct.std::_Vector_base<openset::query::Filter_s, std::allocator<openset::query::Filter_s>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.327" = type { %"struct.std::_Vector_base.328" }
%"struct.std::_Vector_base.328" = type { %"struct.std::_Vector_base<openset::query::Instruction_s, std::allocator<openset::query::Instruction_s>>::_Vector_impl" }
%"struct.std::_Vector_base<openset::query::Instruction_s, std::allocator<openset::query::Instruction_s>>::_Vector_impl" = type { %"struct.std::_Vector_base<openset::query::Instruction_s, std::allocator<openset::query::Instruction_s>>::_Vector_impl_data" }
%"struct.std::_Vector_base<openset::query::Instruction_s, std::allocator<openset::query::Instruction_s>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.332" = type { %"struct.std::_Vector_base.333" }
%"struct.std::_Vector_base.333" = type { %"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, std::vector<openset::query::HintOp_s>>, std::allocator<std::pair<std::__cxx11::basic_string<char>, std::vector<openset::query::HintOp_s>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, std::vector<openset::query::HintOp_s>>, std::allocator<std::pair<std::__cxx11::basic_string<char>, std::vector<openset::query::HintOp_s>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, std::vector<openset::query::HintOp_s>>, std::allocator<std::pair<std::__cxx11::basic_string<char>, std::vector<openset::query::HintOp_s>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, std::vector<openset::query::HintOp_s>>, std::allocator<std::pair<std::__cxx11::basic_string<char>, std::vector<openset::query::HintOp_s>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.337" = type { %"struct.std::_Vector_base.338" }
%"struct.std::_Vector_base.338" = type { %"struct.std::_Vector_base<openset::query::HintOp_s, std::allocator<openset::query::HintOp_s>>::_Vector_impl" }
%"struct.std::_Vector_base<openset::query::HintOp_s, std::allocator<openset::query::HintOp_s>>::_Vector_impl" = type { %"struct.std::_Vector_base<openset::query::HintOp_s, std::allocator<openset::query::HintOp_s>>::_Vector_impl_data" }
%"struct.std::_Vector_base<openset::query::HintOp_s, std::allocator<openset::query::HintOp_s>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.342" = type { %"struct.std::_Vector_base.343" }
%"struct.std::_Vector_base.343" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_set.200" = type { %"class.std::_Hashtable.201" }
%"class.std::_Hashtable.201" = 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.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.std::vector.344" = type { %"struct.std::_Vector_base.345" }
%"struct.std::_Vector_base.345" = type { %"struct.std::_Vector_base<std::tuple<std::__cxx11::basic_string<char>, openset::db::IndexBits, bool>, std::allocator<std::tuple<std::__cxx11::basic_string<char>, openset::db::IndexBits, bool>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::tuple<std::__cxx11::basic_string<char>, openset::db::IndexBits, bool>, std::allocator<std::tuple<std::__cxx11::basic_string<char>, openset::db::IndexBits, bool>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::tuple<std::__cxx11::basic_string<char>, openset::db::IndexBits, bool>, std::allocator<std::tuple<std::__cxx11::basic_string<char>, openset::db::IndexBits, bool>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::tuple<std::__cxx11::basic_string<char>, openset::db::IndexBits, bool>, std::allocator<std::tuple<std::__cxx11::basic_string<char>, openset::db::IndexBits, bool>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_ZN7openset5query8IndexingC2Ev(ptr noundef nonnull align 8 dereferenceable(672) %0) unnamed_addr #0 align 2 {
  %2 = alloca ptr, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %3 = load ptr, ptr %2, align 8
  %4 = getelementptr inbounds %"class.openset::query::Indexing", ptr %3, i32 0, i32 0
  call void @_ZNSt6vectorIN7openset5query8Indexing11StackItem_sESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #2
  %5 = getelementptr inbounds %"class.openset::query::Indexing", ptr %3, i32 0, i32 1
  call void @_ZN7openset5query7Macro_sC2Ev(ptr noundef nonnull align 8 dereferenceable(600) %5) #2
  %6 = getelementptr inbounds %"class.openset::query::Indexing", ptr %3, i32 0, i32 2
  store ptr null, ptr %6, align 8, !tbaa !9
  %7 = getelementptr inbounds %"class.openset::query::Indexing", ptr %3, i32 0, i32 3
  store ptr null, ptr %7, align 8, !tbaa !75
  %8 = getelementptr inbounds %"class.openset::query::Indexing", ptr %3, i32 0, i32 4
  store i32 -1, ptr %8, align 8, !tbaa !76
  %9 = getelementptr inbounds %"class.openset::query::Indexing", ptr %3, i32 0, i32 5
  store i32 0, ptr %9, align 4, !tbaa !77
  %10 = getelementptr inbounds %"class.openset::query::Indexing", ptr %3, i32 0, i32 6
  call void @_ZNSt6vectorISt5tupleIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db9IndexBitsEbEESaISA_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #2
  ret void
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7openset5query7Macro_sC2Ev(ptr noundef nonnull align 8 dereferenceable(600)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt5tupleIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db9IndexBitsEbEESaISA_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) 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 = { inlinehint 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 #2 = { 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, !6, i64 624}
!10 = !{!"_ZTSN7openset5query8IndexingE", !11, i64 0, !15, i64 24, !6, i64 624, !6, i64 632, !70, i64 640, !70, i64 644, !71, i64 648}
!11 = !{!"_ZTSSt6vectorIN7openset5query8Indexing11StackItem_sESaIS3_EE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseIN7openset5query8Indexing11StackItem_sESaIS3_EE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIN7openset5query8Indexing11StackItem_sESaIS3_EE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIN7openset5query8Indexing11StackItem_sESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!15 = !{!"_ZTSN7openset5query7Macro_sE", !16, i64 0, !21, i64 192, !21, i64 216, !41, i64 240, !45, i64 264, !49, i64 288, !53, i64 312, !53, i64 344, !56, i64 376, !60, i64 400, !53, i64 408, !61, i64 440, !65, i64 464, !55, i64 520, !55, i64 528, !70, i64 536, !55, i64 544, !53, i64 552, !60, i64 584, !60, i64 585, !60, i64 586, !60, i64 587, !60, i64 588, !60, i64 589, !60, i64 590, !60, i64 591, !60, i64 592, !70, i64 596}
!16 = !{!"_ZTSN7openset5query11Variables_SE", !17, i64 0, !17, i64 24, !17, i64 48, !21, i64 72, !25, i64 96, !29, i64 120, !33, i64 144, !37, i64 168}
!17 = !{!"_ZTSSt6vectorIN7openset5query10Variable_sESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIN7openset5query10Variable_sESaIS2_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN7openset5query10Variable_sESaIS2_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN7openset5query10Variable_sESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSSt6vectorIiSaIiEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSSt6vectorIlSaIlEE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIlSaIlEE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!29 = !{!"_ZTSSt6vectorIN7openset5query10Function_sESaIS2_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIN7openset5query10Function_sESaIS2_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN7openset5query10Function_sESaIS2_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN7openset5query10Function_sESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!"_ZTSSt6vectorIN7openset5query13TextLiteral_sESaIS2_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIN7openset5query13TextLiteral_sESaIS2_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIN7openset5query13TextLiteral_sESaIS2_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN7openset5query13TextLiteral_sESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTSSt6vectorIN7openset5query7Count_SESaIS2_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIN7openset5query7Count_SESaIS2_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN7openset5query7Count_SESaIS2_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN7openset5query7Count_SESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"_ZTSSt6vectorIN7openset5query8Filter_sESaIS2_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseIN7openset5query8Filter_sESaIS2_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIN7openset5query8Filter_sESaIS2_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN7openset5query8Filter_sESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!45 = !{!"_ZTSSt6vectorIN7openset5query13Instruction_sESaIS2_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIN7openset5query13Instruction_sESaIS2_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN7openset5query13Instruction_sESaIS2_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN7openset5query13Instruction_sESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{!"_ZTSSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES_IN7openset5query8HintOp_sESaIS9_EEESaISC_EE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIN7openset5query8HintOp_sESaISA_EEESaISD_EE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIN7openset5query8HintOp_sESaISA_EEESaISD_EE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIN7openset5query8HintOp_sESaISA_EEESaISD_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!53 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !54, i64 0, !55, i64 8, !7, i64 16}
!54 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!55 = !{!"long", !7, i64 0}
!56 = !{!"_ZTSSt6vectorIN7openset5query8HintOp_sESaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIN7openset5query8HintOp_sESaIS2_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN7openset5query8HintOp_sESaIS2_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIN7openset5query8HintOp_sESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!60 = !{!"bool", !7, i64 0}
!61 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!65 = !{!"_ZTSSt13unordered_setIN7openset5query10Marshals_eESt4hashIS2_ESt8equal_toIS2_ESaIS2_EE", !66, i64 0}
!66 = !{!"_ZTSSt10_HashtableIN7openset5query10Marshals_eES2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE", !6, i64 0, !55, i64 8, !67, i64 16, !55, i64 24, !68, i64 32, !6, i64 48}
!67 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!68 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !69, i64 0, !55, i64 8}
!69 = !{!"float", !7, i64 0}
!70 = !{!"int", !7, i64 0}
!71 = !{!"_ZTSSt6vectorISt5tupleIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db9IndexBitsEbEESaISA_EE", !72, i64 0}
!72 = !{!"_ZTSSt12_Vector_baseISt5tupleIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db9IndexBitsEbEESaISA_EE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseISt5tupleIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db9IndexBitsEbEESaISA_EE12_Vector_implE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseISt5tupleIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db9IndexBitsEbEESaISA_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!75 = !{!10, !6, i64 632}
!76 = !{!10, !70, i64 640}
!77 = !{!10, !70, i64 644}


; 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
define dso_local void @_ZN7openset5query8IndexingC2Ev(ptr noundef nonnull align 8 dereferenceable(672) %0) unnamed_addr #0 align 2 {
  tail call void @_ZNSt6vectorIN7openset5query8Indexing11StackItem_sESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #3
  %2 = getelementptr inbounds i8, ptr %0, i64 24
  tail call void @_ZN7openset5query7Macro_sC2Ev(ptr noundef nonnull align 8 dereferenceable(600) %2) #3
  %3 = getelementptr inbounds i8, ptr %0, i64 624
  %4 = getelementptr inbounds i8, ptr %0, i64 640
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, i8 0, i64 16, i1 false)
  store i32 -1, ptr %4, align 8, !tbaa !5
  %5 = getelementptr inbounds i8, ptr %0, i64 644
  store i32 0, ptr %5, align 4, !tbaa !74
  %6 = getelementptr inbounds i8, ptr %0, i64 648
  tail call void @_ZNSt6vectorISt5tupleIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db9IndexBitsEbEESaISA_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #3
  ret void
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7openset5query7Macro_sC2Ev(ptr noundef nonnull align 8 dereferenceable(600)) unnamed_addr #1 align 2

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 = { inlinehint 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 #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { 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, !69, i64 640}
!6 = !{!"_ZTSN7openset5query8IndexingE", !7, i64 0, !14, i64 24, !11, i64 624, !11, i64 632, !69, i64 640, !69, i64 644, !70, i64 648}
!7 = !{!"_ZTSSt6vectorIN7openset5query8Indexing11StackItem_sESaIS3_EE", !8, i64 0}
!8 = !{!"_ZTSSt12_Vector_baseIN7openset5query8Indexing11StackItem_sESaIS3_EE", !9, i64 0}
!9 = !{!"_ZTSNSt12_Vector_baseIN7openset5query8Indexing11StackItem_sESaIS3_EE12_Vector_implE", !10, i64 0}
!10 = !{!"_ZTSNSt12_Vector_baseIN7openset5query8Indexing11StackItem_sESaIS3_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!11 = !{!"any pointer", !12, i64 0}
!12 = !{!"omnipotent char", !13, i64 0}
!13 = !{!"Simple C++ TBAA"}
!14 = !{!"_ZTSN7openset5query7Macro_sE", !15, i64 0, !20, i64 192, !20, i64 216, !40, i64 240, !44, i64 264, !48, i64 288, !52, i64 312, !52, i64 344, !55, i64 376, !59, i64 400, !52, i64 408, !60, i64 440, !64, i64 464, !54, i64 520, !54, i64 528, !69, i64 536, !54, i64 544, !52, i64 552, !59, i64 584, !59, i64 585, !59, i64 586, !59, i64 587, !59, i64 588, !59, i64 589, !59, i64 590, !59, i64 591, !59, i64 592, !69, i64 596}
!15 = !{!"_ZTSN7openset5query11Variables_SE", !16, i64 0, !16, i64 24, !16, i64 48, !20, i64 72, !24, i64 96, !28, i64 120, !32, i64 144, !36, i64 168}
!16 = !{!"_ZTSSt6vectorIN7openset5query10Variable_sESaIS2_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIN7openset5query10Variable_sESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN7openset5query10Variable_sESaIS2_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN7openset5query10Variable_sESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!20 = !{!"_ZTSSt6vectorIiSaIiEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!24 = !{!"_ZTSSt6vectorIlSaIlEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIlSaIlEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!28 = !{!"_ZTSSt6vectorIN7openset5query10Function_sESaIS2_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIN7openset5query10Function_sESaIS2_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN7openset5query10Function_sESaIS2_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN7openset5query10Function_sESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!32 = !{!"_ZTSSt6vectorIN7openset5query13TextLiteral_sESaIS2_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIN7openset5query13TextLiteral_sESaIS2_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN7openset5query13TextLiteral_sESaIS2_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIN7openset5query13TextLiteral_sESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!36 = !{!"_ZTSSt6vectorIN7openset5query7Count_SESaIS2_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIN7openset5query7Count_SESaIS2_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIN7openset5query7Count_SESaIS2_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN7openset5query7Count_SESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!40 = !{!"_ZTSSt6vectorIN7openset5query8Filter_sESaIS2_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseIN7openset5query8Filter_sESaIS2_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN7openset5query8Filter_sESaIS2_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIN7openset5query8Filter_sESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!44 = !{!"_ZTSSt6vectorIN7openset5query13Instruction_sESaIS2_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseIN7openset5query13Instruction_sESaIS2_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIN7openset5query13Instruction_sESaIS2_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN7openset5query13Instruction_sESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!48 = !{!"_ZTSSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES_IN7openset5query8HintOp_sESaIS9_EEESaISC_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIN7openset5query8HintOp_sESaISA_EEESaISD_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIN7openset5query8HintOp_sESaISA_EEESaISD_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIN7openset5query8HintOp_sESaISA_EEESaISD_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!52 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !53, i64 0, !54, i64 8, !12, i64 16}
!53 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !11, i64 0}
!54 = !{!"long", !12, i64 0}
!55 = !{!"_ZTSSt6vectorIN7openset5query8HintOp_sESaIS2_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIN7openset5query8HintOp_sESaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN7openset5query8HintOp_sESaIS2_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN7openset5query8HintOp_sESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!59 = !{!"bool", !12, i64 0}
!60 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !61, i64 0}
!61 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!64 = !{!"_ZTSSt13unordered_setIN7openset5query10Marshals_eESt4hashIS2_ESt8equal_toIS2_ESaIS2_EE", !65, i64 0}
!65 = !{!"_ZTSSt10_HashtableIN7openset5query10Marshals_eES2_SaIS2_ENSt8__detail9_IdentityESt8equal_toIS2_ESt4hashIS2_ENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb1ELb1ELb1EEEE", !11, i64 0, !54, i64 8, !66, i64 16, !54, i64 24, !67, i64 32, !11, i64 48}
!66 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !11, i64 0}
!67 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !68, i64 0, !54, i64 8}
!68 = !{!"float", !12, i64 0}
!69 = !{!"int", !12, i64 0}
!70 = !{!"_ZTSSt6vectorISt5tupleIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db9IndexBitsEbEESaISA_EE", !71, i64 0}
!71 = !{!"_ZTSSt12_Vector_baseISt5tupleIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db9IndexBitsEbEESaISA_EE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseISt5tupleIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db9IndexBitsEbEESaISA_EE12_Vector_implE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseISt5tupleIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db9IndexBitsEbEESaISA_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!74 = !{!6, !69, i64 644}


; Effective O3 passes: EarlyCSEPass,InstCombinePass,MemCpyOptPass,SROAPass,TailCallElimPass