(lldb) p ((llvm::Instruction*)(LocA.Ptr))->dump() %arrayidx.i = getelementptr inbounds [1 x %struct.elt_list*], [1 x %struct.elt_list*]* %te.i, i64 0, i64 %indvars.iv.i (lldb) p ((llvm::Instruction*)(LocB.Ptr))->dump() @reg_values = internal unnamed_addr global %struct.varray_head_tag* null, align 8 (lldb) p ((llvm::Instruction*)(LocA.Ptr))->getParent()->getParent()->getName() (llvm::StringRef) $3 = (Data = "cselib_init", Length = 11) (lldb) p UV1->dump() %32 = load %struct.varray_head_tag*, %struct.varray_head_tag** @reg_values, align 8, !tbaa !2 (lldb) p UV2->dump() @reg_values = internal unnamed_addr global %struct.varray_head_tag* null, align 8 (lldb) p ((llvm::Instruction*)(LocA.Ptr))->getParent()->dump() for.body.i: ; preds = %for.body.i, %for.body.lr.ph.i %indvars.iv.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.body.i ] %32 = load %struct.varray_head_tag*, %struct.varray_head_tag** @reg_values, align 8, !tbaa !2 ; <<<<< @reg_values %data.i = getelementptr inbounds %struct.varray_head_tag, %struct.varray_head_tag* %32, i64 0, i32 4 ; <<<<<<< %te.i = bitcast %union.varray_data_tag* %data.i to [1 x %struct.elt_list*]* ; <<<<<<<<<< %arrayidx.i = getelementptr inbounds [1 x %struct.elt_list*], [1 x %struct.elt_list*]* %te.i, i64 0, i64 %indvars.iv.i ; <<<<<<<<<<<< store %struct.elt_list* null, %struct.elt_list** %arrayidx.i, align 8, !tbaa !2 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond = icmp eq i64 %indvars.iv.next.i, %31 br i1 %exitcond, label %if.end.loopexit38.i.loopexit, label %for.body.i (lldb) bt [5/9753] * thread #1: tid = 0x120baaf, 0x00000001038b752a libLTO.dylib`(anonymous namespace)::GlobalsModRef::alias(this=0x000000010eba5c10, LocA=0x00007fff5fbf4198, LocB=0x00007fff5fbf6268) + 570 at GlobalsModRef.cpp:519, queue = 'com.apple.main-thread', stop reason = step over * frame #0: 0x00000001038b752a libLTO.dylib`(anonymous namespace)::GlobalsModRef::alias(this=0x000000010eba5c10, LocA=0x00007fff5fbf4198, LocB=0x00007fff5fbf6268) + 570 at GlobalsModRef.cpp:519 frame #1: 0x00000001038b82f7 libLTO.dylib`non-virtual thunk to (anonymous namespace)::GlobalsModRef::alias(this=0x000000010eba5c30, LocA=0x00007fff5fbf4198, LocB=0x00007fff5fbf6268) + 55 at GlobalsModRef.cpp:562 frame #2: 0x00000001038d6aa8 libLTO.dylib`llvm::AliasAnalysis::getModRefInfo(this=0x000000010eba5c30, S=0x000000010a1a22e0, Loc=0x00007fff5fbf6268) + 120 at AliasAnalysis.cpp:288 frame #3: 0x0000000103a0a814 libLTO.dylib`llvm::MemoryDependenceAnalysis::getPointerDependencyFrom(this=0x000000010e6cf0c0, MemLoc=0x00007fff5fbf6268, isLoad=true, ScanIt=llvm::BasicBlock::iterator at 0x00007fff5fbf4390, BB=0x000000010a19ffa0, QueryInst=0x000000010a1a20c8) + 1908 at MemoryDependenceAnalysis.cpp:570 frame #4: 0x0000000103a0ffa5 libLTO.dylib`llvm::MemoryDependenceAnalysis::GetNonLocalInfoForBlock(this=0x000000010e6cf0c0, QueryInst=0x000000010a1a20c8, Loc=0x00007fff5fbf6268, isLoad=true, BB=0x000000010a19ffa0, Cache=0x0000000100f9d568, NumSortedEntries=0) + 2165 at MemoryDependenceAnalysis.cpp:965 frame #5: 0x0000000103a0e3a9 libLTO.dylib`llvm::MemoryDependenceAnalysis::getNonLocalPointerDepFromBB(this=0x000000010e6cf0c0, QueryInst=0x000000010a1a20c8, Pointer=0x00007fff5fbf62a8, Loc=0x00007fff5fbf6268, isLoad=true, StartBB=0x000000010a19ffa0, Result=0x00007fff5fbf6bf0, Visited=0x00007fff5fbf6208, SkipFirstBlock=false) + 5897 at MemoryDependenceAnalysis.cpp:1200 frame #6: 0x0000000103a0cb3b libLTO.dylib`llvm::MemoryDependenceAnalysis::getNonLocalPointerDependency(this=0x000000010e6cf0c0, QueryInst=0x000000010a1a20c8, Result=0x00007fff5fbf6bf0) + 635 at MemoryDependenceAnalysis.cpp:911 frame #7: 0x000000010340c5b5 libLTO.dylib`(anonymous namespace)::GVN::processNonLocalLoad(this=0x000000010e6ce680, LI=0x000000010a1a20c8) + 101 at GVN.cpp:1706 frame #8: 0x0000000103408eef libLTO.dylib`(anonymous namespace)::GVN::processLoad(this=0x000000010e6ce680, L=0x000000010a1a20c8) + 1551 at GVN.cpp:1905 frame #9: 0x00000001034080fd libLTO.dylib`(anonymous namespace)::GVN::processInstruction(this=0x000000010e6ce680, I=0x000000010a1a20c8) + 397 at GVN.cpp:2220 frame #10: 0x0000000103407d1b libLTO.dylib`(anonymous namespace)::GVN::processBlock(this=0x000000010e6ce680, BB=0x000000010a19ffa0) + 251 at GVN.cpp:2394 frame #11: 0x0000000103401755 libLTO.dylib`(anonymous namespace)::GVN::iterateOnFunction(this=0x000000010e6ce680, F=0x00000001085f69f8) + 1541 at GVN.cpp:2677 frame #12: 0x0000000103400fef libLTO.dylib`(anonymous namespace)::GVN::runOnFunction(this=0x000000010e6ce680, F=0x00000001085f69f8) + 623 at GVN.cpp:2352 frame #13: 0x00000001027cd05b libLTO.dylib`llvm::FPPassManager::runOnFunction(this=0x000000010eba6810, F=0x00000001085f69f8) + 427 at LegacyPassManager.cpp:1520 frame #14: 0x00000001027cd375 libLTO.dylib`llvm::FPPassManager::runOnModule(this=0x000000010eba6810, M=0x000000010115c5f0) + 117 at LegacyPassManager.cpp:1540 frame #15: 0x00000001027cdda1 libLTO.dylib`(anonymous namespace)::MPPassManager::runOnModule(this=0x000000010e6cbaf0, M=0x000000010115c5f0) + 1409 at LegacyPassManager.cpp:1596 frame #16: 0x00000001027cd636 libLTO.dylib`llvm::legacy::PassManagerImpl::run(this=0x000000010e6cb740, M=0x000000010115c5f0) + 310 at LegacyPassManager.cpp:1698 frame #17: 0x00000001027ce521 libLTO.dylib`llvm::legacy::PassManager::run(this=0x00007fff5fbf82b8, M=0x000000010115c5f0) + 33 at LegacyPassManager.cpp:1729 (lldb) p ((llvm::Instruction*)(LocA.Ptr))->getParent()->getParent()->dump() ; Function Attrs: nounwind ssp define internal fastcc void @cselib_init() #0 { entry: %0 = load %struct.rtx_def*, %struct.rtx_def** @callmem, align 8, !tbaa !2 %tobool = icmp eq %struct.rtx_def* %0, null br i1 %tobool, label %if.then, label %if.end.37 if.then: ; preds = %entry tail call fastcc void @_obstack_begin(%struct.obstack* nonnull @cselib_obstack, i32 0, i32 0) #1 %1 = load i64, i64* bitcast (i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 4) to i64*), align 8, !tbaa !112 %2 = load i64, i64* bitcast (i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 3) to i64*), align 8, !tbaa !114 %sub.ptr.sub = sub i64 %1, %2 %cmp = icmp slt i64 %sub.ptr.sub, 0 %3 = inttoptr i64 %2 to i8* br i1 %cmp, label %if.then.2, label %if.end if.then.2: ; preds = %if.then tail call fastcc void @_obstack_newchunk(%struct.obstack* nonnull @cselib_obstack, i32 0) #1 %.pre = load i8*, i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 3), align 8, !tbaa !114 %4 = ptrtoint i8* %.pre to i64 br label %if.end if.end: ; preds = %if.then.2, %if.then %5 = phi i64 [ %4, %if.then.2 ], [ %2, %if.then ] %6 = phi i8* [ %.pre, %if.then.2 ], [ %3, %if.then ] %7 = load i8*, i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 2), align 8, !tbaa !115 %cmp7 = icmp eq i8* %6, %7 br i1 %cmp7, label %if.then.9, label %if.end.10 if.then.9: ; preds = %if.end %bf.load = load i8, i8* getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 10), align 8 %bf.set = or i8 %bf.load, 2 store i8 %bf.set, i8* getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 10), align 8 br label %if.end.10 if.end.10: ; preds = %if.then.9, %if.end %8 = load i32, i32* getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 6), align 8, !tbaa !116 %conv14 = sext i32 %8 to i64 %add = add nsw i64 %conv14, %5 %neg = xor i32 %8, -1 %conv16 = sext i32 %neg to i64 %and = and i64 %add, %conv16 %add.ptr17 = getelementptr inbounds i8, i8* null, i64 %and %9 = load i64, i64* bitcast (%struct._obstack_chunk** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 1) to i64*), align 8, !tbaa !117 %sub.ptr.lhs.cast20 = ptrtoint i8* %add.ptr17 to i64 %sub.ptr.sub22 = sub i64 %sub.ptr.lhs.cast20, %9 %10 = load i8*, i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 4), align 8, !tbaa !112 %sub.ptr.lhs.cast25 = ptrtoint i8* %10 to i64 %sub.ptr.sub27 = sub i64 %sub.ptr.lhs.cast25, %9 %cmp28 = icmp sgt i64 %sub.ptr.sub22, %sub.ptr.sub27 %.add.ptr17 = select i1 %cmp28, i8* %10, i8* %add.ptr17 store i8* %.add.ptr17, i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 3), align 8, !tbaa !114 %.cast = ptrtoint i8* %.add.ptr17 to i64 store i64 %.cast, i64* bitcast (i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 2) to i64*), align 8, !tbaa !115 store i8* %7, i8** @cselib_startobj, align 8, !tbaa !2 %11 = load i64, i64* bitcast (%struct.rtx_def** getelementptr inbounds ([129 x %struct.rtx_def*], [129 x %struct.rtx_def*]* @const_int_rtx, i64 0, i64 64) to i64*), align 8, !tbaa !2 %call.i.i = tail call fastcc i8* @ggc_alloc(i64 24) #1 %12 = tail call i64 @llvm.objectsize.i64.p0i8(i8* %call.i.i, i1 false) #1 %call1.i.i = tail call i8* @__memset_chk(i8* %call.i.i, i32 0, i64 8, i64 %12) #1 %13 = bitcast i8* %call.i.i to i32* %bf.load.i.i = load i32, i32* %13, align 8 %bf.clear.i.i = and i32 %bf.load.i.i, -16777216 %bf.set5.i.i = or i32 %bf.clear.i.i, 3342402 store i32 %bf.set5.i.i, i32* %13, align 8 %fld.i.i = getelementptr inbounds i8, i8* %call.i.i, i64 8 %14 = bitcast i8* %fld.i.i to i64* store i64 %11, i64* %14, align 8, !tbaa !2 %arrayidx7.i.i = getelementptr inbounds i8, i8* %call.i.i, i64 16 %rtx8.i.i = bitcast i8* %arrayidx7.i.i to %struct.rtx_def** store %struct.rtx_def* null, %struct.rtx_def** %rtx8.i.i, align 8, !tbaa !2 %rtmem.i = bitcast i8* %arrayidx7.i.i to %struct.mem_attrs** store %struct.mem_attrs* null, %struct.mem_attrs** %rtmem.i, align 8, !tbaa !2 store i8* %call.i.i, i8** bitcast (%struct.rtx_def** @callmem to i8**), align 8, !tbaa !2 %call.i.1.i = tail call i8* @malloc(i64 32) #1 %tobool.i.i = icmp eq i8* %call.i.1.i, null br i1 %tobool.i.i, label %if.then.1.i.i, label %ggc_add_rtx_root.exit if.then.1.i.i: ; preds = %if.end.10 tail call fastcc void @xmalloc_failed(i64 32) #14 unreachable ggc_add_rtx_root.exit: ; preds = %if.end.10 %15 = load i64, i64* bitcast (%struct.ggc_root** @roots to i64*), align 8, !tbaa !2 %16 = bitcast i8* %call.i.1.i to i64* store i64 %15, i64* %16, align 8, !tbaa !41 %base1.i.i = getelementptr inbounds i8, i8* %call.i.1.i, i64 8 %17 = bitcast i8* %base1.i.i to %struct.rtx_def*** store %struct.rtx_def** @callmem, %struct.rtx_def*** %17, align 8, !tbaa !43 %nelt2.i.i = getelementptr inbounds i8, i8* %call.i.1.i, i64 16 %18 = bitcast i8* %nelt2.i.i to i32* store i32 1, i32* %18, align 4, !tbaa !44 %size3.i.i = getelementptr inbounds i8, i8* %call.i.1.i, i64 20 %19 = bitcast i8* %size3.i.i to i32* store i32 8, i32* %19, align 4, !tbaa !45 %cb4.i.i = getelementptr inbounds i8, i8* %call.i.1.i, i64 24 %20 = bitcast i8* %cb4.i.i to void (i8*)** store void (i8*)* @ggc_mark_rtx_ptr, void (i8*)** %20, align 8, !tbaa !46 store i8* %call.i.1.i, i8** bitcast (%struct.ggc_root** @roots to i8**), align 8, !tbaa !2 br label %if.end.37 if.end.37: ; preds = %ggc_add_rtx_root.exit, %entry %21 = load %struct.function*, %struct.function** @cfun, align 8, !tbaa !2 %emit.i = getelementptr inbounds %struct.function, %struct.function* %21, i64 0, i32 3 %22 = load %struct.emit_status*, %struct.emit_status** %emit.i, align 8, !tbaa !36 %x_reg_rtx_no.i = getelementptr inbounds %struct.emit_status, %struct.emit_status* %22, i64 0, i32 0 %23 = load i32, i32* %x_reg_rtx_no.i, align 4, !tbaa !39 store i32 %23, i32* @cselib_nregs, align 4, !tbaa !19 %conv39 = zext i32 %23 to i64 %mul.i = shl nuw nsw i64 %conv39, 3 %add.i = add nuw nsw i64 %mul.i, 32 %call.i.i.2 = tail call i8* @calloc(i64 %add.i, i64 1) #1 %tobool.i.i.3 = icmp eq i8* %call.i.i.2, null br i1 %tobool.i.i.3, label %if.then.2.i.i, label %varray_init.exit if.then.2.i.i: ; preds = %if.end.37 tail call fastcc void @xmalloc_failed(i64 %add.i) #14 unreachable varray_init.exit: ; preds = %if.end.37 %num_elements1.i = bitcast i8* %call.i.i.2 to i64* store i64 %conv39, i64* %num_elements1.i, align 8, !tbaa !200 %elements_used.i = getelementptr inbounds i8, i8* %call.i.i.2, i64 8 %24 = bitcast i8* %elements_used.i to i64* store i64 0, i64* %24, align 8, !tbaa !198 %element_size2.i = getelementptr inbounds i8, i8* %call.i.i.2, i64 16 %25 = bitcast i8* %element_size2.i to i64* store i64 8, i64* %25, align 8, !tbaa !278 %name3.i = getelementptr inbounds i8, i8* %call.i.i.2, i64 24 %26 = bitcast i8* %name3.i to i8** store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1.2420, i64 0, i64 0), i8** %26, align 8, !tbaa !279 store i8* %call.i.i.2, i8** bitcast (%struct.varray_head_tag** @reg_values to i8**), align 8, !tbaa !2 %mul.i.4 = shl nuw nsw i64 %conv39, 2 %add.i.5 = add nuw nsw i64 %mul.i.4, 32 %call.i.i.6 = tail call i8* @calloc(i64 %add.i.5, i64 1) #1 %tobool.i.i.7 = icmp eq i8* %call.i.i.6, null br i1 %tobool.i.i.7, label %if.then.2.i.i.8, label %varray_init.exit13 if.then.2.i.i.8: ; preds = %varray_init.exit tail call fastcc void @xmalloc_failed(i64 %add.i.5) #14 unreachable varray_init.exit13: ; preds = %varray_init.exit %num_elements1.i.9 = bitcast i8* %call.i.i.6 to i64* store i64 %conv39, i64* %num_elements1.i.9, align 8, !tbaa !200 %elements_used.i.10 = getelementptr inbounds i8, i8* %call.i.i.6, i64 8 %27 = bitcast i8* %elements_used.i.10 to i64* store i64 0, i64* %27, align 8, !tbaa !198 %element_size2.i.11 = getelementptr inbounds i8, i8* %call.i.i.6, i64 16 %28 = bitcast i8* %element_size2.i.11 to i64* store i64 4, i64* %28, align 8, !tbaa !278 %name3.i.12 = getelementptr inbounds i8, i8* %call.i.i.6, i64 24 %29 = bitcast i8* %name3.i.12 to i8** store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2.2421, i64 0, i64 0), i8** %29, align 8, !tbaa !279 store i8* %call.i.i.6, i8** bitcast (%struct.varray_head_tag** @used_regs to i8**), align 8, !tbaa !2 %call43 = tail call fastcc %struct.htab* @htab_create(i64 31, i32 (i8*)* nonnull @get_value_hash, i32 (i8*, i8*)* nonnull @entry_and_rtx_equal_p, void (i8*)* null) #1 store %struct.htab* %call43, %struct.htab** @hash_table, align 8, !tbaa !2 %30 = load i32, i32* @cselib_nregs, align 4, !tbaa !19 %cmp.43.i = icmp eq i32 %30, 0 br i1 %cmp.43.i, label %if.end.loopexit38.i, label %for.body.lr.ph.i for.body.lr.ph.i: ; preds = %varray_init.exit13 %31 = zext i32 %30 to i64 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.lr.ph.i %indvars.iv.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.body.i ] %32 = load %struct.varray_head_tag*, %struct.varray_head_tag** @reg_values, align 8, !tbaa !2 %data.i = getelementptr inbounds %struct.varray_head_tag, %struct.varray_head_tag* %32, i64 0, i32 4 %te.i = bitcast %union.varray_data_tag* %data.i to [1 x %struct.elt_list*]* %arrayidx.i = getelementptr inbounds [1 x %struct.elt_list*], [1 x %struct.elt_list*]* %te.i, i64 0, i64 %indvars.iv.i store %struct.elt_list* null, %struct.elt_list** %arrayidx.i, align 8, !tbaa !2 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond = icmp eq i64 %indvars.iv.next.i, %31 br i1 %exitcond, label %if.end.loopexit38.i.loopexit, label %for.body.i if.end.loopexit38.i.loopexit: ; preds = %for.body.i %.pre70 = load %struct.htab*, %struct.htab** @hash_table, align 8, !tbaa !2 br label %if.end.loopexit38.i if.end.loopexit38.i: ; preds = %if.end.loopexit38.i.loopexit, %varray_init.exit13 %33 = phi %struct.htab* [ %.pre70, %if.end.loopexit38.i.loopexit ], [ %call43, %varray_init.exit13 ] %.pre.i = load %struct.varray_head_tag*, %struct.varray_head_tag** @used_regs, align 8, !tbaa !2 store i32 0, i32* @max_value_regs, align 4, !tbaa !19 %elements_used15.i = getelementptr inbounds %struct.varray_head_tag, %struct.varray_head_tag* %.pre.i, i64 0, i32 1 store i64 0, i64* %elements_used15.i, align 8, !tbaa !198 %del_f.i = getelementptr inbounds %struct.htab, %struct.htab* %33, i64 0, i32 2 %34 = load void (i8*)*, void (i8*)** %del_f.i, align 8, !tbaa !286 %tobool.i = icmp eq void (i8*)* %34, null %.pre.i.14 = getelementptr inbounds %struct.htab, %struct.htab* %33, i64 0, i32 4 br i1 %tobool.i, label %htab_empty.exit, label %if.then.i if.then.i: ; preds = %if.end.loopexit38.i %35 = load i64, i64* %.pre.i.14, align 8, !tbaa !288 %sub.i = add i64 %35, 4294967295 %conv.i = trunc i64 %sub.i to i32 %cmp.31.i = icmp sgt i32 %conv.i, -1 br i1 %cmp.31.i, label %for.body.lr.ph.i.15, label %htab_empty.exit for.body.lr.ph.i.15: ; preds = %if.then.i %entries.i = getelementptr inbounds %struct.htab, %struct.htab* %33, i64 0, i32 3 %sext.i = shl i64 %sub.i, 32 %36 = ashr exact i64 %sext.i, 32 br label %for.body.i.18 for.body.i.18: ; preds = %for.inc.i, %for.body.lr.ph.i.15 %indvars.iv.i.16 = phi i64 [ %36, %for.body.lr.ph.i.15 ], [ %indvars.iv.next.i.19, %for.inc.i ] %37 = load i8**, i8*** %entries.i, align 8, !tbaa !289 %arrayidx.i.17 = getelementptr inbounds i8*, i8** %37, i64 %indvars.iv.i.16 %38 = load i8*, i8** %arrayidx.i.17, align 8, !tbaa !2 %switch.i = icmp ult i8* %38, inttoptr (i64 2 to i8*) br i1 %switch.i, label %for.inc.i, label %if.then.9.i if.then.9.i: ; preds = %for.body.i.18 %39 = load void (i8*)*, void (i8*)** %del_f.i, align 8, !tbaa !286 tail call void %39(i8* %38) #1 br label %for.inc.i for.inc.i: ; preds = %if.then.9.i, %for.body.i.18 %indvars.iv.next.i.19 = add nsw i64 %indvars.iv.i.16, -1 %cmp.i = icmp sgt i64 %indvars.iv.i.16, 0 br i1 %cmp.i, label %for.body.i.18, label %htab_empty.exit.loopexit htab_empty.exit.loopexit: ; preds = %for.inc.i br label %htab_empty.exit htab_empty.exit: ; preds = %htab_empty.exit.loopexit, %if.end.loopexit38.i, %if.then.i %entries15.i = getelementptr inbounds %struct.htab, %struct.htab* %33, i64 0, i32 3 %40 = bitcast i8*** %entries15.i to i8** %41 = load i8*, i8** %40, align 8, !tbaa !289 %42 = load i64, i64* %.pre.i.14, align 8, !tbaa !288 %mul.i.20 = shl i64 %42, 3 %43 = tail call i64 @llvm.objectsize.i64.p0i8(i8* %41, i1 false) #1 %call.i = tail call i8* @__memset_chk(i8* %41, i32 0, i64 %mul.i.20, i64 %43) #1 %44 = load i8*, i8** @cselib_startobj, align 8, !tbaa !2 %45 = load i8*, i8** bitcast (%struct._obstack_chunk** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 1) to i8**), align 8, !tbaa !117 %cmp16.i = icmp ugt i8* %44, %45 %46 = load i8*, i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 4), align 8 %cmp18.i = icmp ult i8* %44, %46 %or.cond.i = and i1 %cmp16.i, %cmp18.i br i1 %or.cond.i, label %if.then.20.i, label %if.else.21.i if.then.20.i: ; preds = %htab_empty.exit store i8* %44, i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 2), align 8, !tbaa !115 store i8* %44, i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 3), align 8, !tbaa !114 br label %clear_table.exit if.else.21.i: ; preds = %htab_empty.exit %47 = load %struct._obstack_chunk*, %struct._obstack_chunk** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 1), align 8, !tbaa !117 %cmp.35.i = icmp eq %struct._obstack_chunk* %47, null br i1 %cmp.35.i, label %if.else.10.i, label %land.rhs.i.preheader land.rhs.i.preheader: ; preds = %if.else.21.i br label %land.rhs.i land.rhs.i: ; preds = %land.rhs.i.preheader, %do.end.i %lp.036.i = phi %struct._obstack_chunk* [ %50, %do.end.i ], [ %47, %land.rhs.i.preheader ] %48 = bitcast %struct._obstack_chunk* %lp.036.i to i8* %cmp1.i = icmp ult i8* %48, %44 br i1 %cmp1.i, label %lor.rhs.i, label %while.body.i lor.rhs.i: ; preds = %land.rhs.i %limit.i = getelementptr inbounds %struct._obstack_chunk, %struct._obstack_chunk* %lp.036.i, i64 0, i32 0 %49 = load i8*, i8** %limit.i, align 8, !tbaa !171 %cmp2.i = icmp ult i8* %49, %44 br i1 %cmp2.i, label %while.body.i, label %if.then.7.i while.body.i: ; preds = %lor.rhs.i, %land.rhs.i %prev.i = getelementptr inbounds %struct._obstack_chunk, %struct._obstack_chunk* %lp.036.i, i64 0, i32 1 %50 = load %struct._obstack_chunk*, %struct._obstack_chunk** %prev.i, align 8, !tbaa !173 %bf.load.i = load i8, i8* getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 10), align 8 %bf.clear.i = and i8 %bf.load.i, 1 %tobool.i.21 = icmp eq i8 %bf.clear.i, 0 %51 = load void (i8*, %struct._obstack_chunk*)*, void (i8*, %struct._obstack_chunk*)** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 8), align 8, !tbaa !174 br i1 %tobool.i.21, label %if.else.i, label %if.then.i.22 if.then.i.22: ; preds = %while.body.i %52 = load i8*, i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 9), align 8, !tbaa !175 tail call void %51(i8* %52, %struct._obstack_chunk* %lp.036.i) #1 br label %do.end.i if.else.i: ; preds = %while.body.i %53 = bitcast void (i8*, %struct._obstack_chunk*)* %51 to void (i8*)* tail call void %53(i8* %48) #1 br label %do.end.i do.end.i: ; preds = %if.else.i, %if.then.i.22 %bf.load4.i = load i8, i8* getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 10), align 8 %bf.set.i = or i8 %bf.load4.i, 2 store i8 %bf.set.i, i8* getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 10), align 8 %cmp.i.23 = icmp eq %struct._obstack_chunk* %50, null br i1 %cmp.i.23, label %if.else.10.i.loopexit, label %land.rhs.i if.then.7.i: ; preds = %lor.rhs.i %.lcssa = phi i8* [ %49, %lor.rhs.i ] %lp.036.i.lcssa = phi %struct._obstack_chunk* [ %lp.036.i, %lor.rhs.i ] %54 = ptrtoint i8* %.lcssa to i64 store i8* %44, i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 3), align 8, !tbaa !114 store i8* %44, i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 2), align 8, !tbaa !115 store i64 %54, i64* bitcast (i8** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 4) to i64*), align 8, !tbaa !112 store %struct._obstack_chunk* %lp.036.i.lcssa, %struct._obstack_chunk** getelementptr inbounds (%struct.obstack, %struct.obstack* @cselib_obstack, i64 0, i32 1), align 8, !tbaa !117 br label %clear_table.exit if.else.10.i.loopexit: ; preds = %do.end.i br label %if.else.10.i if.else.10.i: ; preds = %if.else.10.i.loopexit, %if.else.21.i %cmp11.i = icmp eq i8* %44, null br i1 %cmp11.i, label %clear_table.exit, label %if.then.12.i if.then.12.i: ; preds = %if.else.10.i tail call void @abort() #14 unreachable clear_table.exit: ; preds = %if.else.10.i, %if.then.7.i, %if.then.20.i store %struct.cselib_val_struct* null, %struct.cselib_val_struct** @empty_vals, align 8, !tbaa !2 store %struct.elt_list* null, %struct.elt_list** @empty_elt_lists, align 8, !tbaa !2 store %struct.elt_loc_list* null, %struct.elt_loc_list** @empty_elt_loc_lists, align 8, !tbaa !2 store i32 0, i32* @n_useless_values, align 4, !tbaa !19 store i32 0, i32* @next_unknown_value, align 4, !tbaa !19 ret void }