TA fails with Performed illegal updateAnalysis
- Dominant language
- LLVM
- Stars
- 1.7k
- Forks
- 188
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 22
Description
Log
```llvm
%3 = getelementptr inbounds %"class.std::map", %"class.std::map"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0: {[-1]:Pointer, [-1,16]:Pointer, [-1,16,32]:Pointer, [-1,40]:Pointer}, intvals: {}
%49 = getelementptr inbounds %"class.std::map", %"class.std::map"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0: {[-1]:Pointer}, intvals: {}
%62 = getelementptr inbounds %"class.std::map", %"class.std::map"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0: {[-1]:Pointer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer}, intvals: {}
%"struct.std::_Rb_tree_node"* null: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {0,}
%"struct.std::_Rb_tree_node_base"* null: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {0,}
i32 0: {[-1]:Anything}, intvals: {0,}
i64 0: {[-1]:Anything}, intvals: {0,}
i64 1: {[-1]:Integer}, intvals: {1,}
double 0.000000e+00: {[-1]:Anything}, intvals: {}
%"class.std::map"* %0: {[-1]:Pointer, [-1,16]:Pointer, [-1,16,32]:Pointer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer}, intvals: {}
i8** %1: {[-1]:Pointer, [-1,-1]:Pointer}, intvals: {}
%12 = phi %"struct.std::_Rb_tree_node"* [ %24, %11 ], [ %6, %2 ]: {[-1]:Pointer, [-1,16]:Pointer, [-1,24]:Pointer, [-1,32]:Pointer}, intvals: {}
%13 = phi %"struct.std::_Rb_tree_node_base"* [ %21, %11 ], [ %8, %2 ]: {[-1]:Pointer, [-1,32]:Pointer}, intvals: {}
%27 = phi %"struct.std::_Rb_tree_node_base"* [ %8, %2 ], [ %21, %11 ]: {[-1]:Pointer, [-1,32]:Pointer, [-1,40]:Float@double}, intvals: {}
%60 = phi i1 [ true, %48 ], [ true, %46 ], [ %58, %53 ]: {[-1]:Integer}, intvals: {-1,}
%71 = phi %"struct.std::_Rb_tree_node_base"* [ %27, %29 ], [ %43, %69 ], [ %61, %59 ]: {[-1]:Pointer, [-1,40]:Float@double}, intvals: {}
%5 = bitcast i8* %4 to %"struct.std::_Rb_tree_node"**: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,16]:Pointer, [-1,0,24]:Pointer, [-1,0,32]:Pointer}, intvals: {}
%6 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %5, align 8, !tbaa !3: {[-1]:Pointer, [-1,16]:Pointer, [-1,24]:Pointer, [-1,32]:Pointer}, intvals: {}
%8 = bitcast i8* %7 to %"struct.std::_Rb_tree_node_base"*: {[-1]:Pointer, [-1,8]:Pointer, [-1,32]:Pointer}, intvals: {}
%9 = load i8*, i8** %1, align 8: {[-1]:Pointer}, intvals: {}
%15 = bitcast %"struct.__gnu_cxx::__aligned_membuf"* %14 to i8**: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%16 = load i8*, i8** %15, align 8, !tbaa !11: {[-1]:Pointer}, intvals: {}
%23 = bitcast %"struct.std::_Rb_tree_node_base"** %22 to %"struct.std::_Rb_tree_node"**: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%24 = load %"struct.std::_Rb_tree_node"*, %"struct.std::_Rb_tree_node"** %23, align 8, !tbaa !11: {[-1]:Pointer}, intvals: {}
%31 = bitcast %"struct.std::_Rb_tree_node_base"* %30 to i8**: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%32 = load i8*, i8** %31, align 8, !tbaa !15: {[-1]:Pointer}, intvals: {}
%38 = bitcast i8* %37 to i8**: {[-1]:Pointer, [-1,0]:Pointer, [-1,8]:Float@double}, intvals: {}
%39 = load i8*, i8** %1, align 8, !tbaa !11: {[-1]:Pointer}, intvals: {}
%41 = bitcast i8* %40 to double*: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%51 = bitcast i8* %50 to %"struct.std::_Rb_tree_node_base"*: {[-1]:Pointer}, intvals: {}
%54 = load i8*, i8** %38, align 8, !tbaa !11: {[-1]:Pointer}, intvals: {}
%56 = bitcast %"struct.std::_Rb_tree_node_base"* %55 to i8**: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%57 = load i8*, i8** %56, align 8, !tbaa !11: {[-1]:Pointer}, intvals: {}
%61 = bitcast i8* %36 to %"struct.std::_Rb_tree_node_base"*: {[-1]:Pointer, [-1,32]:Pointer, [-1,40]:Float@double}, intvals: {}
%64 = bitcast i8* %63 to %"struct.std::_Rb_tree_node_base"*: {[-1]:Pointer}, intvals: {}
%66 = bitcast i8* %65 to i64*: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
%67 = load i64, i64* %66, align 8, !tbaa !19: {[-1]:Integer}, intvals: {}
%73 = bitcast %"struct.std::_Rb_tree_node_base"** %72 to double*: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%17 = icmp ult i8* %16, %9: {[-1]:Integer}, intvals: {}
%10 = icmp eq %"struct.std::_Rb_tree_node"* %6, null: {[-1]:Integer}, intvals: {}
%25 = icmp eq %"struct.std::_Rb_tree_node"* %24, null: {[-1]:Integer}, intvals: {}
%28 = icmp eq %"struct.std::_Rb_tree_node_base"* %27, %8: {[-1]:Integer}, intvals: {}
%33 = icmp ult i8* %9, %32: {[-1]:Integer}, intvals: {}
%43 = extractvalue { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %42, 0: {[-1]:Pointer, [-1,40]:Float@double}, intvals: {}
%44 = extractvalue { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } %42, 1: {[-1]:Pointer, [-1,32]:Pointer}, intvals: {}
%45 = icmp eq %"struct.std::_Rb_tree_node_base"* %44, null: {[-1]:Integer}, intvals: {}
%47 = icmp eq %"struct.std::_Rb_tree_node_base"* %43, null: {[-1]:Integer}, intvals: {}
%52 = icmp eq %"struct.std::_Rb_tree_node_base"* %44, %51: {[-1]:Integer}, intvals: {}
%58 = icmp ult i8* %54, %57: {[-1]:Integer}, intvals: {}
%68 = add i64 %67, 1: {[-1]:Integer}, intvals: {}
%7 = getelementptr inbounds i8, i8* %3, i64 8: {[-1]:Pointer, [-1,8]:Pointer, [-1,8,32]:Pointer, [-1,32]:Pointer}, intvals: {}
%4 = getelementptr inbounds i8, i8* %3, i64 16: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,32]:Pointer}, intvals: {}
%30 = getelementptr inbounds %"struct.std::_Rb_tree_node_base", %"struct.std::_Rb_tree_node_base"* %27, i64 1: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%36 = call noalias nonnull i8* @_Znwm(i64 48) #12: {[-1]:Pointer, [-1,32]:Pointer, [-1,40]:Float@double}, intvals: {}
%37 = getelementptr inbounds i8, i8* %36, i64 32: {[-1]:Pointer, [-1,0]:Pointer, [-1,8]:Float@double}, intvals: {}
%40 = getelementptr inbounds i8, i8* %36, i64 40: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%50 = getelementptr inbounds i8, i8* %49, i64 8: {[-1]:Pointer}, intvals: {}
%55 = getelementptr inbounds %"struct.std::_Rb_tree_node_base", %"struct.std::_Rb_tree_node_base"* %44, i64 1: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%63 = getelementptr inbounds i8, i8* %62, i64 8: {[-1]:Pointer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
%65 = getelementptr inbounds i8, i8* %62, i64 40: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
%21 = select i1 %17, %"struct.std::_Rb_tree_node_base"* %13, %"struct.std::_Rb_tree_node_base"* %19: {[-1]:Pointer, [-1,32]:Pointer}, intvals: {}
%22 = select i1 %17, %"struct.std::_Rb_tree_node_base"** %18, %"struct.std::_Rb_tree_node_base"** %20: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%14 = getelementptr inbounds %"struct.std::_Rb_tree_node", %"struct.std::_Rb_tree_node"* %12, i64 0, i32 1: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%19 = getelementptr %"struct.std::_Rb_tree_node", %"struct.std::_Rb_tree_node"* %12, i64 0, i32 0: {[-1]:Pointer, [-1,16]:Pointer, [-1,24]:Pointer, [-1,32]:Pointer}, intvals: {}
%35 = getelementptr inbounds %"class.std::map", %"class.std::map"* %0, i64 0, i32 0: {[-1]:Pointer, [-1,16]:Pointer}, intvals: {}
%72 = getelementptr inbounds %"struct.std::_Rb_tree_node_base", %"struct.std::_Rb_tree_node_base"* %71, i64 1, i32 1: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%18 = getelementptr inbounds %"struct.std::_Rb_tree_node", %"struct.std::_Rb_tree_node"* %12, i64 0, i32 0, i32 3: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%20 = getelementptr inbounds %"struct.std::_Rb_tree_node", %"struct.std::_Rb_tree_node"* %12, i64 0, i32 0, i32 2: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%42 = call { %"struct.std::_Rb_tree_node_base"*, %"struct.std::_Rb_tree_node_base"* } @_ZNSt8_Rb_treeIPKcSt4pairIKS1_dESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS4_ERS3_(%"class.std::_Rb_tree"* nonnull align 8 dereferenceable(48) %35, %"struct.std::_Rb_tree_node_base"* %27, i8** nonnull align 8 dereferenceable(8) %38) #13: {[0]:Pointer, [0,40]:Float@double, [8]:Pointer, [8,32]:Pointer}, intvals: {}
Illegal updateAnalysis prev:{[-1]:Pointer, [-1,16]:Pointer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer} new: {[-1]:Pointer, [-1,16]:Pointer, [-1,16,32]:Pointer, [-1,40]:Pointer}
val: %"class.std::map"* %0 origin= %3 = getelementptr inbounds %"class.std::map", %"class.std::map"* %0, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
Assertion failed: (0 && "Performed illegal updateAnalysis"), function updateAnalysis, file TypeAnalysis.cpp, line 705.
```
https://fwd.gymni.ch/w56agH
Contributor guide
Assessment
This issue has not been assessed yet.