Skip to content

Instantly share code, notes, and snippets.

@mkeeter
Created December 23, 2018 03:17
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 mkeeter/2523e534436d63264a3aff15b2ee4c06 to your computer and use it in GitHub Desktop.
Save mkeeter/2523e534436d63264a3aff15b2ee4c06 to your computer and use it in GitHub Desktop.
; 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