diff options
-rw-r--r-- | lib/Transforms/IPO/GlobalOpt.cpp | 26 | ||||
-rw-r--r-- | test/Transforms/GlobalOpt/big-memory-footprint.ll | 8309 |
2 files changed, 8331 insertions, 4 deletions
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp index 591278fa62..54b97fabdc 100644 --- a/lib/Transforms/IPO/GlobalOpt.cpp +++ b/lib/Transforms/IPO/GlobalOpt.cpp @@ -36,6 +36,7 @@ #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/SetVector.h" #include "llvm/ADT/Statistic.h" #include "llvm/ADT/STLExtras.h" #include <algorithm> @@ -2398,7 +2399,8 @@ static bool isSimpleEnoughPointerToCommit(Constant *C) { /// initializer. This returns 'Init' modified to reflect 'Val' stored into it. /// At this point, the GEP operands of Addr [0, OpNo) have been stepped into. static Constant *EvaluateStoreInto(Constant *Init, Constant *Val, - ConstantExpr *Addr, unsigned OpNo) { + ConstantExpr *Addr, unsigned OpNo, + SetVector<Constant*>& Obsolete) { // Base case of the recursion. if (OpNo == Addr->getNumOperands()) { assert(Val->getType() == Init->getType() && "Type mismatch!"); @@ -2415,7 +2417,9 @@ static Constant *EvaluateStoreInto(Constant *Init, Constant *Val, ConstantInt *CU = cast<ConstantInt>(Addr->getOperand(OpNo)); unsigned Idx = CU->getZExtValue(); assert(Idx < STy->getNumElements() && "Struct index out of range!"); - Elts[Idx] = EvaluateStoreInto(Elts[Idx], Val, Addr, OpNo+1); + if (Elts[Idx]->getType()->isAggregateType()) + Obsolete.insert(Elts[Idx]); + Elts[Idx] = EvaluateStoreInto(Elts[Idx], Val, Addr, OpNo+1, Obsolete); // Return the modified struct. return ConstantStruct::get(STy, Elts); @@ -2435,8 +2439,11 @@ static Constant *EvaluateStoreInto(Constant *Init, Constant *Val, Elts.push_back(Init->getAggregateElement(i)); assert(CI->getZExtValue() < NumElts); + Constant *OrigElem = Elts[CI->getZExtValue()]; + if (OrigElem->getType()->isAggregateType()) + Obsolete.insert(OrigElem); Elts[CI->getZExtValue()] = - EvaluateStoreInto(Elts[CI->getZExtValue()], Val, Addr, OpNo+1); + EvaluateStoreInto(OrigElem, Val, Addr, OpNo+1, Obsolete); if (Init->getType()->isArrayTy()) return ConstantArray::get(cast<ArrayType>(InitTy), Elts); @@ -2452,9 +2459,20 @@ static void CommitValueTo(Constant *Val, Constant *Addr) { return; } + // Collect obsolete constants created in previous CommitValueTo() invoke. + SetVector<Constant*> Obsolete; ConstantExpr *CE = cast<ConstantExpr>(Addr); GlobalVariable *GV = cast<GlobalVariable>(CE->getOperand(0)); - GV->setInitializer(EvaluateStoreInto(GV->getInitializer(), Val, CE, 2)); + Constant *OrigInit = GV->getInitializer(); + if (OrigInit->getType()->isAggregateType()) + Obsolete.insert(OrigInit); + Constant *Init = EvaluateStoreInto(OrigInit, Val, CE, 2, Obsolete); + GV->setInitializer(Init); + + for (unsigned i = 0; i < Obsolete.size(); ++i) { + if (Obsolete[i]->use_empty()) + Obsolete[i]->destroyConstant(); + } } namespace { diff --git a/test/Transforms/GlobalOpt/big-memory-footprint.ll b/test/Transforms/GlobalOpt/big-memory-footprint.ll new file mode 100644 index 0000000000..ebde180b11 --- /dev/null +++ b/test/Transforms/GlobalOpt/big-memory-footprint.ll @@ -0,0 +1,8309 @@ +; RUN: opt < %s -globalopt -disable-output +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +%struct.B = type { %struct.A, i32, i32 } +%struct.A = type { %struct.A3 } +%struct.A3 = type { %struct.A2, i32 } +%struct.A2 = type { %struct.A20 } +%struct.A20 = type { %struct.A1, i32 } +%struct.A1 = type { %struct.A0 } +%struct.A0 = type { i32 } + +@ROM = global [4 x [2048 x %struct.B]] zeroinitializer, align 16 +@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }] + +define internal void @__cxx_global_var_init() section ".text.startup" { +entry: + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 0), i32 0, i32 0, i32 0, i32 0, i32 0) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 1), i32 0, i32 1, i32 0, i32 0, i32 1) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 2), i32 0, i32 2, i32 0, i32 0, i32 2) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 3), i32 0, i32 3, i32 0, i32 0, i32 3) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 4), i32 0, i32 4, i32 0, i32 0, i32 4) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 5), i32 0, i32 5, i32 0, i32 0, i32 5) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 6), i32 0, i32 6, i32 0, i32 0, i32 6) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 7), i32 0, i32 7, i32 0, i32 0, i32 7) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 8), i32 0, i32 8, i32 0, i32 0, i32 8) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 9), i32 0, i32 9, i32 0, i32 0, i32 9) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 10), i32 0, i32 10, i32 0, i32 0, i32 10) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 11), i32 0, i32 11, i32 0, i32 0, i32 11) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 12), i32 0, i32 12, i32 0, i32 0, i32 12) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 13), i32 0, i32 13, i32 0, i32 0, i32 13) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 14), i32 0, i32 14, i32 0, i32 0, i32 14) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 15), i32 0, i32 15, i32 0, i32 0, i32 15) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 16), i32 0, i32 16, i32 0, i32 0, i32 16) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 17), i32 0, i32 17, i32 0, i32 0, i32 17) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 18), i32 0, i32 18, i32 0, i32 0, i32 18) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 19), i32 0, i32 19, i32 0, i32 0, i32 19) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 20), i32 0, i32 20, i32 0, i32 0, i32 20) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 21), i32 0, i32 21, i32 0, i32 0, i32 21) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 22), i32 0, i32 22, i32 0, i32 0, i32 22) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 23), i32 0, i32 23, i32 0, i32 0, i32 23) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 24), i32 0, i32 24, i32 0, i32 0, i32 24) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 25), i32 0, i32 25, i32 0, i32 0, i32 25) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 26), i32 0, i32 26, i32 0, i32 0, i32 26) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 27), i32 0, i32 27, i32 0, i32 0, i32 27) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 28), i32 0, i32 28, i32 0, i32 0, i32 28) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 29), i32 0, i32 29, i32 0, i32 0, i32 29) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 30), i32 0, i32 30, i32 0, i32 0, i32 30) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 31), i32 0, i32 31, i32 0, i32 0, i32 31) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 32), i32 0, i32 32, i32 0, i32 0, i32 32) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 33), i32 0, i32 33, i32 0, i32 0, i32 33) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 34), i32 0, i32 34, i32 0, i32 0, i32 34) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 35), i32 0, i32 35, i32 0, i32 0, i32 35) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 36), i32 0, i32 36, i32 0, i32 0, i32 36) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 37), i32 0, i32 37, i32 0, i32 0, i32 37) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 38), i32 0, i32 38, i32 0, i32 0, i32 38) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 39), i32 0, i32 39, i32 0, i32 0, i32 39) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 40), i32 0, i32 40, i32 0, i32 0, i32 40) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 41), i32 0, i32 41, i32 0, i32 0, i32 41) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 42), i32 0, i32 42, i32 0, i32 0, i32 42) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 43), i32 0, i32 43, i32 0, i32 0, i32 43) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 44), i32 0, i32 44, i32 0, i32 0, i32 44) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 45), i32 0, i32 45, i32 0, i32 0, i32 45) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 46), i32 0, i32 46, i32 0, i32 0, i32 46) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 47), i32 0, i32 47, i32 0, i32 0, i32 47) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 48), i32 0, i32 48, i32 0, i32 0, i32 48) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 49), i32 0, i32 49, i32 0, i32 0, i32 49) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 50), i32 0, i32 50, i32 0, i32 0, i32 50) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 51), i32 0, i32 51, i32 0, i32 0, i32 51) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 52), i32 0, i32 52, i32 0, i32 0, i32 52) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 53), i32 0, i32 53, i32 0, i32 0, i32 53) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 54), i32 0, i32 54, i32 0, i32 0, i32 54) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 55), i32 0, i32 55, i32 0, i32 0, i32 55) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 56), i32 0, i32 56, i32 0, i32 0, i32 56) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 57), i32 0, i32 57, i32 0, i32 0, i32 57) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 58), i32 0, i32 58, i32 0, i32 0, i32 58) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 59), i32 0, i32 59, i32 0, i32 0, i32 59) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 60), i32 0, i32 60, i32 0, i32 0, i32 60) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 61), i32 0, i32 61, i32 0, i32 0, i32 61) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 62), i32 0, i32 62, i32 0, i32 0, i32 62) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 63), i32 0, i32 63, i32 0, i32 0, i32 63) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 64), i32 0, i32 64, i32 0, i32 0, i32 64) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 65), i32 0, i32 65, i32 0, i32 0, i32 65) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 66), i32 0, i32 66, i32 0, i32 0, i32 66) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 67), i32 0, i32 67, i32 0, i32 0, i32 67) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 68), i32 0, i32 68, i32 0, i32 0, i32 68) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 69), i32 0, i32 69, i32 0, i32 0, i32 69) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 70), i32 0, i32 70, i32 0, i32 0, i32 70) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 71), i32 0, i32 71, i32 0, i32 0, i32 71) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 72), i32 0, i32 72, i32 0, i32 0, i32 72) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 73), i32 0, i32 73, i32 0, i32 0, i32 73) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 74), i32 0, i32 74, i32 0, i32 0, i32 74) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 75), i32 0, i32 75, i32 0, i32 0, i32 75) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 76), i32 0, i32 76, i32 0, i32 0, i32 76) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 77), i32 0, i32 77, i32 0, i32 0, i32 77) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 78), i32 0, i32 78, i32 0, i32 0, i32 78) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 79), i32 0, i32 79, i32 0, i32 0, i32 79) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 80), i32 0, i32 80, i32 0, i32 0, i32 80) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 81), i32 0, i32 81, i32 0, i32 0, i32 81) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 82), i32 0, i32 82, i32 0, i32 0, i32 82) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 83), i32 0, i32 83, i32 0, i32 0, i32 83) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 84), i32 0, i32 84, i32 0, i32 0, i32 84) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 85), i32 0, i32 85, i32 0, i32 0, i32 85) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 86), i32 0, i32 86, i32 0, i32 0, i32 86) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 87), i32 0, i32 87, i32 0, i32 0, i32 87) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 88), i32 0, i32 88, i32 0, i32 0, i32 88) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 89), i32 0, i32 89, i32 0, i32 0, i32 89) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 90), i32 0, i32 90, i32 0, i32 0, i32 90) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 91), i32 0, i32 91, i32 0, i32 0, i32 91) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 92), i32 0, i32 92, i32 0, i32 0, i32 92) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 93), i32 0, i32 93, i32 0, i32 0, i32 93) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 94), i32 0, i32 94, i32 0, i32 0, i32 94) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 95), i32 0, i32 95, i32 0, i32 0, i32 95) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 96), i32 0, i32 96, i32 0, i32 0, i32 96) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 97), i32 0, i32 97, i32 0, i32 0, i32 97) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 98), i32 0, i32 98, i32 0, i32 0, i32 98) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 99), i32 0, i32 99, i32 0, i32 0, i32 99) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 100), i32 0, i32 100, i32 0, i32 0, i32 100) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 101), i32 0, i32 101, i32 0, i32 0, i32 101) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 102), i32 0, i32 102, i32 0, i32 0, i32 102) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 103), i32 0, i32 103, i32 0, i32 0, i32 103) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 104), i32 0, i32 104, i32 0, i32 0, i32 104) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 105), i32 0, i32 105, i32 0, i32 0, i32 105) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 106), i32 0, i32 106, i32 0, i32 0, i32 106) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 107), i32 0, i32 107, i32 0, i32 0, i32 107) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 108), i32 0, i32 108, i32 0, i32 0, i32 108) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 109), i32 0, i32 109, i32 0, i32 0, i32 109) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 110), i32 0, i32 110, i32 0, i32 0, i32 110) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 111), i32 0, i32 111, i32 0, i32 0, i32 111) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 112), i32 0, i32 112, i32 0, i32 0, i32 112) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 113), i32 0, i32 113, i32 0, i32 0, i32 113) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 114), i32 0, i32 114, i32 0, i32 0, i32 114) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 115), i32 0, i32 115, i32 0, i32 0, i32 115) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 116), i32 0, i32 116, i32 0, i32 0, i32 116) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 117), i32 0, i32 117, i32 0, i32 0, i32 117) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 118), i32 0, i32 118, i32 0, i32 0, i32 118) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 119), i32 0, i32 119, i32 0, i32 0, i32 119) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 120), i32 0, i32 120, i32 0, i32 0, i32 120) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 121), i32 0, i32 121, i32 0, i32 0, i32 121) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 122), i32 0, i32 122, i32 0, i32 0, i32 122) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 123), i32 0, i32 123, i32 0, i32 0, i32 123) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 124), i32 0, i32 124, i32 0, i32 0, i32 124) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 125), i32 0, i32 125, i32 0, i32 0, i32 125) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 126), i32 0, i32 126, i32 0, i32 0, i32 126) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 127), i32 0, i32 127, i32 0, i32 0, i32 127) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 128), i32 0, i32 128, i32 0, i32 0, i32 128) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 129), i32 0, i32 129, i32 0, i32 0, i32 129) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 130), i32 0, i32 130, i32 0, i32 0, i32 130) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 131), i32 0, i32 131, i32 0, i32 0, i32 131) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 132), i32 0, i32 132, i32 0, i32 0, i32 132) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 133), i32 0, i32 133, i32 0, i32 0, i32 133) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 134), i32 0, i32 134, i32 0, i32 0, i32 134) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 135), i32 0, i32 135, i32 0, i32 0, i32 135) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 136), i32 0, i32 136, i32 0, i32 0, i32 136) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 137), i32 0, i32 137, i32 0, i32 0, i32 137) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 138), i32 0, i32 138, i32 0, i32 0, i32 138) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 139), i32 0, i32 139, i32 0, i32 0, i32 139) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 140), i32 0, i32 140, i32 0, i32 0, i32 140) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 141), i32 0, i32 141, i32 0, i32 0, i32 141) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 142), i32 0, i32 142, i32 0, i32 0, i32 142) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 143), i32 0, i32 143, i32 0, i32 0, i32 143) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 144), i32 0, i32 144, i32 0, i32 0, i32 144) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 145), i32 0, i32 145, i32 0, i32 0, i32 145) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 146), i32 0, i32 146, i32 0, i32 0, i32 146) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 147), i32 0, i32 147, i32 0, i32 0, i32 147) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 148), i32 0, i32 148, i32 0, i32 0, i32 148) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 149), i32 0, i32 149, i32 0, i32 0, i32 149) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 150), i32 0, i32 150, i32 0, i32 0, i32 150) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 151), i32 0, i32 151, i32 0, i32 0, i32 151) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 152), i32 0, i32 152, i32 0, i32 0, i32 152) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 153), i32 0, i32 153, i32 0, i32 0, i32 153) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 154), i32 0, i32 154, i32 0, i32 0, i32 154) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 155), i32 0, i32 155, i32 0, i32 0, i32 155) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 156), i32 0, i32 156, i32 0, i32 0, i32 156) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 157), i32 0, i32 157, i32 0, i32 0, i32 157) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 158), i32 0, i32 158, i32 0, i32 0, i32 158) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 159), i32 0, i32 159, i32 0, i32 0, i32 159) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 160), i32 0, i32 160, i32 0, i32 0, i32 160) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 161), i32 0, i32 161, i32 0, i32 0, i32 161) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 162), i32 0, i32 162, i32 0, i32 0, i32 162) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 163), i32 0, i32 163, i32 0, i32 0, i32 163) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 164), i32 0, i32 164, i32 0, i32 0, i32 164) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 165), i32 0, i32 165, i32 0, i32 0, i32 165) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 166), i32 0, i32 166, i32 0, i32 0, i32 166) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 167), i32 0, i32 167, i32 0, i32 0, i32 167) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 168), i32 0, i32 168, i32 0, i32 0, i32 168) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 169), i32 0, i32 169, i32 0, i32 0, i32 169) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 170), i32 0, i32 170, i32 0, i32 0, i32 170) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 171), i32 0, i32 171, i32 0, i32 0, i32 171) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 172), i32 0, i32 172, i32 0, i32 0, i32 172) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 173), i32 0, i32 173, i32 0, i32 0, i32 173) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 174), i32 0, i32 174, i32 0, i32 0, i32 174) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 175), i32 0, i32 175, i32 0, i32 0, i32 175) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 176), i32 0, i32 176, i32 0, i32 0, i32 176) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 177), i32 0, i32 177, i32 0, i32 0, i32 177) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 178), i32 0, i32 178, i32 0, i32 0, i32 178) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 179), i32 0, i32 179, i32 0, i32 0, i32 179) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 180), i32 0, i32 180, i32 0, i32 0, i32 180) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 181), i32 0, i32 181, i32 0, i32 0, i32 181) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 182), i32 0, i32 182, i32 0, i32 0, i32 182) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 183), i32 0, i32 183, i32 0, i32 0, i32 183) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 184), i32 0, i32 184, i32 0, i32 0, i32 184) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 185), i32 0, i32 185, i32 0, i32 0, i32 185) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 186), i32 0, i32 186, i32 0, i32 0, i32 186) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 187), i32 0, i32 187, i32 0, i32 0, i32 187) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 188), i32 0, i32 188, i32 0, i32 0, i32 188) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 189), i32 0, i32 189, i32 0, i32 0, i32 189) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 190), i32 0, i32 190, i32 0, i32 0, i32 190) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 191), i32 0, i32 191, i32 0, i32 0, i32 191) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 192), i32 0, i32 192, i32 0, i32 0, i32 192) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 193), i32 0, i32 193, i32 0, i32 0, i32 193) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 194), i32 0, i32 194, i32 0, i32 0, i32 194) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 195), i32 0, i32 195, i32 0, i32 0, i32 195) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 196), i32 0, i32 196, i32 0, i32 0, i32 196) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 197), i32 0, i32 197, i32 0, i32 0, i32 197) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 198), i32 0, i32 198, i32 0, i32 0, i32 198) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 199), i32 0, i32 199, i32 0, i32 0, i32 199) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 200), i32 0, i32 200, i32 0, i32 0, i32 200) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 201), i32 0, i32 201, i32 0, i32 0, i32 201) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 202), i32 0, i32 202, i32 0, i32 0, i32 202) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 203), i32 0, i32 203, i32 0, i32 0, i32 203) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 204), i32 0, i32 204, i32 0, i32 0, i32 204) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 205), i32 0, i32 205, i32 0, i32 0, i32 205) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 206), i32 0, i32 206, i32 0, i32 0, i32 206) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 207), i32 0, i32 207, i32 0, i32 0, i32 207) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 208), i32 0, i32 208, i32 0, i32 0, i32 208) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 209), i32 0, i32 209, i32 0, i32 0, i32 209) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 210), i32 0, i32 210, i32 0, i32 0, i32 210) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 211), i32 0, i32 211, i32 0, i32 0, i32 211) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 212), i32 0, i32 212, i32 0, i32 0, i32 212) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 213), i32 0, i32 213, i32 0, i32 0, i32 213) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 214), i32 0, i32 214, i32 0, i32 0, i32 214) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 215), i32 0, i32 215, i32 0, i32 0, i32 215) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 216), i32 0, i32 216, i32 0, i32 0, i32 216) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 217), i32 0, i32 217, i32 0, i32 0, i32 217) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 218), i32 0, i32 218, i32 0, i32 0, i32 218) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 219), i32 0, i32 219, i32 0, i32 0, i32 219) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 220), i32 0, i32 220, i32 0, i32 0, i32 220) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 221), i32 0, i32 221, i32 0, i32 0, i32 221) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 222), i32 0, i32 222, i32 0, i32 0, i32 222) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 223), i32 0, i32 223, i32 0, i32 0, i32 223) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 224), i32 0, i32 224, i32 0, i32 0, i32 224) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 225), i32 0, i32 225, i32 0, i32 0, i32 225) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 226), i32 0, i32 226, i32 0, i32 0, i32 226) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 227), i32 0, i32 227, i32 0, i32 0, i32 227) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 228), i32 0, i32 228, i32 0, i32 0, i32 228) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 229), i32 0, i32 229, i32 0, i32 0, i32 229) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 230), i32 0, i32 230, i32 0, i32 0, i32 230) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 231), i32 0, i32 231, i32 0, i32 0, i32 231) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 232), i32 0, i32 232, i32 0, i32 0, i32 232) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 233), i32 0, i32 233, i32 0, i32 0, i32 233) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 234), i32 0, i32 234, i32 0, i32 0, i32 234) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 235), i32 0, i32 235, i32 0, i32 0, i32 235) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 236), i32 0, i32 236, i32 0, i32 0, i32 236) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 237), i32 0, i32 237, i32 0, i32 0, i32 237) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 238), i32 0, i32 238, i32 0, i32 0, i32 238) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 239), i32 0, i32 239, i32 0, i32 0, i32 239) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 240), i32 0, i32 240, i32 0, i32 0, i32 240) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 241), i32 0, i32 241, i32 0, i32 0, i32 241) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 242), i32 0, i32 242, i32 0, i32 0, i32 242) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 243), i32 0, i32 243, i32 0, i32 0, i32 243) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 244), i32 0, i32 244, i32 0, i32 0, i32 244) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 245), i32 0, i32 245, i32 0, i32 0, i32 245) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 246), i32 0, i32 246, i32 0, i32 0, i32 246) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 247), i32 0, i32 247, i32 0, i32 0, i32 247) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 248), i32 0, i32 248, i32 0, i32 0, i32 248) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 249), i32 0, i32 249, i32 0, i32 0, i32 249) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 250), i32 0, i32 250, i32 0, i32 0, i32 250) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 251), i32 0, i32 251, i32 0, i32 0, i32 251) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 252), i32 0, i32 252, i32 0, i32 0, i32 252) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 253), i32 0, i32 253, i32 0, i32 0, i32 253) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 254), i32 0, i32 254, i32 0, i32 0, i32 254) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 255), i32 0, i32 255, i32 0, i32 0, i32 255) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 256), i32 0, i32 256, i32 0, i32 0, i32 256) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 257), i32 0, i32 257, i32 0, i32 0, i32 257) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 258), i32 0, i32 258, i32 0, i32 0, i32 258) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 259), i32 0, i32 259, i32 0, i32 0, i32 259) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 260), i32 0, i32 260, i32 0, i32 0, i32 260) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 261), i32 0, i32 261, i32 0, i32 0, i32 261) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 262), i32 0, i32 262, i32 0, i32 0, i32 262) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 263), i32 0, i32 263, i32 0, i32 0, i32 263) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 264), i32 0, i32 264, i32 0, i32 0, i32 264) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 265), i32 0, i32 265, i32 0, i32 0, i32 265) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 266), i32 0, i32 266, i32 0, i32 0, i32 266) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 267), i32 0, i32 267, i32 0, i32 0, i32 267) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 268), i32 0, i32 268, i32 0, i32 0, i32 268) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 269), i32 0, i32 269, i32 0, i32 0, i32 269) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 270), i32 0, i32 270, i32 0, i32 0, i32 270) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 271), i32 0, i32 271, i32 0, i32 0, i32 271) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 272), i32 0, i32 272, i32 0, i32 0, i32 272) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 273), i32 0, i32 273, i32 0, i32 0, i32 273) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 274), i32 0, i32 274, i32 0, i32 0, i32 274) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 275), i32 0, i32 275, i32 0, i32 0, i32 275) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 276), i32 0, i32 276, i32 0, i32 0, i32 276) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 277), i32 0, i32 277, i32 0, i32 0, i32 277) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 278), i32 0, i32 278, i32 0, i32 0, i32 278) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 279), i32 0, i32 279, i32 0, i32 0, i32 279) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 280), i32 0, i32 280, i32 0, i32 0, i32 280) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 281), i32 0, i32 281, i32 0, i32 0, i32 281) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 282), i32 0, i32 282, i32 0, i32 0, i32 282) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 283), i32 0, i32 283, i32 0, i32 0, i32 283) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 284), i32 0, i32 284, i32 0, i32 0, i32 284) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 285), i32 0, i32 285, i32 0, i32 0, i32 285) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 286), i32 0, i32 286, i32 0, i32 0, i32 286) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 287), i32 0, i32 287, i32 0, i32 0, i32 287) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 288), i32 0, i32 288, i32 0, i32 0, i32 288) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 289), i32 0, i32 289, i32 0, i32 0, i32 289) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 290), i32 0, i32 290, i32 0, i32 0, i32 290) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 291), i32 0, i32 291, i32 0, i32 0, i32 291) + call void @_ZN1BC1Eiiiii(%struct.B* getelementptr inbounds ([4 x [2048 x %struct.B]]* @ROM, i64 0, i64 0, i64 292), i32 0, i32 292, i32 0, i32 0, i32 292) + call void @_ZN1 |