Skip to content

Instantly share code, notes, and snippets.

@mkeeter mkeeter/main.ll
Created Dec 23, 2018

Embed
What would you like to do?
; ModuleID = 'main.cpp'
source_filename = "main.cpp"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.13.0"
%"class.std::__1::unordered_set" = type { %"class.std::__1::__hash_table" }
%"class.std::__1::__hash_table" = type <{ %"class.std::__1::unique_ptr", %"class.std::__1::__compressed_pair.4", %"class.std::__1::__compressed_pair.9", %"class.std::__1::__compressed_pair.11", [4 x i8] }>
%"class.std::__1::unique_ptr" = type { %"class.std::__1::__compressed_pair" }
%"class.std::__1::__compressed_pair" = type { %"struct.std::__1::__compressed_pair_elem", %"struct.std::__1::__compressed_pair_elem.0" }
%"struct.std::__1::__compressed_pair_elem" = type { %"struct.std::__1::__hash_node_base"** }
%"struct.std::__1::__hash_node_base" = type { %"struct.std::__1::__hash_node_base"* }
%"struct.std::__1::__compressed_pair_elem.0" = type { %"class.std::__1::__bucket_list_deallocator" }
%"class.std::__1::__bucket_list_deallocator" = type { %"class.std::__1::__compressed_pair.1" }
%"class.std::__1::__compressed_pair.1" = type { %"struct.std::__1::__compressed_pair_elem.2" }
%"struct.std::__1::__compressed_pair_elem.2" = type { i64 }
%"class.std::__1::__compressed_pair.4" = type { %"struct.std::__1::__compressed_pair_elem.5" }
%"struct.std::__1::__compressed_pair_elem.5" = type { %"struct.std::__1::__hash_node_base" }
%"class.std::__1::__compressed_pair.9" = type { %"struct.std::__1::__compressed_pair_elem.2" }
%"class.std::__1::__compressed_pair.11" = type { %"struct.std::__1::__compressed_pair_elem.12" }
%"struct.std::__1::__compressed_pair_elem.12" = type { float }
%"class.std::length_error" = type { %"class.std::logic_error" }
%"class.std::logic_error" = type { %"class.std::exception", %"class.std::__1::__libcpp_refstring" }
%"class.std::exception" = type { i32 (...)** }
%"class.std::__1::__libcpp_refstring" = type { i8* }
@.str = private unnamed_addr constant [25 x i8] c"%ld %ld %ld %ld %ld %ld\0A\00", align 1
@.str.2 = private unnamed_addr constant [13 x i8] c"Part 1: %ld\0A\00", align 1
@.str.3 = private unnamed_addr constant [13 x i8] c"Part 2: %ld\0A\00", align 1
@.str.4 = private unnamed_addr constant [68 x i8] c"allocator<T>::allocate(size_t n) 'n' exceeds maximum supported size\00", align 1
@_ZTISt12length_error = external constant i8*
@_ZTVSt12length_error = external unnamed_addr constant { [5 x i8*] }, align 8
; Function Attrs: nounwind ssp uwtable
define void @_Z9printRegsPl(i64* nocapture readonly) local_unnamed_addr #0 {
%2 = load i64, i64* %0, align 8, !tbaa !3
%3 = getelementptr inbounds i64, i64* %0, i64 1
%4 = load i64, i64* %3, align 8, !tbaa !3
%5 = getelementptr inbounds i64, i64* %0, i64 2
%6 = load i64, i64* %5, align 8, !tbaa !3
%7 = getelementptr inbounds i64, i64* %0, i64 3
%8 = load i64, i64* %7, align 8, !tbaa !3
%9 = getelementptr inbounds i64, i64* %0, i64 4
%10 = load i64, i64* %9, align 8, !tbaa !3
%11 = getelementptr inbounds i64, i64* %0, i64 5
%12 = load i64, i64* %11, align 8, !tbaa !3
%13 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i64 %2, i64 %4, i64 %6, i64 %8, i64 %10, i64 %12)
ret void
}
; Function Attrs: nounwind
declare i32 @printf(i8* nocapture readonly, ...) local_unnamed_addr #1
; Function Attrs: norecurse ssp uwtable
define i32 @main(i32, i8** nocapture readonly) local_unnamed_addr #2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
%3 = alloca [6 x i64], align 16
%4 = alloca %"class.std::__1::unordered_set", align 8
%5 = bitcast [6 x i64]* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %5) #11
call void @llvm.memset.p0i8.i64(i8* nonnull %5, i8 0, i64 48, i32 16, i1 false)
%6 = icmp sgt i32 %0, 6
%7 = add nsw i32 %0, -1
%8 = select i1 %6, i32 6, i32 %7
%9 = icmp sgt i32 %8, 0
br i1 %9, label %10, label %12
; <label>:10: ; preds = %2
%11 = zext i32 %8 to i64
br label %29
; <label>:12: ; preds = %29, %2
%13 = bitcast %"class.std::__1::unordered_set"* %4 to i8*
call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %13) #11
%14 = getelementptr inbounds %"class.std::__1::unordered_set", %"class.std::__1::unordered_set"* %4, i64 0, i32 0, i32 3, i32 0, i32 0
call void @llvm.memset.p0i8.i64(i8* nonnull %13, i8 0, i64 32, i32 8, i1 false)
store float 1.000000e+00, float* %14, align 8, !tbaa !7
%15 = getelementptr inbounds [6 x i64], [6 x i64]* %3, i64 0, i64 5
store i64 0, i64* %15, align 8, !tbaa !3
%16 = getelementptr inbounds [6 x i64], [6 x i64]* %3, i64 0, i64 3
%17 = getelementptr inbounds [6 x i64], [6 x i64]* %3, i64 0, i64 1
%18 = getelementptr inbounds [6 x i64], [6 x i64]* %3, i64 0, i64 0
%19 = getelementptr inbounds [6 x i64], [6 x i64]* %3, i64 0, i64 4
%20 = getelementptr inbounds %"class.std::__1::unordered_set", %"class.std::__1::unordered_set"* %4, i64 0, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0
%21 = getelementptr inbounds %"class.std::__1::unordered_set", %"class.std::__1::unordered_set"* %4, i64 0, i32 0
%22 = getelementptr inbounds %"class.std::__1::unordered_set", %"class.std::__1::unordered_set"* %4, i64 0, i32 0, i32 2, i32 0, i32 0
%23 = getelementptr inbounds %"class.std::__1::unordered_set", %"class.std::__1::unordered_set"* %4, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
%24 = getelementptr inbounds %"class.std::__1::unordered_set", %"class.std::__1::unordered_set"* %4, i64 0, i32 0, i32 1, i32 0, i32 0
%25 = bitcast %"struct.std::__1::__hash_node_base"* %24 to i64*
%26 = bitcast %"struct.std::__1::__hash_node_base"* %24 to i8**
%27 = load i64, i64* %18, align 16
%28 = load i64, i64* %19, align 16, !tbaa !3
br label %43
; <label>:29: ; preds = %29, %10
%30 = phi i64 [ 0, %10 ], [ %31, %29 ]
%31 = add nuw nsw i64 %30, 1
%32 = getelementptr inbounds i8*, i8** %1, i64 %31
%33 = load i8*, i8** %32, align 8, !tbaa !10
%34 = tail call i32 @atoi(i8* %33)
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds [6 x i64], [6 x i64]* %3, i64 0, i64 %30
store i64 %35, i64* %36, align 8, !tbaa !3
%37 = icmp eq i64 %31, %11
br i1 %37, label %12, label %29
; <label>:38: ; preds = %213
%39 = landingpad { i8*, i32 }
cleanup
%40 = zext i1 %75 to i64
store i64 %73, i64* %16, align 8, !tbaa !3
store i64 %74, i64* %15, align 8, !tbaa !3
store i64 %40, i64* %17, align 8, !tbaa !3
store i64 %72, i64* %19, align 16, !tbaa !3
br label %323
; <label>:41: ; preds = %150
%42 = landingpad { i8*, i32 }
cleanup
br label %323
; <label>:43: ; preds = %300, %12
%44 = phi i64 [ %28, %12 ], [ %72, %300 ]
%45 = phi i64 [ 0, %12 ], [ %301, %300 ]
%46 = phi i64 [ 0, %12 ], [ %74, %300 ]
%47 = phi i64 [ -1, %12 ], [ %74, %300 ]
%48 = or i64 %46, 65536
%49 = and i64 %46, 255
%50 = mul nuw nsw i64 %49, 65899
%51 = add nuw nsw i64 %50, 3486102
%52 = and i64 %51, 16777215
%53 = icmp slt i64 %48, 256
br i1 %53, label %71, label %54
; <label>:54: ; preds = %43
br label %55
; <label>:55: ; preds = %54, %64
%56 = phi i64 [ %69, %64 ], [ %52, %54 ]
%57 = phi i64 [ %59, %64 ], [ %48, %54 ]
br label %58
; <label>:58: ; preds = %58, %55
%59 = phi i64 [ 0, %55 ], [ %63, %58 ]
%60 = shl i64 %59, 8
%61 = add i64 %60, 256
%62 = icmp sgt i64 %61, %57
%63 = add nuw nsw i64 %59, 1
br i1 %62, label %64, label %58
; <label>:64: ; preds = %58
%65 = and i64 %59, 255
%66 = add nuw nsw i64 %56, %65
%67 = and i64 %66, 16777215
%68 = mul nuw nsw i64 %67, 65899
%69 = and i64 %68, 16777215
%70 = icmp ult i64 %59, 256
br i1 %70, label %71, label %55
; <label>:71: ; preds = %64, %43
%72 = phi i64 [ %44, %43 ], [ 1, %64 ]
%73 = phi i64 [ %48, %43 ], [ %59, %64 ]
%74 = phi i64 [ %52, %43 ], [ %69, %64 ]
%75 = icmp eq i64 %74, %27
%76 = icmp eq i64 %47, -1
br i1 %76, label %77, label %80
; <label>:77: ; preds = %71
%78 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), i64 %74)
%79 = load i64, i64* %20, align 8, !tbaa !3
br label %80
; <label>:80: ; preds = %77, %71
%81 = phi i64 [ %79, %77 ], [ %45, %71 ]
%82 = icmp eq i64 %81, 0
br i1 %82, label %213, label %83
; <label>:83: ; preds = %80
%84 = add i64 %81, -1
%85 = and i64 %84, %81
%86 = icmp eq i64 %85, 0
br i1 %86, label %87, label %89
; <label>:87: ; preds = %83
%88 = and i64 %84, %74
br label %93
; <label>:89: ; preds = %83
%90 = icmp ult i64 %74, %81
br i1 %90, label %93, label %91
; <label>:91: ; preds = %89
%92 = urem i64 %74, %81
br label %93
; <label>:93: ; preds = %91, %89, %87
%94 = phi i64 [ %88, %87 ], [ %92, %91 ], [ %74, %89 ]
%95 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %23, align 8, !tbaa !10
%96 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %95, i64 %94
%97 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %96, align 8, !tbaa !10
%98 = icmp eq %"struct.std::__1::__hash_node_base"* %97, null
br i1 %98, label %154, label %99
; <label>:99: ; preds = %93
%100 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %97, i64 0, i32 0
%101 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %100, align 8, !tbaa !12
%102 = icmp eq %"struct.std::__1::__hash_node_base"* %101, null
br i1 %102, label %154, label %103
; <label>:103: ; preds = %99
br i1 %86, label %105, label %104
; <label>:104: ; preds = %103
br label %124
; <label>:105: ; preds = %103
br label %106
; <label>:106: ; preds = %105, %120
%107 = phi %"struct.std::__1::__hash_node_base"* [ %122, %120 ], [ %101, %105 ]
%108 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %107, i64 1
%109 = bitcast %"struct.std::__1::__hash_node_base"* %108 to i64*
%110 = load i64, i64* %109, align 8, !tbaa !14
%111 = icmp eq i64 %110, %74
br i1 %111, label %115, label %112
; <label>:112: ; preds = %106
%113 = and i64 %110, %84
%114 = icmp eq i64 %113, %94
br i1 %114, label %120, label %154
; <label>:115: ; preds = %106
%116 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %107, i64 2
%117 = bitcast %"struct.std::__1::__hash_node_base"* %116 to i64*
%118 = load i64, i64* %117, align 8, !tbaa !3
%119 = icmp eq i64 %118, %74
br i1 %119, label %146, label %120
; <label>:120: ; preds = %115, %112
%121 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %107, i64 0, i32 0
%122 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %121, align 8, !tbaa !12
%123 = icmp eq %"struct.std::__1::__hash_node_base"* %122, null
br i1 %123, label %154, label %106
; <label>:124: ; preds = %104, %142
%125 = phi %"struct.std::__1::__hash_node_base"* [ %144, %142 ], [ %101, %104 ]
%126 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %125, i64 1
%127 = bitcast %"struct.std::__1::__hash_node_base"* %126 to i64*
%128 = load i64, i64* %127, align 8, !tbaa !14
%129 = icmp eq i64 %128, %74
br i1 %129, label %137, label %130
; <label>:130: ; preds = %124
%131 = icmp ult i64 %128, %81
br i1 %131, label %134, label %132
; <label>:132: ; preds = %130
%133 = urem i64 %128, %81
br label %134
; <label>:134: ; preds = %132, %130
%135 = phi i64 [ %133, %132 ], [ %128, %130 ]
%136 = icmp eq i64 %135, %94
br i1 %136, label %142, label %154
; <label>:137: ; preds = %124
%138 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %125, i64 2
%139 = bitcast %"struct.std::__1::__hash_node_base"* %138 to i64*
%140 = load i64, i64* %139, align 8, !tbaa !3
%141 = icmp eq i64 %140, %74
br i1 %141, label %148, label %142
; <label>:142: ; preds = %137, %134
%143 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %125, i64 0, i32 0
%144 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %143, align 8, !tbaa !12
%145 = icmp eq %"struct.std::__1::__hash_node_base"* %144, null
br i1 %145, label %154, label %124
; <label>:146: ; preds = %115
%147 = zext i1 %75 to i64
br label %150
; <label>:148: ; preds = %137
%149 = zext i1 %75 to i64
br label %150
; <label>:150: ; preds = %148, %146
%151 = phi i64 [ %149, %148 ], [ %147, %146 ]
store i64 %73, i64* %16, align 8, !tbaa !3
store i64 %74, i64* %15, align 8, !tbaa !3
store i64 %151, i64* %17, align 8, !tbaa !3
store i64 %72, i64* %19, align 16, !tbaa !3
%152 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.3, i64 0, i64 0), i64 %47)
invoke void @exit(i32 0) #12
to label %153 unwind label %41
; <label>:153: ; preds = %150
unreachable
; <label>:154: ; preds = %142, %134, %120, %112, %99, %93
br i1 %86, label %155, label %157
; <label>:155: ; preds = %154
%156 = and i64 %84, %74
br label %161
; <label>:157: ; preds = %154
%158 = icmp ult i64 %74, %81
br i1 %158, label %161, label %159
; <label>:159: ; preds = %157
%160 = urem i64 %74, %81
br label %161
; <label>:161: ; preds = %159, %157, %155
%162 = phi i64 [ %156, %155 ], [ %160, %159 ], [ %74, %157 ]
%163 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %95, i64 %162
%164 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %163, align 8, !tbaa !10
%165 = icmp eq %"struct.std::__1::__hash_node_base"* %164, null
br i1 %165, label %213, label %166
; <label>:166: ; preds = %161
%167 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %164, i64 0, i32 0
%168 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %167, align 8, !tbaa !12
%169 = icmp eq %"struct.std::__1::__hash_node_base"* %168, null
br i1 %169, label %213, label %170
; <label>:170: ; preds = %166
br i1 %86, label %172, label %171
; <label>:171: ; preds = %170
br label %195
; <label>:172: ; preds = %170
br label %173
; <label>:173: ; preds = %172, %182
%174 = phi %"struct.std::__1::__hash_node_base"* [ %184, %182 ], [ %168, %172 ]
%175 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %174, i64 1
%176 = bitcast %"struct.std::__1::__hash_node_base"* %175 to i64*
%177 = load i64, i64* %176, align 8, !tbaa !14
%178 = icmp eq i64 %177, %74
%179 = and i64 %177, %84
%180 = icmp eq i64 %179, %162
%181 = or i1 %178, %180
br i1 %181, label %186, label %213
; <label>:182: ; preds = %186
%183 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %174, i64 0, i32 0
%184 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %183, align 8, !tbaa !12
%185 = icmp eq %"struct.std::__1::__hash_node_base"* %184, null
br i1 %185, label %213, label %173
; <label>:186: ; preds = %173
%187 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %174, i64 2
%188 = bitcast %"struct.std::__1::__hash_node_base"* %187 to i64*
%189 = load i64, i64* %188, align 8, !tbaa !3
%190 = icmp eq i64 %189, %74
br i1 %190, label %300, label %182
; <label>:191: ; preds = %208
%192 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %196, i64 0, i32 0
%193 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %192, align 8, !tbaa !12
%194 = icmp eq %"struct.std::__1::__hash_node_base"* %193, null
br i1 %194, label %213, label %195
; <label>:195: ; preds = %171, %191
%196 = phi %"struct.std::__1::__hash_node_base"* [ %193, %191 ], [ %168, %171 ]
%197 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %196, i64 1
%198 = bitcast %"struct.std::__1::__hash_node_base"* %197 to i64*
%199 = load i64, i64* %198, align 8, !tbaa !14
%200 = icmp eq i64 %199, %74
br i1 %200, label %208, label %201
; <label>:201: ; preds = %195
%202 = icmp ult i64 %199, %81
br i1 %202, label %205, label %203
; <label>:203: ; preds = %201
%204 = urem i64 %199, %81
br label %205
; <label>:205: ; preds = %203, %201
%206 = phi i64 [ %204, %203 ], [ %199, %201 ]
%207 = icmp eq i64 %206, %162
br i1 %207, label %208, label %213
; <label>:208: ; preds = %205, %195
%209 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %196, i64 2
%210 = bitcast %"struct.std::__1::__hash_node_base"* %209 to i64*
%211 = load i64, i64* %210, align 8, !tbaa !3
%212 = icmp eq i64 %211, %74
br i1 %212, label %300, label %191
; <label>:213: ; preds = %205, %191, %182, %173, %80, %166, %161
%214 = phi i64 [ %162, %161 ], [ %162, %166 ], [ undef, %80 ], [ %162, %173 ], [ %162, %182 ], [ %162, %191 ], [ %162, %205 ]
%215 = invoke i8* @_Znwm(i64 24) #13
to label %216 unwind label %38
; <label>:216: ; preds = %213
%217 = getelementptr inbounds i8, i8* %215, i64 16
%218 = bitcast i8* %217 to i64*
store i64 %74, i64* %218, align 8, !tbaa !3, !noalias !16
%219 = getelementptr inbounds i8, i8* %215, i64 8
%220 = bitcast i8* %219 to i64*
store i64 %74, i64* %220, align 8, !tbaa !14, !noalias !16
%221 = bitcast i8* %215 to %"struct.std::__1::__hash_node_base"**
store %"struct.std::__1::__hash_node_base"* null, %"struct.std::__1::__hash_node_base"** %221, align 8, !tbaa !12, !noalias !16
%222 = load i64, i64* %22, align 8, !tbaa !3
%223 = add i64 %222, 1
%224 = uitofp i64 %223 to float
%225 = uitofp i64 %81 to float
%226 = load float, float* %14, align 8, !tbaa !19
%227 = fmul float %226, %225
%228 = fcmp olt float %227, %224
%229 = or i1 %82, %228
br i1 %229, label %230, label %257
; <label>:230: ; preds = %216
%231 = shl i64 %81, 1
%232 = icmp ugt i64 %81, 2
br i1 %232, label %233, label %238
; <label>:233: ; preds = %230
%234 = add i64 %81, -1
%235 = and i64 %234, %81
%236 = icmp ne i64 %235, 0
%237 = zext i1 %236 to i64
br label %238
; <label>:238: ; preds = %233, %230
%239 = phi i64 [ 1, %230 ], [ %237, %233 ]
%240 = or i64 %239, %231
%241 = fdiv float %224, %226
%242 = call float @llvm.ceil.f32(float %241) #11
%243 = fptoui float %242 to i64
%244 = icmp ult i64 %240, %243
%245 = select i1 %244, i64 %243, i64 %240
invoke void @_ZNSt3__112__hash_tableIlNS_4hashIlEENS_8equal_toIlEENS_9allocatorIlEEE6rehashEm(%"class.std::__1::__hash_table"* nonnull %21, i64 %245)
to label %246 unwind label %297
; <label>:246: ; preds = %238
%247 = load i64, i64* %20, align 8, !tbaa !3
%248 = add i64 %247, -1
%249 = and i64 %248, %247
%250 = icmp eq i64 %249, 0
br i1 %250, label %251, label %253
; <label>:251: ; preds = %246
%252 = and i64 %248, %74
br label %257
; <label>:253: ; preds = %246
%254 = icmp ult i64 %74, %247
br i1 %254, label %257, label %255
; <label>:255: ; preds = %253
%256 = urem i64 %74, %247
br label %257
; <label>:257: ; preds = %255, %253, %251, %216
%258 = phi i64 [ %214, %216 ], [ %252, %251 ], [ %256, %255 ], [ %74, %253 ]
%259 = phi i64 [ %81, %216 ], [ %247, %251 ], [ %247, %255 ], [ %247, %253 ]
%260 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %23, align 8, !tbaa !10
%261 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %260, i64 %258
%262 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %261, align 8, !tbaa !10
%263 = icmp eq %"struct.std::__1::__hash_node_base"* %262, null
br i1 %263, label %264, label %287
; <label>:264: ; preds = %257
%265 = load i64, i64* %25, align 8, !tbaa !12
%266 = bitcast i8* %215 to i64*
store i64 %265, i64* %266, align 8, !tbaa !12
store i8* %215, i8** %26, align 8, !tbaa !12
store %"struct.std::__1::__hash_node_base"* %24, %"struct.std::__1::__hash_node_base"** %261, align 8, !tbaa !10
%267 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %221, align 8, !tbaa !12
%268 = icmp eq %"struct.std::__1::__hash_node_base"* %267, null
br i1 %268, label %294, label %269
; <label>:269: ; preds = %264
%270 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %267, i64 1
%271 = bitcast %"struct.std::__1::__hash_node_base"* %270 to i64*
%272 = load i64, i64* %271, align 8, !tbaa !14
%273 = add i64 %259, -1
%274 = and i64 %273, %259
%275 = icmp eq i64 %274, 0
br i1 %275, label %276, label %278
; <label>:276: ; preds = %269
%277 = and i64 %272, %273
br label %282
; <label>:278: ; preds = %269
%279 = icmp ult i64 %272, %259
br i1 %279, label %282, label %280
; <label>:280: ; preds = %278
%281 = urem i64 %272, %259
br label %282
; <label>:282: ; preds = %280, %278, %276
%283 = phi i64 [ %277, %276 ], [ %281, %280 ], [ %272, %278 ]
%284 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %23, align 8, !tbaa !10
%285 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %284, i64 %283
%286 = bitcast %"struct.std::__1::__hash_node_base"** %285 to i8**
br label %292
; <label>:287: ; preds = %257
%288 = bitcast %"struct.std::__1::__hash_node_base"* %262 to i64*
%289 = load i64, i64* %288, align 8, !tbaa !12
%290 = bitcast i8* %215 to i64*
store i64 %289, i64* %290, align 8, !tbaa !12
%291 = bitcast %"struct.std::__1::__hash_node_base"* %262 to i8**
br label %292
; <label>:292: ; preds = %282, %287
%293 = phi i8** [ %291, %287 ], [ %286, %282 ]
store i8* %215, i8** %293, align 8, !tbaa !10
br label %294
; <label>:294: ; preds = %292, %264
%295 = load i64, i64* %22, align 8, !tbaa !3
%296 = add i64 %295, 1
store i64 %296, i64* %22, align 8, !tbaa !3
br label %300
; <label>:297: ; preds = %238
%298 = landingpad { i8*, i32 }
cleanup
%299 = zext i1 %75 to i64
store i64 %73, i64* %16, align 8, !tbaa !3
store i64 %74, i64* %15, align 8, !tbaa !3
store i64 %299, i64* %17, align 8, !tbaa !3
store i64 %72, i64* %19, align 16, !tbaa !3
call void @_ZdlPv(i8* nonnull %215) #14
br label %323
; <label>:300: ; preds = %208, %186, %294
%301 = phi i64 [ %259, %294 ], [ %81, %186 ], [ %81, %208 ]
br i1 %75, label %302, label %43
; <label>:302: ; preds = %300
%303 = zext i1 %75 to i64
store i64 %73, i64* %16, align 8, !tbaa !3
store i64 %74, i64* %15, align 8, !tbaa !3
store i64 %303, i64* %17, align 8, !tbaa !3
store i64 %72, i64* %19, align 16, !tbaa !3
%304 = zext i1 %75 to i64
%305 = getelementptr inbounds [6 x i64], [6 x i64]* %3, i64 0, i64 2
store i64 29, i64* %305, align 16, !tbaa !3
%306 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0), i64 %74, i64 %304, i64 29, i64 %73, i64 %72, i64 %74) #11
%307 = getelementptr inbounds %"class.std::__1::unordered_set", %"class.std::__1::unordered_set"* %4, i64 0, i32 0, i32 1, i32 0, i32 0, i32 0
%308 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %307, align 8, !tbaa !12
%309 = icmp eq %"struct.std::__1::__hash_node_base"* %308, null
br i1 %309, label %317, label %310
; <label>:310: ; preds = %302
br label %311
; <label>:311: ; preds = %310, %311
%312 = phi %"struct.std::__1::__hash_node_base"* [ %314, %311 ], [ %308, %310 ]
%313 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %312, i64 0, i32 0
%314 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %313, align 8, !tbaa !12
%315 = bitcast %"struct.std::__1::__hash_node_base"* %312 to i8*
call void @_ZdlPv(i8* %315) #14
%316 = icmp eq %"struct.std::__1::__hash_node_base"* %314, null
br i1 %316, label %317, label %311
; <label>:317: ; preds = %311, %302
%318 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %23, align 8, !tbaa !10
store %"struct.std::__1::__hash_node_base"** null, %"struct.std::__1::__hash_node_base"*** %23, align 8, !tbaa !10
%319 = icmp eq %"struct.std::__1::__hash_node_base"** %318, null
br i1 %319, label %322, label %320
; <label>:320: ; preds = %317
%321 = bitcast %"struct.std::__1::__hash_node_base"** %318 to i8*
call void @_ZdlPv(i8* %321) #14
br label %322
; <label>:322: ; preds = %317, %320
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %13) #11
call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %5) #11
ret i32 0
; <label>:323: ; preds = %38, %41, %297
%324 = phi { i8*, i32 } [ %298, %297 ], [ %39, %38 ], [ %42, %41 ]
%325 = getelementptr inbounds %"class.std::__1::unordered_set", %"class.std::__1::unordered_set"* %4, i64 0, i32 0, i32 1, i32 0, i32 0, i32 0
%326 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %325, align 8, !tbaa !12
%327 = icmp eq %"struct.std::__1::__hash_node_base"* %326, null
br i1 %327, label %335, label %328
; <label>:328: ; preds = %323
br label %329
; <label>:329: ; preds = %328, %329
%330 = phi %"struct.std::__1::__hash_node_base"* [ %332, %329 ], [ %326, %328 ]
%331 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %330, i64 0, i32 0
%332 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %331, align 8, !tbaa !12
%333 = bitcast %"struct.std::__1::__hash_node_base"* %330 to i8*
call void @_ZdlPv(i8* %333) #14
%334 = icmp eq %"struct.std::__1::__hash_node_base"* %332, null
br i1 %334, label %335, label %329
; <label>:335: ; preds = %329, %323
%336 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %23, align 8, !tbaa !10
store %"struct.std::__1::__hash_node_base"** null, %"struct.std::__1::__hash_node_base"*** %23, align 8, !tbaa !10
%337 = icmp eq %"struct.std::__1::__hash_node_base"** %336, null
br i1 %337, label %340, label %338
; <label>:338: ; preds = %335
%339 = bitcast %"struct.std::__1::__hash_node_base"** %336 to i8*
call void @_ZdlPv(i8* %339) #14
br label %340
; <label>:340: ; preds = %338, %335
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %13) #11
call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %5) #11
resume { i8*, i32 } %324
}
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #3
; Function Attrs: argmemonly nounwind
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i32, i1) #3
; Function Attrs: nounwind readonly
declare i32 @atoi(i8* nocapture) local_unnamed_addr #4
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #3
declare i32 @__gxx_personality_v0(...)
; Function Attrs: noreturn
declare void @exit(i32) local_unnamed_addr #5
; Function Attrs: nobuiltin nounwind
declare void @_ZdlPv(i8*) local_unnamed_addr #6
; Function Attrs: ssp uwtable
define linkonce_odr void @_ZNSt3__112__hash_tableIlNS_4hashIlEENS_8equal_toIlEENS_9allocatorIlEEE6rehashEm(%"class.std::__1::__hash_table"*, i64) local_unnamed_addr #7 align 2 {
%3 = icmp eq i64 %1, 1
br i1 %3, label %10, label %4
; <label>:4: ; preds = %2
%5 = add i64 %1, -1
%6 = and i64 %5, %1
%7 = icmp eq i64 %6, 0
br i1 %7, label %10, label %8
; <label>:8: ; preds = %4
%9 = tail call i64 @_ZNSt3__112__next_primeEm(i64 %1)
br label %10
; <label>:10: ; preds = %2, %4, %8
%11 = phi i64 [ %1, %4 ], [ %9, %8 ], [ 2, %2 ]
%12 = getelementptr inbounds %"class.std::__1::__hash_table", %"class.std::__1::__hash_table"* %0, i64 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0
%13 = load i64, i64* %12, align 8, !tbaa !3
%14 = icmp ugt i64 %11, %13
br i1 %14, label %15, label %16
; <label>:15: ; preds = %10
tail call void @_ZNSt3__112__hash_tableIlNS_4hashIlEENS_8equal_toIlEENS_9allocatorIlEEE8__rehashEm(%"class.std::__1::__hash_table"* nonnull %0, i64 %11)
br label %49
; <label>:16: ; preds = %10
%17 = icmp ult i64 %11, %13
br i1 %17, label %18, label %49
; <label>:18: ; preds = %16
%19 = icmp ugt i64 %13, 2
br i1 %19, label %20, label %24
; <label>:20: ; preds = %18
%21 = add i64 %13, -1
%22 = and i64 %21, %13
%23 = icmp eq i64 %22, 0
br label %24
; <label>:24: ; preds = %18, %20
%25 = phi i1 [ false, %18 ], [ %23, %20 ]
%26 = getelementptr inbounds %"class.std::__1::__hash_table", %"class.std::__1::__hash_table"* %0, i64 0, i32 2, i32 0, i32 0
%27 = load i64, i64* %26, align 8, !tbaa !3
%28 = uitofp i64 %27 to float
%29 = getelementptr inbounds %"class.std::__1::__hash_table", %"class.std::__1::__hash_table"* %0, i64 0, i32 3, i32 0, i32 0
%30 = load float, float* %29, align 4, !tbaa !19
%31 = fdiv float %28, %30
%32 = tail call float @llvm.ceil.f32(float %31) #11
%33 = fptoui float %32 to i64
br i1 %25, label %34, label %41
; <label>:34: ; preds = %24
%35 = icmp ult i64 %33, 2
br i1 %35, label %43, label %36
; <label>:36: ; preds = %34
%37 = add i64 %33, -1
%38 = tail call i64 @llvm.ctlz.i64(i64 %37, i1 true) #11, !range !20
%39 = sub nsw i64 64, %38
%40 = shl i64 1, %39
br label %43
; <label>:41: ; preds = %24
%42 = tail call i64 @_ZNSt3__112__next_primeEm(i64 %33)
br label %43
; <label>:43: ; preds = %36, %34, %41
%44 = phi i64 [ %42, %41 ], [ %40, %36 ], [ %33, %34 ]
%45 = icmp ult i64 %11, %44
%46 = select i1 %45, i64 %44, i64 %11
%47 = icmp ult i64 %46, %13
br i1 %47, label %48, label %49
; <label>:48: ; preds = %43
tail call void @_ZNSt3__112__hash_tableIlNS_4hashIlEENS_8equal_toIlEENS_9allocatorIlEEE8__rehashEm(%"class.std::__1::__hash_table"* nonnull %0, i64 %46)
br label %49
; <label>:49: ; preds = %16, %48, %43, %15
ret void
}
declare i8* @__cxa_allocate_exception(i64) local_unnamed_addr
declare void @__cxa_free_exception(i8*) local_unnamed_addr
; Function Attrs: nounwind
declare void @_ZNSt12length_errorD1Ev(%"class.std::length_error"*) unnamed_addr #1
declare void @__cxa_throw(i8*, i8*, i8*) local_unnamed_addr
declare void @_ZNSt11logic_errorC2EPKc(%"class.std::logic_error"*, i8*) unnamed_addr #8
; Function Attrs: nobuiltin
declare noalias nonnull i8* @_Znwm(i64) local_unnamed_addr #9
declare i64 @_ZNSt3__112__next_primeEm(i64) local_unnamed_addr #8
; Function Attrs: ssp uwtable
define linkonce_odr void @_ZNSt3__112__hash_tableIlNS_4hashIlEENS_8equal_toIlEENS_9allocatorIlEEE8__rehashEm(%"class.std::__1::__hash_table"*, i64) local_unnamed_addr #7 align 2 personality i32 (...)* @__gxx_personality_v0 {
%3 = icmp ne i64 %1, 0
br i1 %3, label %4, label %17
; <label>:4: ; preds = %2
%5 = icmp ugt i64 %1, 2305843009213693951
br i1 %5, label %6, label %13
; <label>:6: ; preds = %4
%7 = tail call i8* @__cxa_allocate_exception(i64 16) #11
%8 = bitcast i8* %7 to %"class.std::logic_error"*
invoke void @_ZNSt11logic_errorC2EPKc(%"class.std::logic_error"* %8, i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.4, i64 0, i64 0))
to label %9 unwind label %11
; <label>:9: ; preds = %6
%10 = bitcast i8* %7 to i32 (...)***
store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVSt12length_error, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %10, align 8, !tbaa !21
tail call void @__cxa_throw(i8* %7, i8* bitcast (i8** @_ZTISt12length_error to i8*), i8* bitcast (void (%"class.std::length_error"*)* @_ZNSt12length_errorD1Ev to i8*)) #12
unreachable
; <label>:11: ; preds = %6
%12 = landingpad { i8*, i32 }
cleanup
tail call void @__cxa_free_exception(i8* %7) #11
resume { i8*, i32 } %12
; <label>:13: ; preds = %4
%14 = shl i64 %1, 3
%15 = tail call i8* @_Znwm(i64 %14) #13
%16 = bitcast i8* %15 to %"struct.std::__1::__hash_node_base"**
br label %17
; <label>:17: ; preds = %2, %13
%18 = phi %"struct.std::__1::__hash_node_base"** [ %16, %13 ], [ null, %2 ]
%19 = getelementptr inbounds %"class.std::__1::__hash_table", %"class.std::__1::__hash_table"* %0, i64 0, i32 0, i32 0, i32 0, i32 0
%20 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
store %"struct.std::__1::__hash_node_base"** %18, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
%21 = icmp eq %"struct.std::__1::__hash_node_base"** %20, null
br i1 %21, label %24, label %22
; <label>:22: ; preds = %17
%23 = bitcast %"struct.std::__1::__hash_node_base"** %20 to i8*
tail call void @_ZdlPv(i8* %23) #14
br label %24
; <label>:24: ; preds = %17, %22
%25 = getelementptr inbounds %"class.std::__1::__hash_table", %"class.std::__1::__hash_table"* %0, i64 0, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0
store i64 %1, i64* %25, align 8, !tbaa !3
br i1 %3, label %26, label %201
; <label>:26: ; preds = %24
%27 = add i64 %1, -1
%28 = and i64 %1, 3
%29 = icmp ult i64 %27, 3
br i1 %29, label %32, label %30
; <label>:30: ; preds = %26
%31 = sub i64 %1, %28
br label %49
; <label>:32: ; preds = %49, %26
%33 = phi i64 [ 0, %26 ], [ %63, %49 ]
%34 = icmp eq i64 %28, 0
br i1 %34, label %44, label %35
; <label>:35: ; preds = %32
br label %36
; <label>:36: ; preds = %36, %35
%37 = phi i64 [ %41, %36 ], [ %33, %35 ]
%38 = phi i64 [ %42, %36 ], [ %28, %35 ]
%39 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
%40 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %39, i64 %37
store %"struct.std::__1::__hash_node_base"* null, %"struct.std::__1::__hash_node_base"** %40, align 8, !tbaa !10
%41 = add nuw i64 %37, 1
%42 = add i64 %38, -1
%43 = icmp eq i64 %42, 0
br i1 %43, label %44, label %36, !llvm.loop !23
; <label>:44: ; preds = %36, %32
%45 = getelementptr inbounds %"class.std::__1::__hash_table", %"class.std::__1::__hash_table"* %0, i64 0, i32 1, i32 0, i32 0
%46 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %45, i64 0, i32 0
%47 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %46, align 8, !tbaa !12
%48 = icmp eq %"struct.std::__1::__hash_node_base"* %47, null
br i1 %48, label %201, label %66
; <label>:49: ; preds = %49, %30
%50 = phi i64 [ 0, %30 ], [ %63, %49 ]
%51 = phi i64 [ %31, %30 ], [ %64, %49 ]
%52 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
%53 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %52, i64 %50
store %"struct.std::__1::__hash_node_base"* null, %"struct.std::__1::__hash_node_base"** %53, align 8, !tbaa !10
%54 = or i64 %50, 1
%55 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
%56 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %55, i64 %54
store %"struct.std::__1::__hash_node_base"* null, %"struct.std::__1::__hash_node_base"** %56, align 8, !tbaa !10
%57 = or i64 %50, 2
%58 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
%59 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %58, i64 %57
store %"struct.std::__1::__hash_node_base"* null, %"struct.std::__1::__hash_node_base"** %59, align 8, !tbaa !10
%60 = or i64 %50, 3
%61 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
%62 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %61, i64 %60
store %"struct.std::__1::__hash_node_base"* null, %"struct.std::__1::__hash_node_base"** %62, align 8, !tbaa !10
%63 = add i64 %50, 4
%64 = add i64 %51, -4
%65 = icmp eq i64 %64, 0
br i1 %65, label %32, label %49
; <label>:66: ; preds = %44
%67 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %47, i64 1
%68 = bitcast %"struct.std::__1::__hash_node_base"* %67 to i64*
%69 = load i64, i64* %68, align 8, !tbaa !14
%70 = add i64 %1, -1
%71 = and i64 %70, %1
%72 = icmp eq i64 %71, 0
br i1 %72, label %73, label %75
; <label>:73: ; preds = %66
%74 = and i64 %69, %70
br label %79
; <label>:75: ; preds = %66
%76 = icmp ult i64 %69, %1
br i1 %76, label %79, label %77
; <label>:77: ; preds = %75
%78 = urem i64 %69, %1
br label %79
; <label>:79: ; preds = %73, %75, %77
%80 = phi i64 [ %74, %73 ], [ %78, %77 ], [ %69, %75 ]
%81 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
%82 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %81, i64 %80
store %"struct.std::__1::__hash_node_base"* %45, %"struct.std::__1::__hash_node_base"** %82, align 8, !tbaa !10
%83 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %47, i64 0, i32 0
%84 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %83, align 8, !tbaa !12
%85 = icmp eq %"struct.std::__1::__hash_node_base"* %84, null
br i1 %85, label %201, label %86
; <label>:86: ; preds = %79
br i1 %72, label %88, label %87
; <label>:87: ; preds = %86
br label %143
; <label>:88: ; preds = %86
br label %89
; <label>:89: ; preds = %88, %133
%90 = phi %"struct.std::__1::__hash_node_base"* [ %137, %133 ], [ %84, %88 ]
%91 = phi i64 [ %135, %133 ], [ %80, %88 ]
%92 = phi %"struct.std::__1::__hash_node_base"* [ %134, %133 ], [ %47, %88 ]
%93 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %90, i64 1
%94 = bitcast %"struct.std::__1::__hash_node_base"* %93 to i64*
%95 = load i64, i64* %94, align 8, !tbaa !14
%96 = and i64 %95, %70
%97 = icmp eq i64 %96, %91
br i1 %97, label %133, label %98
; <label>:98: ; preds = %89
%99 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
%100 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %99, i64 %96
%101 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %100, align 8, !tbaa !10
%102 = icmp eq %"struct.std::__1::__hash_node_base"* %101, null
br i1 %102, label %132, label %103
; <label>:103: ; preds = %98
%104 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %90, i64 0, i32 0
%105 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %104, align 8, !tbaa !12
%106 = icmp eq %"struct.std::__1::__hash_node_base"* %105, null
br i1 %106, label %118, label %139
; <label>:107: ; preds = %111
%108 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %112, i64 0, i32 0
%109 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %108, align 8, !tbaa !12
%110 = icmp eq %"struct.std::__1::__hash_node_base"* %109, null
br i1 %110, label %118, label %111
; <label>:111: ; preds = %139, %107
%112 = phi %"struct.std::__1::__hash_node_base"* [ %105, %139 ], [ %109, %107 ]
%113 = phi %"struct.std::__1::__hash_node_base"* [ %90, %139 ], [ %112, %107 ]
%114 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %112, i64 2
%115 = bitcast %"struct.std::__1::__hash_node_base"* %114 to i64*
%116 = load i64, i64* %115, align 8, !tbaa !3
%117 = icmp eq i64 %142, %116
br i1 %117, label %107, label %118
; <label>:118: ; preds = %111, %107, %103
%119 = phi %"struct.std::__1::__hash_node_base"* [ %90, %103 ], [ %112, %107 ], [ %113, %111 ]
%120 = bitcast %"struct.std::__1::__hash_node_base"* %119 to i64*
%121 = load i64, i64* %120, align 8, !tbaa !12
%122 = bitcast %"struct.std::__1::__hash_node_base"* %92 to i64*
store i64 %121, i64* %122, align 8, !tbaa !12
%123 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
%124 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %123, i64 %96
%125 = bitcast %"struct.std::__1::__hash_node_base"** %124 to i64**
%126 = load i64*, i64** %125, align 8, !tbaa !10
%127 = load i64, i64* %126, align 8, !tbaa !12
store i64 %127, i64* %120, align 8, !tbaa !12
%128 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
%129 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %128, i64 %96
%130 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %129, align 8, !tbaa !10
%131 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %130, i64 0, i32 0
store %"struct.std::__1::__hash_node_base"* %90, %"struct.std::__1::__hash_node_base"** %131, align 8, !tbaa !12
br label %133
; <label>:132: ; preds = %98
store %"struct.std::__1::__hash_node_base"* %92, %"struct.std::__1::__hash_node_base"** %100, align 8, !tbaa !10
br label %133
; <label>:133: ; preds = %132, %118, %89
%134 = phi %"struct.std::__1::__hash_node_base"* [ %90, %132 ], [ %92, %118 ], [ %90, %89 ]
%135 = phi i64 [ %96, %132 ], [ %91, %118 ], [ %91, %89 ]
%136 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %134, i64 0, i32 0
%137 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %136, align 8, !tbaa !12
%138 = icmp eq %"struct.std::__1::__hash_node_base"* %137, null
br i1 %138, label %201, label %89
; <label>:139: ; preds = %103
%140 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %90, i64 2
%141 = bitcast %"struct.std::__1::__hash_node_base"* %140 to i64*
%142 = load i64, i64* %141, align 8, !tbaa !3
br label %111
; <label>:143: ; preds = %87, %195
%144 = phi %"struct.std::__1::__hash_node_base"* [ %199, %195 ], [ %84, %87 ]
%145 = phi i64 [ %197, %195 ], [ %80, %87 ]
%146 = phi %"struct.std::__1::__hash_node_base"* [ %196, %195 ], [ %47, %87 ]
%147 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %144, i64 1
%148 = bitcast %"struct.std::__1::__hash_node_base"* %147 to i64*
%149 = load i64, i64* %148, align 8, !tbaa !14
%150 = icmp ult i64 %149, %1
br i1 %150, label %153, label %151
; <label>:151: ; preds = %143
%152 = urem i64 %149, %1
br label %153
; <label>:153: ; preds = %143, %151
%154 = phi i64 [ %152, %151 ], [ %149, %143 ]
%155 = icmp eq i64 %154, %145
br i1 %155, label %195, label %156
; <label>:156: ; preds = %153
%157 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
%158 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %157, i64 %154
%159 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %158, align 8, !tbaa !10
%160 = icmp eq %"struct.std::__1::__hash_node_base"* %159, null
br i1 %160, label %161, label %162
; <label>:161: ; preds = %156
store %"struct.std::__1::__hash_node_base"* %146, %"struct.std::__1::__hash_node_base"** %158, align 8, !tbaa !10
br label %195
; <label>:162: ; preds = %156
%163 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %144, i64 0, i32 0
%164 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %163, align 8, !tbaa !12
%165 = icmp eq %"struct.std::__1::__hash_node_base"* %164, null
br i1 %165, label %181, label %166
; <label>:166: ; preds = %162
%167 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %144, i64 2
%168 = bitcast %"struct.std::__1::__hash_node_base"* %167 to i64*
%169 = load i64, i64* %168, align 8, !tbaa !3
br label %174
; <label>:170: ; preds = %174
%171 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %175, i64 0, i32 0
%172 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %171, align 8, !tbaa !12
%173 = icmp eq %"struct.std::__1::__hash_node_base"* %172, null
br i1 %173, label %181, label %174
; <label>:174: ; preds = %166, %170
%175 = phi %"struct.std::__1::__hash_node_base"* [ %164, %166 ], [ %172, %170 ]
%176 = phi %"struct.std::__1::__hash_node_base"* [ %144, %166 ], [ %175, %170 ]
%177 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %175, i64 2
%178 = bitcast %"struct.std::__1::__hash_node_base"* %177 to i64*
%179 = load i64, i64* %178, align 8, !tbaa !3
%180 = icmp eq i64 %169, %179
br i1 %180, label %170, label %181
; <label>:181: ; preds = %174, %170, %162
%182 = phi %"struct.std::__1::__hash_node_base"* [ %144, %162 ], [ %175, %170 ], [ %176, %174 ]
%183 = bitcast %"struct.std::__1::__hash_node_base"* %182 to i64*
%184 = load i64, i64* %183, align 8, !tbaa !12
%185 = bitcast %"struct.std::__1::__hash_node_base"* %146 to i64*
store i64 %184, i64* %185, align 8, !tbaa !12
%186 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
%187 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %186, i64 %154
%188 = bitcast %"struct.std::__1::__hash_node_base"** %187 to i64**
%189 = load i64*, i64** %188, align 8, !tbaa !10
%190 = load i64, i64* %189, align 8, !tbaa !12
store i64 %190, i64* %183, align 8, !tbaa !12
%191 = load %"struct.std::__1::__hash_node_base"**, %"struct.std::__1::__hash_node_base"*** %19, align 8, !tbaa !10
%192 = getelementptr inbounds %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %191, i64 %154
%193 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %192, align 8, !tbaa !10
%194 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %193, i64 0, i32 0
store %"struct.std::__1::__hash_node_base"* %144, %"struct.std::__1::__hash_node_base"** %194, align 8, !tbaa !12
br label %195
; <label>:195: ; preds = %153, %181, %161
%196 = phi %"struct.std::__1::__hash_node_base"* [ %144, %161 ], [ %146, %181 ], [ %144, %153 ]
%197 = phi i64 [ %154, %161 ], [ %145, %181 ], [ %145, %153 ]
%198 = getelementptr inbounds %"struct.std::__1::__hash_node_base", %"struct.std::__1::__hash_node_base"* %196, i64 0, i32 0
%199 = load %"struct.std::__1::__hash_node_base"*, %"struct.std::__1::__hash_node_base"** %198, align 8, !tbaa !12
%200 = icmp eq %"struct.std::__1::__hash_node_base"* %199, null
br i1 %200, label %201, label %143
; <label>:201: ; preds = %195, %133, %79, %44, %24
ret void
}
; Function Attrs: nounwind readnone speculatable
declare i64 @llvm.ctlz.i64(i64, i1) #10
; Function Attrs: nounwind readnone speculatable
declare float @llvm.ceil.f32(float) #10
attributes #0 = { nounwind ssp uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #2 = { norecurse ssp uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #3 = { argmemonly nounwind }
attributes #4 = { nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #5 = { noreturn "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #6 = { nobuiltin nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #7 = { ssp uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #8 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #9 = { nobuiltin "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #10 = { nounwind readnone speculatable }
attributes #11 = { nounwind }
attributes #12 = { noreturn }
attributes #13 = { builtin }
attributes #14 = { builtin nounwind }
!llvm.module.flags = !{!0, !1}
!llvm.ident = !{!2}
!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 7, !"PIC Level", i32 2}
!2 = !{!"Apple LLVM version 10.0.0 (clang-1000.11.45.5)"}
!3 = !{!4, !4, i64 0}
!4 = !{!"long", !5, i64 0}
!5 = !{!"omnipotent char", !6, i64 0}
!6 = !{!"Simple C++ TBAA"}
!7 = !{!8, !9, i64 0}
!8 = !{!"_ZTSNSt3__122__compressed_pair_elemIfLi0ELb0EEE", !9, i64 0}
!9 = !{!"float", !5, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"any pointer", !5, i64 0}
!12 = !{!13, !11, i64 0}
!13 = !{!"_ZTSNSt3__116__hash_node_baseIPNS_11__hash_nodeIlPvEEEE", !11, i64 0}
!14 = !{!15, !4, i64 8}
!15 = !{!"_ZTSNSt3__111__hash_nodeIlPvEE", !4, i64 8, !4, i64 16}
!16 = !{!17}
!17 = distinct !{!17, !18, !"_ZNSt3__112__hash_tableIlNS_4hashIlEENS_8equal_toIlEENS_9allocatorIlEEE21__construct_node_hashEmRKl: argument 0"}
!18 = distinct !{!18, !"_ZNSt3__112__hash_tableIlNS_4hashIlEENS_8equal_toIlEENS_9allocatorIlEEE21__construct_node_hashEmRKl"}
!19 = !{!9, !9, i64 0}
!20 = !{i64 0, i64 65}
!21 = !{!22, !22, i64 0}
!22 = !{!"vtable pointer", !6, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.unroll.disable"}
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.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.