diff --git a/llvm/include/llvm/Transforms/Scalar/LoopPassManager.h b/llvm/include/llvm/Transforms/Scalar/LoopPassManager.h --- a/llvm/include/llvm/Transforms/Scalar/LoopPassManager.h +++ b/llvm/include/llvm/Transforms/Scalar/LoopPassManager.h @@ -271,6 +271,10 @@ SkipCurrentLoop = true; } +#ifndef NDEBUG + void setParentLoop(Loop *L) { ParentL = L; } +#endif + /// Loop passes should use this method to indicate they have added new child /// loops of the current loop. /// diff --git a/llvm/lib/Transforms/Scalar/LoopPassManager.cpp b/llvm/lib/Transforms/Scalar/LoopPassManager.cpp --- a/llvm/lib/Transforms/Scalar/LoopPassManager.cpp +++ b/llvm/lib/Transforms/Scalar/LoopPassManager.cpp @@ -114,6 +114,13 @@ // Check if the current pass preserved the loop-nest object or not. IsLoopNestPtrValid &= PassPA->getChecker().preserved(); +#ifndef NDEBUG + // After running the loop pass, the parent loop might change and we need to + // notify the updater, otherwise U.ParentL might gets outdated and triggers + // assertion failures in addSiblingLoops and addChildLoops. + U.setParentLoop(L.getParentLoop()); +#endif + // FIXME: Historically, the pass managers all called the LLVM context's // yield function here. We don't have a generic way to acquire the // context and it isn't yet clear what the right pattern is for yielding @@ -158,6 +165,13 @@ // aggregate preserved set for this pass manager. PA.intersect(std::move(*PassPA)); +#ifndef NDEBUG + // After running the loop pass, the parent loop might change and we need to + // notify the updater, otherwise U.ParentL might gets outdated and triggers + // assertion failures in addSiblingLoops and addChildLoops. + U.setParentLoop(L.getParentLoop()); +#endif + // FIXME: Historically, the pass managers all called the LLVM context's // yield function here. We don't have a generic way to acquire the // context and it isn't yet clear what the right pattern is for yielding diff --git a/llvm/test/Transforms/Util/pr49185.ll b/llvm/test/Transforms/Util/pr49185.ll new file mode 100644 --- /dev/null +++ b/llvm/test/Transforms/Util/pr49185.ll @@ -0,0 +1,1054 @@ +; REQUIRES: asserts +; RUN: opt -S -passes='default' %s +%struct0 = type { i64, i64, i32, i64, i32 } +%struct1 = type { i32 } +%union0 = type { i32 } +%union1 = type { i16 } +%union2 = type { i32 } + +@.str = external dso_local unnamed_addr constant [2 x i16], align 1 +@g_6 = external dso_local global i32, align 1 +@.str.1 = external dso_local unnamed_addr constant [4 x i16], align 1 +@g_48 = external dso_local global i64, align 1 +@.str.2 = external dso_local unnamed_addr constant [5 x i16], align 1 +@.str.3 = external dso_local unnamed_addr constant [11 x i16], align 1 +@.str.4 = external dso_local unnamed_addr constant [11 x i16], align 1 +@.str.5 = external dso_local unnamed_addr constant [14 x i16], align 1 +@g_53 = external dso_local global [5 x i16], align 1 +@.str.6 = external dso_local unnamed_addr constant [8 x i16], align 1 +@g_56 = external dso_local global i64, align 1 +@.str.7 = external dso_local unnamed_addr constant [5 x i16], align 1 +@g_58 = external dso_local global %struct0, align 1 +@.str.8 = external dso_local unnamed_addr constant [8 x i16], align 1 +@.str.9 = external dso_local unnamed_addr constant [8 x i16], align 1 +@.str.10 = external dso_local unnamed_addr constant [8 x i16], align 1 +@.str.11 = external dso_local unnamed_addr constant [8 x i16], align 1 +@.str.12 = external dso_local unnamed_addr constant [8 x i16], align 1 +@g_60 = external dso_local global i16, align 1 +@.str.13 = external dso_local unnamed_addr constant [5 x i16], align 1 +@g_66 = external dso_local global i16, align 1 +@.str.14 = external dso_local unnamed_addr constant [5 x i16], align 1 +@g_70 = external dso_local global i16, align 1 +@.str.15 = external dso_local unnamed_addr constant [5 x i16], align 1 +@.str.16 = external dso_local unnamed_addr constant [8 x i16], align 1 +@.str.17 = external dso_local unnamed_addr constant [8 x i16], align 1 +@g_85 = external dso_local global i32, align 1 +@.str.18 = external dso_local unnamed_addr constant [5 x i16], align 1 +@g_93 = external dso_local global %struct1, align 1 +@.str.19 = external dso_local unnamed_addr constant [8 x i16], align 1 +@g_106 = external dso_local global i32, align 1 +@.str.20 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_112 = external dso_local global [5 x i16], align 1 +@.str.21 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_133 = external dso_local global %struct0, align 1 +@.str.22 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.23 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.24 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.25 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.26 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_179 = external dso_local global %struct1, align 1 +@.str.27 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_188 = external dso_local global %union0, align 1 +@.str.28 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.29 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.30 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_209 = external dso_local constant %union1, align 1 +@.str.31 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_235 = external dso_local global i16, align 1 +@.str.32 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_238 = external dso_local global i64, align 1 +@.str.33 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_248 = external dso_local global i16, align 1 +@.str.34 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_249 = external dso_local global [1 x i64], align 1 +@.str.35 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_250 = external dso_local global [5 x [1 x i32]], align 1 +@.str.36 = external dso_local unnamed_addr constant [12 x i16], align 1 +@.str.37 = external dso_local unnamed_addr constant [18 x i16], align 1 +@g_278 = external dso_local global [3 x [3 x i16]], align 1 +@.str.38 = external dso_local unnamed_addr constant [12 x i16], align 1 +@g_297 = external dso_local global %struct1, align 1 +@.str.39 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_309 = external dso_local global %union1, align 1 +@.str.40 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_315 = external dso_local global %struct0, align 1 +@.str.41 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.42 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.43 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.44 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.45 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.46 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_346 = external dso_local global i64, align 1 +@.str.47 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_358 = external dso_local global %struct0, align 1 +@.str.48 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.49 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.50 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.51 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.52 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_359 = external dso_local global %struct0, align 1 +@.str.53 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.54 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.55 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.56 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.57 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_360 = external dso_local global %struct0, align 1 +@.str.58 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.59 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.60 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.61 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.62 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_368 = external dso_local global i16, align 1 +@.str.63 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_383 = external dso_local global %struct0, align 1 +@.str.64 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.65 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.66 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.67 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.68 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_441 = external dso_local global i32, align 1 +@.str.69 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_454 = external dso_local global i32, align 1 +@.str.70 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_464 = external dso_local global %struct1, align 1 +@.str.71 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_496 = external dso_local global i32, align 1 +@.str.72 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_497 = external dso_local global %struct0, align 1 +@.str.73 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.74 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.75 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.76 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.77 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_498 = external dso_local global %struct0, align 1 +@.str.78 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.79 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.80 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.81 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.82 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_551 = external dso_local global %struct0, align 1 +@.str.83 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.84 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.85 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.86 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.87 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_552 = external dso_local global %struct0, align 1 +@.str.88 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.89 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.90 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.91 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.92 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_564 = external dso_local global i64, align 1 +@.str.93 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_619 = external dso_local constant [6 x [2 x [5 x %struct1]]], align 1 +@.str.94 = external dso_local unnamed_addr constant [18 x i16], align 1 +@.str.95 = external dso_local unnamed_addr constant [22 x i16], align 1 +@.str.96 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.97 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_687 = external dso_local global %struct0, align 1 +@.str.98 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.99 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.100 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.101 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.102 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_708 = external dso_local global %union0, align 1 +@.str.103 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.104 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.105 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_737 = external dso_local global [5 x %struct0], align 1 +@.str.106 = external dso_local unnamed_addr constant [12 x i16], align 1 +@.str.107 = external dso_local unnamed_addr constant [12 x i16], align 1 +@.str.108 = external dso_local unnamed_addr constant [12 x i16], align 1 +@.str.109 = external dso_local unnamed_addr constant [12 x i16], align 1 +@.str.110 = external dso_local unnamed_addr constant [12 x i16], align 1 +@g_750 = external dso_local global i32, align 1 +@.str.111 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_751 = external dso_local global i32, align 1 +@.str.112 = external dso_local unnamed_addr constant [6 x i16], align 1 +@.str.113 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.114 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_768 = external dso_local constant %union1, align 1 +@.str.115 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_770 = external dso_local constant %union1, align 1 +@.str.116 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_789 = external dso_local global %struct0, align 1 +@.str.117 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.118 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.119 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.120 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.121 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_823 = external dso_local global %struct0, align 1 +@.str.122 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.123 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.124 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.125 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.126 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_824 = external dso_local global [4 x [6 x [1 x %struct0]]], align 1 +@.str.127 = external dso_local unnamed_addr constant [18 x i16], align 1 +@.str.128 = external dso_local unnamed_addr constant [18 x i16], align 1 +@.str.129 = external dso_local unnamed_addr constant [18 x i16], align 1 +@.str.130 = external dso_local unnamed_addr constant [18 x i16], align 1 +@.str.131 = external dso_local unnamed_addr constant [18 x i16], align 1 +@.str.132 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.133 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_858 = external dso_local global %struct1, align 1 +@.str.134 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_865 = external dso_local global %union0, align 1 +@.str.135 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.136 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.137 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_887 = external dso_local global i32, align 1 +@.str.138 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_897 = external dso_local global %struct0, align 1 +@.str.139 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.140 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.141 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.142 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.143 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_904 = external dso_local global %struct1, align 1 +@.str.144 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.145 = external dso_local unnamed_addr constant [9 x i16], align 1 +@.str.146 = external dso_local unnamed_addr constant [9 x i16], align 1 +@g_998 = external dso_local global i32, align 1 +@.str.147 = external dso_local unnamed_addr constant [6 x i16], align 1 +@g_1028 = external dso_local global %struct0, align 1 +@.str.148 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.149 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.150 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.151 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.152 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1076 = external dso_local constant %struct0, align 1 +@.str.153 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.154 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.155 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.156 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.157 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.158 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.159 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1109 = external dso_local global %struct0, align 1 +@.str.160 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.161 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.162 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.163 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.164 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1117 = external dso_local global [6 x [3 x %struct0]], align 1 +@.str.165 = external dso_local unnamed_addr constant [16 x i16], align 1 +@.str.166 = external dso_local unnamed_addr constant [16 x i16], align 1 +@.str.167 = external dso_local unnamed_addr constant [16 x i16], align 1 +@.str.168 = external dso_local unnamed_addr constant [16 x i16], align 1 +@.str.169 = external dso_local unnamed_addr constant [16 x i16], align 1 +@g_1118 = external dso_local global [1 x %struct0], align 1 +@.str.170 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.171 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.172 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.173 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.174 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.175 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.176 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1150 = external dso_local global %struct0, align 1 +@.str.177 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.178 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.179 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.180 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.181 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1216 = external dso_local global %struct0, align 1 +@.str.182 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.183 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.184 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.185 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.186 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1240 = external dso_local global %struct0, align 1 +@.str.187 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.188 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.189 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.190 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.191 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1241 = external dso_local global [4 x [2 x [3 x %struct0]]], align 1 +@.str.192 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.193 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.194 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.195 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.196 = external dso_local unnamed_addr constant [19 x i16], align 1 +@g_1242 = external dso_local global %struct0, align 1 +@.str.197 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.198 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.199 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.200 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.201 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1268 = external dso_local constant [1 x %struct1], align 1 +@.str.202 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.203 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.204 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1290 = external dso_local global %struct1, align 1 +@.str.205 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.206 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.207 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1302 = external dso_local global [1 x [6 x [4 x %struct0]]], align 1 +@.str.208 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.209 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.210 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.211 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.212 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.213 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.214 = external dso_local unnamed_addr constant [13 x i16], align 1 +@g_1342 = external dso_local global i32, align 1 +@.str.215 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_1372 = external dso_local global i32, align 1 +@.str.216 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_1401 = external dso_local global [6 x %struct0], align 1 +@.str.217 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.218 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.219 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.220 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.221 = external dso_local unnamed_addr constant [13 x i16], align 1 +@g_1405 = external dso_local global %struct0, align 1 +@.str.222 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.223 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.224 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.225 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.226 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1406 = external dso_local global %struct0, align 1 +@.str.227 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.228 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.229 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.230 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.231 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.232 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.233 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1512 = external dso_local global %struct0, align 1 +@.str.234 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.235 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.236 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.237 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.238 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1513 = external dso_local global %struct0, align 1 +@.str.239 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.240 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.241 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.242 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.243 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1545 = external dso_local global %struct0, align 1 +@.str.244 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.245 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.246 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.247 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.248 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1546 = external dso_local global %struct0, align 1 +@.str.249 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.250 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.251 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.252 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.253 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1552 = external dso_local global %struct0, align 1 +@.str.254 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.255 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.256 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.257 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.258 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.259 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.260 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1642 = external dso_local global [6 x %struct0], align 1 +@.str.261 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.262 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.263 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.264 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.265 = external dso_local unnamed_addr constant [13 x i16], align 1 +@g_1691 = external dso_local global %struct1, align 1 +@.str.266 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.267 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.268 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_1721 = external dso_local constant [4 x [2 x i64]], align 1 +@.str.269 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.270 = external dso_local unnamed_addr constant [16 x i16], align 1 +@.str.271 = external dso_local unnamed_addr constant [16 x i16], align 1 +@g_1888 = external dso_local global i64, align 1 +@.str.272 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_1966 = external dso_local global i32, align 1 +@.str.273 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_1989 = external dso_local constant [4 x i32], align 1 +@.str.274 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.275 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.276 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.277 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.278 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2021 = external dso_local global i64, align 1 +@.str.279 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_2065 = external dso_local global %union1, align 1 +@.str.280 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2088 = external dso_local global %struct1, align 1 +@.str.281 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2116 = external dso_local global [3 x i64], align 1 +@.str.282 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.283 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.284 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2235 = external dso_local global %struct0, align 1 +@.str.285 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.286 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.287 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.288 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.289 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2258 = external dso_local constant %struct1, align 1 +@.str.290 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2294 = external dso_local global i64, align 1 +@.str.291 = external dso_local unnamed_addr constant [7 x i16], align 1 +@.str.292 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.293 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2350 = external dso_local global i16, align 1 +@.str.294 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_2371 = external dso_local global %struct0, align 1 +@.str.295 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.296 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.297 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.298 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.299 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2396 = external dso_local global [6 x [5 x [3 x %struct0]]], align 1 +@.str.300 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.301 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.302 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.303 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.304 = external dso_local unnamed_addr constant [19 x i16], align 1 +@g_2418 = external dso_local global [6 x %struct0], align 1 +@.str.305 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.306 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.307 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.308 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.309 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.310 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.311 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2482 = external dso_local global [6 x [5 x i32]], align 1 +@.str.312 = external dso_local unnamed_addr constant [13 x i16], align 1 +@g_2498 = external dso_local constant %struct0, align 1 +@.str.313 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.314 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.315 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.316 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.317 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2531 = external dso_local global %struct0, align 1 +@.str.318 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.319 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.320 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.321 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.322 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.323 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.324 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2612 = external dso_local global %struct0, align 1 +@.str.325 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.326 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.327 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.328 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.329 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2656 = external dso_local global %struct1, align 1 +@.str.330 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.331 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_2718 = external dso_local global [5 x [4 x i32]], align 1 +@.str.332 = external dso_local unnamed_addr constant [13 x i16], align 1 +@g_2790 = external dso_local global %struct0, align 1 +@.str.333 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.334 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.335 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.336 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.337 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2791 = external dso_local global i16, align 1 +@.str.338 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_2829 = external dso_local global %struct0, align 1 +@.str.339 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.340 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.341 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.342 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.343 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2839 = external dso_local global [5 x %struct0], align 1 +@.str.344 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.345 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.346 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.347 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.348 = external dso_local unnamed_addr constant [13 x i16], align 1 +@g_2872 = external dso_local global [4 x %struct0], align 1 +@.str.349 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.350 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.351 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.352 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.353 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.354 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.355 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2924 = external dso_local global [5 x [5 x [4 x i32]]], align 1 +@.str.356 = external dso_local unnamed_addr constant [16 x i16], align 1 +@g_2929 = external dso_local global i32, align 1 +@.str.357 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_2964 = external dso_local global %struct0, align 1 +@.str.358 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.359 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.360 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.361 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.362 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2969 = external dso_local constant %struct0, align 1 +@.str.363 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.364 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.365 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.366 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.367 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2973 = external dso_local global %struct0, align 1 +@.str.368 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.369 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.370 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.371 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.372 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2974 = external dso_local global %struct0, align 1 +@.str.373 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.374 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.375 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.376 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.377 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_2975 = external dso_local global %struct0, align 1 +@.str.378 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.379 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.380 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.381 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.382 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3008 = external dso_local global [2 x %struct0], align 1 +@.str.383 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.384 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.385 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.386 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.387 = external dso_local unnamed_addr constant [13 x i16], align 1 +@g_3030 = external dso_local global %struct0, align 1 +@.str.388 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.389 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.390 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.391 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.392 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3039 = external dso_local constant [6 x %struct1], align 1 +@.str.393 = external dso_local unnamed_addr constant [13 x i16], align 1 +@g_3074 = external dso_local global i16, align 1 +@.str.394 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_3091 = external dso_local global i16, align 1 +@.str.395 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_3094 = external dso_local constant %struct0, align 1 +@.str.396 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.397 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.398 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.399 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.400 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3095 = external dso_local global [5 x [5 x %struct0]], align 1 +@.str.401 = external dso_local unnamed_addr constant [16 x i16], align 1 +@.str.402 = external dso_local unnamed_addr constant [16 x i16], align 1 +@.str.403 = external dso_local unnamed_addr constant [16 x i16], align 1 +@.str.404 = external dso_local unnamed_addr constant [16 x i16], align 1 +@.str.405 = external dso_local unnamed_addr constant [16 x i16], align 1 +@g_3113 = external dso_local global [1 x [6 x [2 x %struct0]]], align 1 +@.str.406 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.407 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.408 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.409 = external dso_local unnamed_addr constant [19 x i16], align 1 +@.str.410 = external dso_local unnamed_addr constant [19 x i16], align 1 +@g_3152 = external dso_local constant %struct1, align 1 +@.str.411 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.412 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.413 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3229 = external dso_local global %struct0, align 1 +@.str.414 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.415 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.416 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.417 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.418 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3340 = external dso_local global %struct1, align 1 +@.str.419 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3346 = external dso_local global %struct0, align 1 +@.str.420 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.421 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.422 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.423 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.424 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.425 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.426 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.427 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.428 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3399 = external dso_local global [4 x [6 x %struct0]], align 1 +@.str.429 = external dso_local unnamed_addr constant [16 x i16], align 1 +@.str.430 = external dso_local unnamed_addr constant [16 x i16], align 1 +@.str.431 = external dso_local unnamed_addr constant [16 x i16], align 1 +@.str.432 = external dso_local unnamed_addr constant [16 x i16], align 1 +@.str.433 = external dso_local unnamed_addr constant [16 x i16], align 1 +@g_3413 = external dso_local global %struct0, align 1 +@.str.434 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.435 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.436 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.437 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.438 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3439 = external dso_local global %struct0, align 1 +@.str.439 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.440 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.441 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.442 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.443 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.444 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.445 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3491 = external dso_local global i32, align 1 +@.str.446 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_3492 = external dso_local global i32, align 1 +@.str.447 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_3499 = external dso_local global %struct0, align 1 +@.str.448 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.449 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.450 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.451 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.452 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.453 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.454 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.455 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.456 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.457 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.458 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3539 = external dso_local global %struct0, align 1 +@.str.459 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.460 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.461 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.462 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.463 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3550 = external dso_local global %struct0, align 1 +@.str.464 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.465 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.466 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.467 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.468 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3555 = external dso_local global i16, align 1 +@.str.469 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_3583 = external dso_local global i64, align 1 +@.str.470 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_3656 = external dso_local global i32, align 1 +@.str.471 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_3722 = external dso_local global %struct1, align 1 +@.str.472 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3788 = external dso_local global i32, align 1 +@.str.473 = external dso_local unnamed_addr constant [7 x i16], align 1 +@g_3798 = external dso_local global [1 x %struct0], align 1 +@.str.474 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.475 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.476 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.477 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.478 = external dso_local unnamed_addr constant [13 x i16], align 1 +@g_3840 = external dso_local global [3 x %struct0], align 1 +@.str.479 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.480 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.481 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.482 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.483 = external dso_local unnamed_addr constant [13 x i16], align 1 +@g_3842 = external dso_local global i32, align 1 +@.str.484 = external dso_local unnamed_addr constant [7 x i16], align 1 +@.str.485 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.486 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.487 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.488 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3917 = external dso_local constant %struct0, align 1 +@.str.489 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.490 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.491 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.492 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.493 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.494 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.495 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3963 = external dso_local global [6 x i64], align 1 +@.str.496 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_3983 = external dso_local global [6 x [4 x %struct1]], align 1 +@.str.497 = external dso_local unnamed_addr constant [16 x i16], align 1 +@g_4003 = external dso_local global %struct1, align 1 +@.str.498 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_4037 = external dso_local constant [2 x %struct0], align 1 +@.str.499 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.500 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.501 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.502 = external dso_local unnamed_addr constant [13 x i16], align 1 +@.str.503 = external dso_local unnamed_addr constant [13 x i16], align 1 +@g_4038 = external dso_local global %struct0, align 1 +@.str.504 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.505 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.506 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.507 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.508 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.509 = external dso_local unnamed_addr constant [10 x i16], align 1 +@.str.510 = external dso_local unnamed_addr constant [10 x i16], align 1 +@g_4077 = external dso_local global %struct1, align 1 +@.str.511 = external dso_local unnamed_addr constant [10 x i16], align 1 +@crc32_context = external dso_local global i32, align 1 +@crc32_tab = external dso_local global [256 x i32], align 1 +@g_2685 = external dso_local global %struct1*, align 1 +@g_679 = external dso_local global i16**, align 1 +@g_3685 = external dso_local global i32**, align 1 +@g_2067 = external dso_local global i32*, align 1 +@g_216 = external dso_local global %union2**, align 1 +@g_2895 = external dso_local global [1 x %struct0****], align 1 +@g_975 = external dso_local global [3 x i32***], align 1 +@g_932 = external dso_local global i64**, align 1 +@g_610 = external dso_local constant i32*, align 1 +@g_2107 = external dso_local global i64***, align 1 +@g_3352 = external dso_local global i16***, align 1 +@g_1862 = external dso_local global i32**, align 1 +@g_680 = external dso_local global i16*, align 1 +@g_2106 = external dso_local global i64****, align 1 +@g_884 = external dso_local global %union1*, align 1 +@g_2414 = external dso_local global i64**, align 1 +@g_2370 = external dso_local global %union2***, align 1 +@g_3593 = external dso_local global i32***, align 1 +@g_933 = external dso_local global i64*, align 1 +@g_3834 = external dso_local global i32****, align 1 +@g_1356 = external dso_local global [4 x [1 x i64*]], align 1 +@g_1639 = external dso_local global [2 x i16*], align 1 +@g_882 = external dso_local global %union1***, align 1 +@g_323 = external dso_local global %union1*, align 1 +@g_678 = external dso_local global i16***, align 1 +@g_3594 = external dso_local global i32**, align 1 +@g_3598 = external dso_local global i32***, align 1 +@g_3395 = external dso_local global i64****, align 1 +@g_2727 = external dso_local global i32****, align 1 +@g_3397 = external dso_local global i64**, align 1 +@g_3438 = external dso_local global i64***, align 1 +@g_3600 = external dso_local global i32*, align 1 +@g_377 = external dso_local global i32*, align 1 +@g_3599 = external dso_local global i32**, align 1 +@g_52 = external dso_local global [2 x [1 x [4 x i16*]]], align 1 +@g_4039 = external dso_local global i32*****, align 1 +@g_3189 = external dso_local global i32****, align 1 +@g_2840 = external dso_local global %struct0*, align 1 +@g_1863 = external dso_local global i32*, align 1 +@g_81 = external dso_local global %union2*, align 1 +@g_976 = external dso_local global [2 x i32**], align 1 +@g_977 = external dso_local global [2 x [5 x [2 x i32*]]], align 1 +@g_3353 = external dso_local global [1 x [5 x [4 x i16**]]], align 1 +@g_2415 = external dso_local constant i64*, align 1 +@g_883 = external dso_local global %union1**, align 1 +@g_3396 = external dso_local global i64***, align 1 +@g_2728 = external dso_local global i32***, align 1 +@g_2729 = external dso_local global i32**, align 1 +@g_3398 = external dso_local global i64*, align 1 +@g_4040 = external dso_local global i32****, align 1 +@g_3190 = external dso_local global i32***, align 1 +@g_3191 = external dso_local global i32**, align 1 +@g_1236 = external dso_local global %union1***, align 1 +@g_864 = external dso_local global %union0*, align 1 +@g_2334 = external dso_local global i64**, align 1 +@g_2376 = external dso_local global %struct0**, align 1 +@g_2333 = external dso_local global i64***, align 1 +@g_2680 = external dso_local global i64****, align 1 +@g_2684 = external dso_local global %struct1**, align 1 +@g_2692 = external dso_local global %struct0***, align 1 +@g_75 = external dso_local global i32*, align 1 +@g_2726 = external dso_local global i32*****, align 1 +@g_1638 = external dso_local global [6 x i16**], align 1 +@g_1310 = external dso_local global %union2*, align 1 +@g_1607 = external dso_local global i32**, align 1 +@g_410 = external dso_local global i32**, align 1 +@g_1608 = external dso_local global i32**, align 1 +@g_1618 = external dso_local global [1 x [6 x i32***]], align 1 +@g_974 = external dso_local global i32****, align 1 +@g_1621 = external dso_local global i32*****, align 1 +@g_1624 = external dso_local global i32**, align 1 +@g_1640 = external dso_local global i16****, align 1 +@g_1298 = external dso_local global %struct1***, align 1 +@g_1666 = external dso_local global i32**, align 1 +@g_1678 = external dso_local global %union0**, align 1 +@g_1710 = external dso_local global %struct1**, align 1 +@g_1300 = external dso_local global %struct1*, align 1 +@g_1619 = external dso_local global i32**, align 1 +@g_1637 = external dso_local constant i16***, align 1 +@g_1843 = external dso_local global [1 x %struct1***], align 1 +@g_1515 = external dso_local global i32**, align 1 +@g_1316 = external dso_local global i32**, align 1 +@g_1897 = external dso_local global [4 x %union1*****], align 1 +@g_2368 = external dso_local constant i32**, align 1 +@g_2335 = external dso_local global i64*, align 1 +@g_2208 = external dso_local global [1 x %union0**], align 1 +@g_1307 = external dso_local global [1 x %union2****], align 1 +@g_322 = external dso_local global %union1**, align 1 +@g_1308 = external dso_local global [1 x [2 x %union2***]], align 1 +@g_2467 = external dso_local global i32**, align 1 +@g_1042 = external dso_local global %union0**, align 1 +@g_2168 = external dso_local global i32***, align 1 +@g_1641 = external dso_local global i16***, align 1 +@g_1299 = external dso_local global %struct1**, align 1 +@g_1679 = external dso_local constant %union0*, align 1 +@g_80 = external dso_local global %union2**, align 1 +@g_1309 = external dso_local global %union2**, align 1 +@g_2169 = external dso_local global i32**, align 1 +@g_2170 = external dso_local global i32*, align 1 +@g_319 = external dso_local constant i32, align 1 +@g_374 = external dso_local global [3 x i32*], align 1 +@g_570 = external dso_local global i32**, align 1 +@g_585 = external dso_local constant %union2**, align 1 +@g_375 = external dso_local global i32*, align 1 +@g_769 = external dso_local global %union1*, align 1 +@g_2330 = external dso_local global [5 x %struct0*], align 1 +@g_2681 = external dso_local constant [5 x [5 x [5 x i64***]]], align 1 +@g_2682 = external dso_local global i64**, align 1 +@g_2329 = external dso_local global [2 x %struct0**], align 1 +@.str.512 = external dso_local unnamed_addr constant [36 x i16], align 1 +@g_50 = external dso_local global [2 x { i16, i16 }], align 1 +@g_79 = external dso_local global { i16, i16 }, align 1 +@g_686 = external dso_local global { i16, i16 }, align 1 +@g_756 = external dso_local global { i16, i16 }, align 1 +@g_855 = external dso_local global { i16, i16 }, align 1 +@g_910 = external dso_local global { i16, i16 }, align 1 +@g_1093 = external dso_local global { i16, i16 }, align 1 +@g_1149 = external dso_local global { i16, i16 }, align 1 +@g_1269 = external dso_local global { i16, i16 }, align 1 +@g_1301 = external dso_local global { i16, i16 }, align 1 +@g_1320 = external dso_local global [6 x { i16, i16 }], align 1 +@g_1465 = external dso_local global { i16, i16 }, align 1 +@g_1635 = external dso_local constant { i16, i16 }, align 1 +@g_1693 = external dso_local global { i16, i16 }, align 1 +@g_1816 = external dso_local global [5 x [2 x { i16, i16 }]], align 1 +@g_1990 = external dso_local global [3 x [4 x [3 x { i16, i16 }]]], align 1 +@g_2016 = external dso_local global { i16, i16 }, align 1 +@g_2199 = external dso_local global { i16, i16 }, align 1 +@g_2313 = external dso_local global { i16, i16 }, align 1 +@g_2444 = external dso_local global { i16, i16 }, align 1 +@g_2597 = external dso_local global { i16, i16 }, align 1 +@g_2888 = external dso_local constant { i16, i16 }, align 1 +@g_3209 = external dso_local global { i16, i16 }, align 1 +@g_3347 = external dso_local constant { i16, i16 }, align 1 +@g_3387 = external dso_local global { i16, i16 }, align 1 +@g_3478 = external dso_local global { i16, i16 }, align 1 +@g_3502 = external dso_local global { i16, i16 }, align 1 +@g_3516 = external dso_local global { i16, i16 }, align 1 +@g_3519 = external dso_local global { i16, i16 }, align 1 +@g_3898 = external dso_local global { i16, i16 }, align 1 +@g_3899 = external dso_local global { i16, i16 }, align 1 +@g_3942 = external dso_local global { i16, i16 }, align 1 +@g_4045 = external dso_local global { i16, i16 }, align 1 +@.str.546 = external dso_local unnamed_addr constant [16 x i16], align 1 + +define dso_local i16 @main(i16 %argc, i16** %argv) #0 { +entry: + %call2 = call i16 @func_1() + unreachable +} + +; Function Attrs: argmemonly nofree nosync nounwind willreturn +declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1 + +declare dso_local i16 @strcmp(i16*, i16*) #0 + +declare dso_local void @platform_main_begin() #0 + +declare dso_local void @crc32_gentab() #0 + +define internal i16 @func_1() #0 { +entry: + %call = call i16 @func_21(i32* undef, i32 undef, i32* undef) + ret i16 undef +} + +declare dso_local void @transparent_crc(i64, i16*, i16) #0 + +declare dso_local i16 @printf(i16*, ...) #0 + +declare dso_local void @platform_main_end(i32, i16) #0 + +; Function Attrs: argmemonly nofree nosync nounwind willreturn +declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1 + +declare dso_local i32* @func_2(i16, i32*, %union1*) #0 + +declare dso_local void @func_7(%union1*, i32*, i32*) #0 + +declare dso_local i32* @func_10(i32*, %union1*, i32*) #0 + +declare dso_local void @func_14(%union1*, i64, i16, %union0*, i16) #0 + +define internal i16 @func_21(i32* %p_22, i32 %p_23, i32* %p_24) #0 { +entry: + call void @func_34(%struct0* align 1 undef, i32 undef, i32 undef, i32* @g_6, %union0* byval(%union0) align 1 undef) + unreachable +} + +define internal i64 @safe_add_func_uint64_t_u_u(i64 %ui1, i64 %ui2) #0 { +entry: + ret i64 undef +} + +declare dso_local i64 @safe_mod_func_uint64_t_u_u(i64, i64) #0 + +define internal i16 @safe_mul_func_int16_t_s_s(i16 %si1, i16 %si2) #0 { +entry: + ret i16 undef +} + +declare dso_local i16 @safe_mul_func_uint16_t_u_u(i16, i16) #0 + +; Function Attrs: argmemonly nofree nosync nounwind willreturn +declare void @llvm.memcpy.p0i16.p0i16.i32(i16* noalias nocapture writeonly, i16* noalias nocapture readonly, i32, i1 immarg) #1 + +declare dso_local i16 @safe_rshift_func_int16_t_s_s(i16, i16) #0 + +declare dso_local i16 @safe_lshift_func_uint16_t_u_u(i16, i16) #0 + +declare dso_local i32 @safe_add_func_uint32_t_u_u(i32, i32) #0 + +define internal i16 @safe_div_func_uint16_t_u_u(i16 %ui1, i16 %ui2) #0 { +entry: + ret i16 undef +} + +declare dso_local i16 @safe_rshift_func_uint16_t_u_s(i16, i16) #0 + +declare dso_local i32 @safe_sub_func_uint32_t_u_u(i32, i32) #0 + +declare dso_local i64 @safe_div_func_uint64_t_u_u(i64, i64) #0 + +define internal i32 @safe_div_func_int32_t_s_s(i32 %si1, i32 %si2) #0 { +entry: + ret i32 undef +} + +define internal i16 @safe_rshift_func_uint16_t_u_u(i16 %left, i16 %right) #0 { +entry: + ret i16 undef +} + +declare dso_local i16 @safe_lshift_func_int16_t_s_s(i16, i16) #0 + +declare dso_local i16 @safe_add_func_int16_t_s_s(i16, i16) #0 + +declare dso_local i64 @safe_add_func_int64_t_s_s(i64, i64) #0 + +declare dso_local i16 @safe_add_func_uint16_t_u_u(i16, i16) #0 + +declare dso_local i32 @safe_div_func_uint32_t_u_u(i32, i32) #0 + +declare dso_local i32 @safe_sub_func_int32_t_s_s(i32, i32) #0 + +declare dso_local i64 @safe_mod_func_int64_t_s_s(i64, i64) #0 + +declare dso_local i16 @safe_rshift_func_int16_t_s_u(i16, i16) #0 + +define internal i16 @safe_lshift_func_uint16_t_u_s(i16 %left, i16 %right) #0 { +entry: + ret i16 undef +} + +declare dso_local i32 @safe_unary_minus_func_uint32_t_u(i32) #0 + +declare dso_local i16 @safe_mod_func_int16_t_s_s(i16, i16) #0 + +; Function Attrs: noinline +define internal i16 @safe_lshift_func_int16_t_s_u(i16 %left, i16 %right) #2 { +entry: + ret i16 undef +} + +declare dso_local i16 @safe_div_func_int16_t_s_s(i16, i16) #0 + +declare dso_local i64 @safe_unary_minus_func_int64_t_s(i64) #0 + +define internal i64 @safe_sub_func_int64_t_s_s(i64 %si1, i64 %si2) #0 { +entry: + ret i64 undef +} + +declare dso_local i64 @safe_sub_func_uint64_t_u_u(i64, i64) #0 + +; Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly +declare void @llvm.memset.p0i16.i16.i32(i16* nocapture writeonly, i16, i32, i1 immarg) #3 + +declare dso_local i32 @safe_mod_func_int32_t_s_s(i32, i32) #0 + +declare dso_local i32 @safe_unary_minus_func_int32_t_s(i32) #0 + +; Function Attrs: argmemonly nofree nosync nounwind willreturn +declare void @llvm.memmove.p0i16.p0i16.i32(i16* nocapture writeonly, i16* nocapture readonly, i32, i1 immarg) #1 + +declare dso_local %struct0* @func_29(i16, i32*, i64, %struct0*) #0 + +define internal void @func_34(%struct0* %agg.result, i32 %p_35, i32 %p_36, i32* %p_37, %union0* %p_38) #0 { +entry: + %p_37.addr = alloca i32*, align 1 + %cleanup.dest.slot = alloca i32, align 1 + store i32* %p_37, i32** %p_37.addr, align 1 + br label %lbl_898 + +lbl_898: ; preds = %cleanup3097, %entry + br label %lbl_1111 + +lbl_1111: ; preds = %cleanup3097, %lbl_898 + %0 = load i32, i32* getelementptr inbounds (%struct0, %struct0* @g_359, i32 0, i32 4), align 1 + %tobool1833 = icmp ne i32 %0, 0 + br i1 %tobool1833, label %land.rhs1834, label %land.end1851 + +land.rhs1834: ; preds = %lbl_1111 + store i16 0, i16* @g_60, align 1 + br label %land.end1851 + +land.end1851: ; preds = %land.rhs1834, %lbl_1111 + %1 = load i32*, i32** %p_37.addr, align 1 + %2 = load i32, i32* %1, align 1 + %tobool2351 = icmp ne i32 %2, 0 + br i1 %tobool2351, label %if.then2352, label %if.else3029 + +if.then2352: ; preds = %land.end1851 + %3 = load i16, i16* getelementptr inbounds ({ i16, i16 }, { i16, i16 }* @g_79, i32 0, i32 0), align 1, !tbaa !1 + %tobool3011 = icmp ne i16 %3, 0 + call void @llvm.assume(i1 %tobool3011) + store i32 11, i32* %cleanup.dest.slot, align 1 + br label %cleanup3097 + +if.else3029: ; preds = %land.end1851 + store i32 3, i32* getelementptr inbounds (%struct0, %struct0* @g_315, i32 0, i32 4), align 1 + store i32 132, i32* %cleanup.dest.slot, align 1 + br label %cleanup3097 + +cleanup3097: ; preds = %if.else3029, %if.then2352 + %cleanup.dest3113 = load i32, i32* %cleanup.dest.slot, align 1 + switch i32 %cleanup.dest3113, label %cleanup3402 [ + i32 132, label %lbl_1111 + i32 11, label %lbl_898 + ] + +cleanup3402: ; preds = %cleanup3097 + ret void +} + +declare dso_local i32 @func_39(i16) #0 + +define internal i16 @safe_sub_func_uint16_t_u_u(i16 %ui1, i16 %ui2) #0 { +entry: + ret i16 undef +} + +declare dso_local i16 @safe_sub_func_int16_t_s_s(i16, i16) #0 + +declare dso_local i64 @safe_div_func_int64_t_s_s(i64, i64) #0 + +declare dso_local i32 @safe_mod_func_uint32_t_u_u(i32, i32) #0 + +declare dso_local i16 @safe_mod_func_uint16_t_u_u(i16, i16) #0 + +declare dso_local i16 @safe_unary_minus_func_int16_t_s(i16) #0 + +define internal i32 @safe_add_func_int32_t_s_s(i32 %si1, i32 %si2) #0 { +entry: + ret i32 undef +} + +declare dso_local void @func_41(%struct0*, i16, i32*) #0 + +declare dso_local i64 @safe_unary_minus_func_uint64_t_u(i64) #0 + +declare dso_local i16 @safe_unary_minus_func_uint16_t_u(i16) #0 + +declare dso_local void @crc32_8bytes(i64) #0 + +declare dso_local void @crc32_byte(i16) #0 + +; Function Attrs: nofree nosync nounwind willreturn +declare void @llvm.assume(i1 noundef) #4 + +attributes #0 = { "use-soft-float"="false" } +attributes #1 = { argmemonly nofree nosync nounwind willreturn } +attributes #2 = { noinline } +attributes #3 = { argmemonly nofree nosync nounwind willreturn writeonly } +attributes #4 = { nofree nosync nounwind willreturn } + +!llvm.ident = !{!0} + +!0 = !{!"clang version 13.0.0"} +!1 = !{!2, !2, i64 0} +!2 = !{!"omnipotent char", !3, i64 0} +!3 = !{!"Simple C/C++ TBAA"}