Skip to content

Instantly share code, notes, and snippets.

@Aatch Aatch/discriminant_value.ll Secret
Created Jan 21, 2015

Embed
What would you like to do?
define zeroext i1 @_ZN18SqlState.PartialEq2eq20h064d98db67f25518IMaE(%enum.SqlState* noalias readonly dereferenceable(32), %enum.SqlState* noalias readonly dereferenceable(32)) unnamed_addr #5 {
entry-block:
%overloaded_deref.i.i = alloca %str_slice, align 8
%overloaded_deref1.i.i = alloca %str_slice, align 8
%2 = getelementptr inbounds %enum.SqlState* %1, i64 0, i32 0
%3 = load i64* %2, align 8, !range !0
%cond = icmp eq i64 %3, 232
%4 = getelementptr inbounds %enum.SqlState* %0, i64 0, i32 0
%5 = load i64* %4, align 8
%cond4 = icmp eq i64 %5, 232
%or.cond = and i1 %cond, %cond4
br i1 %or.cond, label %match_case3, label %case_body1
case_body1: ; preds = %entry-block
%6 = icmp eq i64 %5, %3
br label %join
match_case3: ; preds = %entry-block
%7 = getelementptr inbounds %enum.SqlState* %1, i64 0, i32 2
%8 = bitcast [3 x i64]* %7 to %"struct.collections::string::String[#3]"*
%9 = getelementptr inbounds %enum.SqlState* %0, i64 0, i32 2
%10 = bitcast [3 x i64]* %9 to %"struct.collections::string::String[#3]"*
%11 = bitcast %str_slice* %overloaded_deref.i.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %11), !noalias !26
call void @_ZN6string17String.ops..Deref5deref20h926cab6012bf2acekGiE(%str_slice* noalias nocapture sret dereferenceable(16) %overloaded_deref.i.i, %"struct.collections::string::String[#3]"* noalias readonly dereferenceable(24) %10), !noalias !30
%12 = getelementptr inbounds %str_slice* %overloaded_deref.i.i, i64 0, i32 0
%13 = load i8** %12, align 8, !noalias !26
%14 = getelementptr inbounds %str_slice* %overloaded_deref.i.i, i64 0, i32 1
%15 = load i64* %14, align 8, !noalias !26
%16 = bitcast %str_slice* %overloaded_deref1.i.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %16), !noalias !26
call void @_ZN6string17String.ops..Deref5deref20h926cab6012bf2acekGiE(%str_slice* noalias nocapture sret dereferenceable(16) %overloaded_deref1.i.i, %"struct.collections::string::String[#3]"* noalias readonly dereferenceable(24) %8)
%17 = getelementptr inbounds %str_slice* %overloaded_deref1.i.i, i64 0, i32 1
%18 = load i64* %17, align 8, !noalias !26
%19 = icmp eq i64 %15, %18
br i1 %19, label %before_rhs.i.i.i.i.i, label %join
before_rhs.i.i.i.i.i: ; preds = %match_case3
%20 = getelementptr inbounds %str_slice* %overloaded_deref1.i.i, i64 0, i32 0
%21 = load i8** %20, align 8, !noalias !26
%22 = tail call i32 @memcmp(i8* %13, i8* %21, i64 %15) #7, !noalias !31
%23 = icmp eq i32 %22, 0
br label %join
join: ; preds = %before_rhs.i.i.i.i.i, %match_case3, %case_body1
%.sink = phi i1 [ %6, %case_body1 ], [ false, %match_case3 ], [ %23, %before_rhs.i.i.i.i.i ]
ret i1 %.sink
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.