Skip to content

Instantly share code, notes, and snippets.

@nikic

nikic/output.ll Secret

Created January 17, 2022 09:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nikic/9abff537ba4641543951c8d06aa35a3b to your computer and use it in GitHub Desktop.
Save nikic/9abff537ba4641543951c8d06aa35a3b to your computer and use it in GitHub Desktop.
; ModuleID = 'reduced.ll'
source_filename = "reduced.ll"
target triple = "x86_64-unknown-linux-gnu"
%class.Isa = type <{ i32, i32, i32, i8, i8, [2 x i8] }>
%"struct.std::pair" = type { %class.Isa*, %class.Isa* }
%class.anon = type { i32*, i32*, i32*, i8*, i8* }
%"struct.__gnu_cxx::__ops::_Iter_pred" = type { %class.anon }
$_ZSt9make_pairIPK3IsaS2_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_ = comdat any
$_ZSt5beginIK3IsaLm75EEPT_RAT0__S2_ = comdat any
$_ZSt3endIK3IsaLm75EEPT_RAT0__S2_ = comdat any
$_ZSt7forwardIPK3IsaEOT_RNSt16remove_referenceIS3_E4typeE = comdat any
$_ZNSt4pairIPK3IsaS2_EC2IS2_S2_Lb1EEEOT_OT0_ = comdat any
@_ZZN3Isa13supportedIsasEvE14supportedIsas_ = internal constant [75 x { i32, i32, i32, i8, i8 }] [{ i32, i32, i32, i8, i8 } { i32 7, i32 0, i32 0, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 7, i32 0, i32 1, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 7, i32 0, i32 2, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 7, i32 0, i32 3, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 7, i32 0, i32 4, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 7, i32 0, i32 5, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 8, i32 0, i32 1, i8 0, i8 1 }, { i32, i32, i32, i8, i8 } { i32 8, i32 0, i32 1, i8 0, i8 2 }, { i32, i32, i32, i8, i8 } { i32 8, i32 0, i32 1, i8 0, i8 3 }, { i32, i32, i32, i8, i8 } { i32 8, i32 0, i32 2, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 8, i32 0, i32 3, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 8, i32 0, i32 5, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 8, i32 1, i32 0, i8 0, i8 1 }, { i32, i32, i32, i8, i8 } { i32 8, i32 1, i32 0, i8 0, i8 2 }, { i32, i32, i32, i8, i8 } { i32 8, i32 1, i32 0, i8 0, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 0, i8 0, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 0, i8 0, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 0, i8 0, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 2, i8 0, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 2, i8 0, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 2, i8 0, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 4, i8 0, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 4, i8 0, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 4, i8 0, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 6, i8 1, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 6, i8 2, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 6, i8 3, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 6, i8 1, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 6, i8 1, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 6, i8 2, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 6, i8 2, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 6, i8 3, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 6, i8 3, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 8, i8 1, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 8, i8 2, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 8, i8 3, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 8, i8 1, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 8, i8 1, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 8, i8 2, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 8, i8 2, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 8, i8 3, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 8, i8 3, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 2, i8 0, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 2, i8 0, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 2, i8 0, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 10, i8 1, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 10, i8 2, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 10, i8 3, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 10, i8 1, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 10, i8 1, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 10, i8 2, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 10, i8 2, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 10, i8 3, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 10, i8 3, i8 3 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 12, i8 0, i8 1 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 12, i8 0, i8 2 }, { i32, i32, i32, i8, i8 } { i32 9, i32 0, i32 12, i8 0, i8 3 }, { i32, i32, i32, i8, i8 } { i32 10, i32 1, i32 0, i8 0, i8 1 }, { i32, i32, i32, i8, i8 } { i32 10, i32 1, i32 0, i8 0, i8 2 }, { i32, i32, i32, i8, i8 } { i32 10, i32 1, i32 0, i8 0, i8 3 }, { i32, i32, i32, i8, i8 } { i32 10, i32 1, i32 1, i8 0, i8 1 }, { i32, i32, i32, i8, i8 } { i32 10, i32 1, i32 1, i8 0, i8 2 }, { i32, i32, i32, i8, i8 } { i32 10, i32 1, i32 1, i8 0, i8 3 }, { i32, i32, i32, i8, i8 } { i32 10, i32 1, i32 2, i8 0, i8 1 }, { i32, i32, i32, i8, i8 } { i32 10, i32 1, i32 2, i8 0, i8 2 }, { i32, i32, i32, i8, i8 } { i32 10, i32 1, i32 2, i8 0, i8 3 }, { i32, i32, i32, i8, i8 } { i32 10, i32 1, i32 3, i8 0, i8 1 }, { i32, i32, i32, i8, i8 } { i32 10, i32 1, i32 3, i8 0, i8 2 }, { i32, i32, i32, i8, i8 } { i32 10, i32 1, i32 3, i8 0, i8 3 }, { i32, i32, i32, i8, i8 } { i32 10, i32 3, i32 0, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 10, i32 3, i32 1, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 10, i32 3, i32 2, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 10, i32 3, i32 3, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 10, i32 3, i32 4, i8 0, i8 0 }, { i32, i32, i32, i8, i8 } { i32 10, i32 3, i32 5, i8 0, i8 0 }]
; Function Attrs: sanitize_address
define { %class.Isa*, %class.Isa* } @_ZN3Isa13supportedIsasEv() local_unnamed_addr #0 {
entry:
%ref.tmp11 = alloca [0 x %class.Isa*], align 8
%ref.tmp = alloca %class.Isa*, align 8
%ref.tmp11.sub = getelementptr inbounds [0 x %class.Isa*], [0 x %class.Isa*]* %ref.tmp11, i64 0, i64 0
%call = call %class.Isa* @_ZSt5beginIK3IsaLm75EEPT_RAT0__S2_([75 x %class.Isa]* bitcast ([75 x { i32, i32, i32, i8, i8 }]* @_ZZN3Isa13supportedIsasEvE14supportedIsas_ to [75 x %class.Isa]*))
store %class.Isa* %call, %class.Isa** %ref.tmp, align 8
%call2 = call %class.Isa* @_ZSt3endIK3IsaLm75EEPT_RAT0__S2_([75 x %class.Isa]* bitcast ([75 x { i32, i32, i32, i8, i8 }]* @_ZZN3Isa13supportedIsasEvE14supportedIsas_ to [75 x %class.Isa]*))
store %class.Isa* %call2, %class.Isa** %ref.tmp11.sub, align 8
%call3 = call { %class.Isa*, %class.Isa* } @_ZSt9make_pairIPK3IsaS2_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(%class.Isa** nonnull %ref.tmp, %class.Isa** nonnull %ref.tmp11.sub)
ret { %class.Isa*, %class.Isa* } %call3
}
; Function Attrs: sanitize_address
define linkonce_odr { %class.Isa*, %class.Isa* } @_ZSt9make_pairIPK3IsaS2_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(%class.Isa** %__x, %class.Isa** %__y) local_unnamed_addr #0 comdat {
entry:
%retval1 = alloca [0 x %"struct.std::pair"], align 8
%retval1.sub = getelementptr inbounds [0 x %"struct.std::pair"], [0 x %"struct.std::pair"]* %retval1, i64 0, i64 0
%call = call %class.Isa** @_ZSt7forwardIPK3IsaEOT_RNSt16remove_referenceIS3_E4typeE(%class.Isa** %__x)
%call1 = call %class.Isa** @_ZSt7forwardIPK3IsaEOT_RNSt16remove_referenceIS3_E4typeE(%class.Isa** %__x)
call void @_ZNSt4pairIPK3IsaS2_EC2IS2_S2_Lb1EEEOT_OT0_(%"struct.std::pair"* nonnull %retval1.sub, %class.Isa** %__x, %class.Isa** %__y)
%.elt = getelementptr inbounds [0 x %"struct.std::pair"], [0 x %"struct.std::pair"]* %retval1, i64 0, i64 0, i32 0
%.unpack = load %class.Isa*, %class.Isa** %.elt, align 8
%0 = insertvalue { %class.Isa*, %class.Isa* } undef, %class.Isa* %.unpack, 0
%1 = getelementptr inbounds [0 x %"struct.std::pair"], [0 x %"struct.std::pair"]* %retval1, i64 0, i64 0, i32 1
%.unpack3 = load %class.Isa*, %class.Isa** %1, align 8
%2 = insertvalue { %class.Isa*, %class.Isa* } %0, %class.Isa* %.unpack3, 1
ret { %class.Isa*, %class.Isa* } %2
}
; Function Attrs: sanitize_address
define linkonce_odr %class.Isa* @_ZSt5beginIK3IsaLm75EEPT_RAT0__S2_([75 x %class.Isa]* %__arr) local_unnamed_addr #0 comdat {
entry:
%arraydecay = getelementptr inbounds [75 x %class.Isa], [75 x %class.Isa]* %__arr, i64 0, i64 0
ret %class.Isa* %arraydecay
}
; Function Attrs: sanitize_address
define linkonce_odr %class.Isa* @_ZSt3endIK3IsaLm75EEPT_RAT0__S2_([75 x %class.Isa]* %__arr) local_unnamed_addr #0 comdat {
entry:
%add.ptr = getelementptr inbounds [75 x %class.Isa], [75 x %class.Isa]* %__arr, i64 0, i64 75
ret %class.Isa* %add.ptr
}
; Function Attrs: sanitize_address
define %class.Isa* @_ZN3Isa7findIsaEjjjNS_7FeatureES0_(i32 %versionMajor, i32 %versionStepping, i32* %versionMajor.addr, %class.anon* %agg.tmp, i32** %0, %class.Isa** %isaIter, %class.Isa* %1) local_unnamed_addr #0 {
entry:
%agg.tmp32 = alloca [0 x %class.anon], align 8
%versionStepping.addr = alloca i32, align 4
%agg.tmp32.sub = getelementptr inbounds [0 x %class.anon], [0 x %class.anon]* %agg.tmp32, i64 0, i64 0
store i32 %versionMajor, i32* %versionMajor.addr, align 4
store i32 %versionMajor, i32* %versionStepping.addr, align 4
%call = call { %class.Isa*, %class.Isa* } @_ZN3Isa13supportedIsasEv()
%2 = extractvalue { %class.Isa*, %class.Isa* } %call, 0
%3 = extractvalue { %class.Isa*, %class.Isa* } %call, 1
%4 = getelementptr inbounds [0 x %class.anon], [0 x %class.anon]* %agg.tmp32, i64 0, i64 0, i32 0
store i32* %versionMajor.addr, i32** %4, align 8
store i32* null, i32** %0, align 8
%5 = getelementptr inbounds [0 x %class.anon], [0 x %class.anon]* %agg.tmp32, i64 0, i64 0, i32 2
store i32* %versionStepping.addr, i32** %5, align 8
%call1 = call fastcc %class.Isa* @"_ZSt7find_ifIPK3IsaZNS0_7findIsaEjjjNS0_7FeatureES3_E3$_0ET_S5_S5_T0_"(%class.Isa* %2, %class.Isa* %3, %class.anon* nonnull %agg.tmp32.sub)
%cmp = icmp eq %class.Isa* %call1, %3
%spec.select = select i1 %cmp, %class.Isa* null, %class.Isa* %1
ret %class.Isa* %spec.select
}
; Function Attrs: sanitize_address
define internal fastcc %class.Isa* @"_ZSt7find_ifIPK3IsaZNS0_7findIsaEjjjNS0_7FeatureES3_E3$_0ET_S5_S5_T0_"(%class.Isa* %__first, %class.Isa* %__last, %class.anon* %__pred) unnamed_addr #0 {
entry:
%agg.tmp = alloca %"struct.__gnu_cxx::__ops::_Iter_pred", align 8
call fastcc void @"_ZN9__gnu_cxx5__ops11__pred_iterIZN3Isa7findIsaEjjjNS2_7FeatureES3_E3$_0EENS0_10_Iter_predIT_EES6_"(%"struct.__gnu_cxx::__ops::_Iter_pred"* nonnull %agg.tmp, %class.anon* %__pred)
%call = call fastcc %class.Isa* @"_ZSt9__find_ifIPK3IsaN9__gnu_cxx5__ops10_Iter_predIZNS0_7findIsaEjjjNS0_7FeatureES6_E3$_0EEET_S9_S9_T0_"(%class.Isa* %__first, %class.Isa* %__last, %"struct.__gnu_cxx::__ops::_Iter_pred"* nonnull %agg.tmp)
ret %class.Isa* %call
}
; Function Attrs: sanitize_address
define linkonce_odr %class.Isa** @_ZSt7forwardIPK3IsaEOT_RNSt16remove_referenceIS3_E4typeE(%class.Isa** %__t) local_unnamed_addr #0 comdat {
entry:
ret %class.Isa** %__t
}
; Function Attrs: sanitize_address
define linkonce_odr void @_ZNSt4pairIPK3IsaS2_EC2IS2_S2_Lb1EEEOT_OT0_(%"struct.std::pair"* %this, %class.Isa** %__x, %class.Isa** %__y) local_unnamed_addr #0 comdat {
entry:
%first = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %this, i64 0, i32 0
%call = call %class.Isa** @_ZSt7forwardIPK3IsaEOT_RNSt16remove_referenceIS3_E4typeE(%class.Isa** %__x)
%0 = load %class.Isa*, %class.Isa** %__x, align 8
store %class.Isa* %0, %class.Isa** %first, align 8
%second = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %this, i64 0, i32 1
%call2 = call %class.Isa** @_ZSt7forwardIPK3IsaEOT_RNSt16remove_referenceIS3_E4typeE(%class.Isa** nonnull %__x)
%1 = load %class.Isa*, %class.Isa** %__y, align 8
store %class.Isa* %1, %class.Isa** %second, align 8
ret void
}
; Function Attrs: sanitize_address
define internal fastcc %class.Isa* @"_ZSt9__find_ifIPK3IsaN9__gnu_cxx5__ops10_Iter_predIZNS0_7findIsaEjjjNS0_7FeatureES6_E3$_0EEET_S9_S9_T0_"(%class.Isa* %__first, %class.Isa* %__last, %"struct.__gnu_cxx::__ops::_Iter_pred"* %__pred) unnamed_addr #0 {
entry:
%call = call fastcc %class.Isa* @"_ZSt9__find_ifIPK3IsaN9__gnu_cxx5__ops10_Iter_predIZNS0_7findIsaEjjjNS0_7FeatureES6_E3$_0EEET_S9_S9_T0_St26random_access_iterator_tag"(%class.Isa* %__first, %class.Isa* %__last, %"struct.__gnu_cxx::__ops::_Iter_pred"* %__pred)
ret %class.Isa* %call
}
; Function Attrs: sanitize_address
define internal fastcc void @"_ZN9__gnu_cxx5__ops11__pred_iterIZN3Isa7findIsaEjjjNS2_7FeatureES3_E3$_0EENS0_10_Iter_predIT_EES6_"(%"struct.__gnu_cxx::__ops::_Iter_pred"* sret(%"struct.__gnu_cxx::__ops::_Iter_pred") %agg.result, %class.anon* %__pred) unnamed_addr #0 {
entry:
%agg.tmp1 = alloca [0 x %class.anon], align 8
%agg.tmp1.sub = getelementptr inbounds [0 x %class.anon], [0 x %class.anon]* %agg.tmp1, i64 0, i64 0
call fastcc void @"_ZSt4moveIRZN3Isa7findIsaEjjjNS0_7FeatureES1_E3$_0EONSt16remove_referenceIT_E4typeEOS5_"()
%0 = bitcast [0 x %class.anon]* %agg.tmp1 to i8*
%1 = bitcast %class.anon* %__pred to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8 dereferenceable(40) %0, i8* noundef nonnull align 1 dereferenceable(40) %1, i64 40, i1 false)
call fastcc void @"_ZN9__gnu_cxx5__ops10_Iter_predIZN3Isa7findIsaEjjjNS2_7FeatureES3_E3$_0EC2ES4_"(%"struct.__gnu_cxx::__ops::_Iter_pred"* %agg.result, %class.anon* nonnull %agg.tmp1.sub)
ret void
}
; Function Attrs: argmemonly mustprogress nofree nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #1
; Function Attrs: sanitize_address
define internal fastcc %class.Isa* @"_ZSt9__find_ifIPK3IsaN9__gnu_cxx5__ops10_Iter_predIZNS0_7findIsaEjjjNS0_7FeatureES6_E3$_0EEET_S9_S9_T0_St26random_access_iterator_tag"(%class.Isa* %__first, %class.Isa* %__last, %"struct.__gnu_cxx::__ops::_Iter_pred"* %__pred) unnamed_addr #0 {
entry:
%sub.ptr.lhs.cast = ptrtoint %class.Isa* %__last to i64
%sub.ptr.rhs.cast = ptrtoint %class.Isa* %__first to i64
%sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast
%shr = ashr i64 %sub.ptr.sub, 6
br label %for.cond
for.cond: ; preds = %if.end, %entry
%__trip_count.0 = phi i64 [ %shr, %entry ], [ %dec, %if.end ]
%__first.addr.0 = phi %class.Isa* [ %__first, %entry ], [ %incdec.ptr8, %if.end ]
%cmp = icmp sgt i64 %__trip_count.0, 0
br i1 %cmp, label %for.body, label %for.end
for.body: ; preds = %for.cond
%call = call fastcc i1 @"_ZN9__gnu_cxx5__ops10_Iter_predIZN3Isa7findIsaEjjjNS2_7FeatureES3_E3$_0EclIPKS2_EEbT_"(%"struct.__gnu_cxx::__ops::_Iter_pred"* %__pred, %class.Isa* %__first.addr.0)
br i1 %call, label %cleanup, label %if.end
if.end: ; preds = %for.body
%incdec.ptr8 = getelementptr inbounds %class.Isa, %class.Isa* %__first.addr.0, i64 3
%dec = add nsw i64 %__trip_count.0, -1
br label %for.cond
for.end: ; preds = %for.cond
%sub.ptr.rhs.cast14 = ptrtoint %class.Isa* %__first.addr.0 to i64
%sub.ptr.sub15 = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast14
%0 = and i64 %sub.ptr.sub15, -2
%switch = icmp eq i64 %0, 2
br i1 %switch, label %sw.bb21, label %cleanup
sw.bb21: ; preds = %for.end
%call22 = call fastcc i1 @"_ZN9__gnu_cxx5__ops10_Iter_predIZN3Isa7findIsaEjjjNS2_7FeatureES3_E3$_0EclIPKS2_EEbT_"(%"struct.__gnu_cxx::__ops::_Iter_pred"* null, %class.Isa* null)
br label %cleanup
cleanup: ; preds = %sw.bb21, %for.end, %for.body
%retval.0 = phi %class.Isa* [ %__first.addr.0, %for.body ], [ %__last, %for.end ], [ %__last, %sw.bb21 ]
ret %class.Isa* %retval.0
}
; Function Attrs: sanitize_address
define internal fastcc i1 @"_ZN9__gnu_cxx5__ops10_Iter_predIZN3Isa7findIsaEjjjNS2_7FeatureES3_E3$_0EclIPKS2_EEbT_"(%"struct.__gnu_cxx::__ops::_Iter_pred"* %this, %class.Isa* %__it) unnamed_addr #0 {
entry:
%_M_pred = getelementptr inbounds %"struct.__gnu_cxx::__ops::_Iter_pred", %"struct.__gnu_cxx::__ops::_Iter_pred"* %this, i64 0, i32 0
%call1 = call fastcc i1 @"_ZZN3Isa7findIsaEjjjNS_7FeatureES0_ENK3$_0clERKS_"(%class.anon* %_M_pred, %class.Isa* %__it)
ret i1 %call1
}
; Function Attrs: sanitize_address
define internal fastcc i1 @"_ZZN3Isa7findIsaEjjjNS_7FeatureES0_ENK3$_0clERKS_"(%class.anon* %this, %class.Isa* %isa) unnamed_addr #0 {
entry:
%0 = getelementptr inbounds %class.anon, %class.anon* %this, i64 0, i32 0
%1 = load i32*, i32** %0, align 8
%2 = load i32, i32* %1, align 4
%versionMajor_ = getelementptr inbounds %class.Isa, %class.Isa* %isa, i64 0, i32 0
%3 = load i32, i32* %versionMajor_, align 4
%cmp = icmp eq i32 %2, %3
br i1 %cmp, label %land.lhs.true, label %land.end
land.lhs.true: ; preds = %entry
%4 = getelementptr inbounds %class.anon, %class.anon* %this, i64 0, i32 2
%5 = load i32*, i32** %4, align 8
%6 = load i32, i32* %5, align 4
%versionStepping_ = getelementptr inbounds %class.Isa, %class.Isa* %isa, i64 0, i32 2
%7 = load i32, i32* %versionStepping_, align 4
%cmp4 = icmp eq i32 %6, %7
br label %land.end
land.end: ; preds = %land.lhs.true, %entry
%8 = phi i1 [ false, %entry ], [ %cmp4, %land.lhs.true ]
ret i1 %8
}
define internal fastcc void @"_ZSt4moveIRZN3Isa7findIsaEjjjNS0_7FeatureES1_E3$_0EONSt16remove_referenceIT_E4typeEOS5_"() unnamed_addr {
entry:
ret void
}
; Function Attrs: sanitize_address
define internal fastcc void @"_ZN9__gnu_cxx5__ops10_Iter_predIZN3Isa7findIsaEjjjNS2_7FeatureES3_E3$_0EC2ES4_"(%"struct.__gnu_cxx::__ops::_Iter_pred"* %this, %class.anon* %__pred) unnamed_addr #0 {
entry:
call fastcc void @"_ZSt4moveIRZN3Isa7findIsaEjjjNS0_7FeatureES1_E3$_0EONSt16remove_referenceIT_E4typeEOS5_"()
%0 = bitcast %"struct.__gnu_cxx::__ops::_Iter_pred"* %this to i8*
%1 = bitcast %class.anon* %__pred to i8*
%2 = load i8, i8* %1, align 1
store i8 %2, i8* %0, align 1
ret void
}
attributes #0 = { sanitize_address }
attributes #1 = { argmemonly mustprogress nofree nounwind willreturn }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment