1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
llvm-mirror/test/CodeGen/Thumb/remove-unneeded-push-pop.ll
Roger Ferrer Ibanez 3111a83266 [ARM] Fix constant islands pass.
The pass tries to fix a spill of LR that turns out to be unnecessary.
So it removes the tPOP but forgets to remove tPUSH.
This causes the stack be misaligned upon returning the function.

Thus, remove the tPUSH as well in this case.

Differential Revision: https://reviews.llvm.org/D30207

llvm-svn: 295816
2017-02-22 09:06:21 +00:00

1053 lines
41 KiB
LLVM

; RUN: llc -O0 -mtriple thumbv6m-arm-none-eabi < %s | FileCheck %s
@a = external hidden global i32*, align 4
@f = external hidden global i32, align 4
define hidden void @foo() {
entry:
; CHECK-NOT: push {lr}
; CHECK-NOT: pop {pc}
store i32 24654, i32* @f, align 4
br label %if.end
if.end: ; preds = %entry
%0 = load i32*, i32** @a, align 4
%arrayidx1 = getelementptr inbounds i32, i32* %0, i32 2
%1 = load i32, i32* %arrayidx1, align 4
%tobool2 = icmp ne i32 %1, 0
br i1 %tobool2, label %if.then3, label %if.end4
if.then3: ; preds = %if.end
store i32 17785, i32* @f, align 4
br label %if.end4
if.end4: ; preds = %if.then3, %if.end
%2 = load i32*, i32** @a, align 4
%arrayidx5 = getelementptr inbounds i32, i32* %2, i32 3
%3 = load i32, i32* %arrayidx5, align 4
%tobool6 = icmp ne i32 %3, 0
br i1 %tobool6, label %if.then7, label %if.end8
if.then7: ; preds = %if.end4
store i32 10342, i32* @f, align 4
br label %if.end8
if.end8: ; preds = %if.then7, %if.end4
%4 = load i32*, i32** @a, align 4
%arrayidx9 = getelementptr inbounds i32, i32* %4, i32 4
%5 = load i32, i32* %arrayidx9, align 4
%tobool10 = icmp ne i32 %5, 0
br i1 %tobool10, label %if.then11, label %if.end12
if.then11: ; preds = %if.end8
store i32 29082, i32* @f, align 4
br label %if.end12
if.end12: ; preds = %if.then11, %if.end8
%6 = load i32*, i32** @a, align 4
%arrayidx13 = getelementptr inbounds i32, i32* %6, i32 5
%7 = load i32, i32* %arrayidx13, align 4
%tobool14 = icmp ne i32 %7, 0
br i1 %tobool14, label %if.then15, label %if.end16
if.then15: ; preds = %if.end12
store i32 29893, i32* @f, align 4
br label %if.end16
if.end16: ; preds = %if.then15, %if.end12
%8 = load i32*, i32** @a, align 4
%arrayidx17 = getelementptr inbounds i32, i32* %8, i32 6
%9 = load i32, i32* %arrayidx17, align 4
%tobool18 = icmp ne i32 %9, 0
br i1 %tobool18, label %if.then19, label %if.end20
if.then19: ; preds = %if.end16
store i32 19071, i32* @f, align 4
br label %if.end20
if.end20: ; preds = %if.then19, %if.end16
%10 = load i32*, i32** @a, align 4
%arrayidx21 = getelementptr inbounds i32, i32* %10, i32 7
%11 = load i32, i32* %arrayidx21, align 4
%tobool22 = icmp ne i32 %11, 0
br i1 %tobool22, label %if.then23, label %if.end24
if.then23: ; preds = %if.end20
store i32 6154, i32* @f, align 4
br label %if.end24
if.end24: ; preds = %if.then23, %if.end20
%12 = load i32*, i32** @a, align 4
%arrayidx25 = getelementptr inbounds i32, i32* %12, i32 8
%13 = load i32, i32* %arrayidx25, align 4
%tobool26 = icmp ne i32 %13, 0
br i1 %tobool26, label %if.then27, label %if.end28
if.then27: ; preds = %if.end24
store i32 30498, i32* @f, align 4
br label %if.end28
if.end28: ; preds = %if.then27, %if.end24
%14 = load i32*, i32** @a, align 4
%arrayidx29 = getelementptr inbounds i32, i32* %14, i32 9
%15 = load i32, i32* %arrayidx29, align 4
%tobool30 = icmp ne i32 %15, 0
br i1 %tobool30, label %if.then31, label %if.end32
if.then31: ; preds = %if.end28
store i32 16667, i32* @f, align 4
br label %if.end32
if.end32: ; preds = %if.then31, %if.end28
%16 = load i32*, i32** @a, align 4
%arrayidx33 = getelementptr inbounds i32, i32* %16, i32 10
%17 = load i32, i32* %arrayidx33, align 4
%tobool34 = icmp ne i32 %17, 0
br i1 %tobool34, label %if.then35, label %if.end36
if.then35: ; preds = %if.end32
store i32 195, i32* @f, align 4
br label %if.end36
if.end36: ; preds = %if.then35, %if.end32
%18 = load i32*, i32** @a, align 4
%arrayidx37 = getelementptr inbounds i32, i32* %18, i32 11
%19 = load i32, i32* %arrayidx37, align 4
%tobool38 = icmp ne i32 %19, 0
br i1 %tobool38, label %if.then39, label %if.end40
if.then39: ; preds = %if.end36
store i32 14665, i32* @f, align 4
br label %if.end40
if.end40: ; preds = %if.then39, %if.end36
%20 = load i32*, i32** @a, align 4
%arrayidx41 = getelementptr inbounds i32, i32* %20, i32 12
%21 = load i32, i32* %arrayidx41, align 4
%tobool42 = icmp ne i32 %21, 0
br i1 %tobool42, label %if.then43, label %if.end44
if.then43: ; preds = %if.end40
store i32 19305, i32* @f, align 4
br label %if.end44
if.end44: ; preds = %if.then43, %if.end40
%22 = load i32*, i32** @a, align 4
%arrayidx45 = getelementptr inbounds i32, i32* %22, i32 13
%23 = load i32, i32* %arrayidx45, align 4
%tobool46 = icmp ne i32 %23, 0
br i1 %tobool46, label %if.then47, label %if.end48
if.then47: ; preds = %if.end44
store i32 15133, i32* @f, align 4
br label %if.end48
if.end48: ; preds = %if.then47, %if.end44
%24 = load i32*, i32** @a, align 4
%arrayidx49 = getelementptr inbounds i32, i32* %24, i32 14
%25 = load i32, i32* %arrayidx49, align 4
%tobool50 = icmp ne i32 %25, 0
br i1 %tobool50, label %if.then51, label %if.end52
if.then51: ; preds = %if.end48
store i32 19173, i32* @f, align 4
br label %if.end52
if.end52: ; preds = %if.then51, %if.end48
br label %if.then55
if.then55: ; preds = %if.end52
store i32 14025, i32* @f, align 4
br label %if.end56
if.end56: ; preds = %if.then55
%26 = load i32*, i32** @a, align 4
%arrayidx57 = getelementptr inbounds i32, i32* %26, i32 16
%27 = load i32, i32* %arrayidx57, align 4
%tobool58 = icmp ne i32 %27, 0
br i1 %tobool58, label %if.then59, label %if.end60
if.then59: ; preds = %if.end56
store i32 8209, i32* @f, align 4
br label %if.end60
if.end60: ; preds = %if.then59, %if.end56
%28 = load i32*, i32** @a, align 4
%arrayidx61 = getelementptr inbounds i32, i32* %28, i32 17
%29 = load i32, i32* %arrayidx61, align 4
%tobool62 = icmp ne i32 %29, 0
br i1 %tobool62, label %if.then63, label %if.end64
if.then63: ; preds = %if.end60
store i32 29621, i32* @f, align 4
br label %if.end64
if.end64: ; preds = %if.then63, %if.end60
%30 = load i32*, i32** @a, align 4
%arrayidx65 = getelementptr inbounds i32, i32* %30, i32 18
%31 = load i32, i32* %arrayidx65, align 4
%tobool66 = icmp ne i32 %31, 0
br i1 %tobool66, label %if.then67, label %if.end68
if.then67: ; preds = %if.end64
store i32 14963, i32* @f, align 4
br label %if.end68
if.end68: ; preds = %if.then67, %if.end64
%32 = load i32*, i32** @a, align 4
%arrayidx69 = getelementptr inbounds i32, i32* %32, i32 19
%33 = load i32, i32* %arrayidx69, align 4
%tobool70 = icmp ne i32 %33, 0
br i1 %tobool70, label %if.then71, label %if.end72
if.then71: ; preds = %if.end68
store i32 32282, i32* @f, align 4
br label %if.end72
if.end72: ; preds = %if.then71, %if.end68
%34 = load i32*, i32** @a, align 4
%arrayidx73 = getelementptr inbounds i32, i32* %34, i32 20
%35 = load i32, i32* %arrayidx73, align 4
%tobool74 = icmp ne i32 %35, 0
br i1 %tobool74, label %if.then75, label %if.end76
if.then75: ; preds = %if.end72
store i32 3072, i32* @f, align 4
br label %if.end76
if.end76: ; preds = %if.then75, %if.end72
%36 = load i32*, i32** @a, align 4
%arrayidx77 = getelementptr inbounds i32, i32* %36, i32 21
%37 = load i32, i32* %arrayidx77, align 4
%tobool78 = icmp ne i32 %37, 0
br i1 %tobool78, label %if.then79, label %if.end80
if.then79: ; preds = %if.end76
store i32 1992, i32* @f, align 4
br label %if.end80
if.end80: ; preds = %if.then79, %if.end76
%38 = load i32*, i32** @a, align 4
%arrayidx81 = getelementptr inbounds i32, i32* %38, i32 22
%39 = load i32, i32* %arrayidx81, align 4
%tobool82 = icmp ne i32 %39, 0
br i1 %tobool82, label %if.then83, label %if.end84
if.then83: ; preds = %if.end80
store i32 9614, i32* @f, align 4
br label %if.end84
if.end84: ; preds = %if.then83, %if.end80
%40 = load i32*, i32** @a, align 4
%arrayidx85 = getelementptr inbounds i32, i32* %40, i32 23
%41 = load i32, i32* %arrayidx85, align 4
%tobool86 = icmp ne i32 %41, 0
br i1 %tobool86, label %if.then87, label %if.end88
if.then87: ; preds = %if.end84
store i32 25931, i32* @f, align 4
br label %if.end88
if.end88: ; preds = %if.then87, %if.end84
%42 = load i32*, i32** @a, align 4
%arrayidx89 = getelementptr inbounds i32, i32* %42, i32 24
%43 = load i32, i32* %arrayidx89, align 4
%tobool90 = icmp ne i32 %43, 0
br i1 %tobool90, label %if.then91, label %if.end92
if.then91: ; preds = %if.end88
store i32 22035, i32* @f, align 4
br label %if.end92
if.end92: ; preds = %if.then91, %if.end88
%44 = load i32*, i32** @a, align 4
%arrayidx93 = getelementptr inbounds i32, i32* %44, i32 25
%45 = load i32, i32* %arrayidx93, align 4
%tobool94 = icmp ne i32 %45, 0
br i1 %tobool94, label %if.then95, label %if.end96
if.then95: ; preds = %if.end92
store i32 10712, i32* @f, align 4
br label %if.end96
if.end96: ; preds = %if.then95, %if.end92
%46 = load i32*, i32** @a, align 4
%arrayidx97 = getelementptr inbounds i32, i32* %46, i32 26
%47 = load i32, i32* %arrayidx97, align 4
%tobool98 = icmp ne i32 %47, 0
br i1 %tobool98, label %if.then99, label %if.end100
if.then99: ; preds = %if.end96
store i32 18267, i32* @f, align 4
br label %if.end100
if.end100: ; preds = %if.then99, %if.end96
%48 = load i32*, i32** @a, align 4
%arrayidx101 = getelementptr inbounds i32, i32* %48, i32 27
%49 = load i32, i32* %arrayidx101, align 4
%tobool102 = icmp ne i32 %49, 0
br i1 %tobool102, label %if.then103, label %if.end104
if.then103: ; preds = %if.end100
store i32 30432, i32* @f, align 4
br label %if.end104
if.end104: ; preds = %if.then103, %if.end100
%50 = load i32*, i32** @a, align 4
%arrayidx105 = getelementptr inbounds i32, i32* %50, i32 28
%51 = load i32, i32* %arrayidx105, align 4
%tobool106 = icmp ne i32 %51, 0
br i1 %tobool106, label %if.then107, label %if.end108
if.then107: ; preds = %if.end104
store i32 5847, i32* @f, align 4
br label %if.end108
if.end108: ; preds = %if.then107, %if.end104
%52 = load i32*, i32** @a, align 4
%arrayidx109 = getelementptr inbounds i32, i32* %52, i32 29
%53 = load i32, i32* %arrayidx109, align 4
%tobool110 = icmp ne i32 %53, 0
br i1 %tobool110, label %if.then111, label %if.end112
if.then111: ; preds = %if.end108
store i32 14705, i32* @f, align 4
br label %if.end112
if.end112: ; preds = %if.then111, %if.end108
%54 = load i32*, i32** @a, align 4
%arrayidx113 = getelementptr inbounds i32, i32* %54, i32 30
%55 = load i32, i32* %arrayidx113, align 4
%tobool114 = icmp ne i32 %55, 0
br i1 %tobool114, label %if.then115, label %if.end116
if.then115: ; preds = %if.end112
store i32 28488, i32* @f, align 4
br label %if.end116
if.end116: ; preds = %if.then115, %if.end112
%56 = load i32*, i32** @a, align 4
%arrayidx117 = getelementptr inbounds i32, i32* %56, i32 31
%57 = load i32, i32* %arrayidx117, align 4
%tobool118 = icmp ne i32 %57, 0
br i1 %tobool118, label %if.then119, label %if.end120
if.then119: ; preds = %if.end116
store i32 13853, i32* @f, align 4
br label %if.end120
if.end120: ; preds = %if.then119, %if.end116
%58 = load i32*, i32** @a, align 4
%arrayidx121 = getelementptr inbounds i32, i32* %58, i32 32
%59 = load i32, i32* %arrayidx121, align 4
%tobool122 = icmp ne i32 %59, 0
br i1 %tobool122, label %if.then123, label %if.end124
if.then123: ; preds = %if.end120
store i32 31379, i32* @f, align 4
br label %if.end124
if.end124: ; preds = %if.then123, %if.end120
%60 = load i32*, i32** @a, align 4
%arrayidx125 = getelementptr inbounds i32, i32* %60, i32 33
%61 = load i32, i32* %arrayidx125, align 4
%tobool126 = icmp ne i32 %61, 0
br i1 %tobool126, label %if.then127, label %if.end128
if.then127: ; preds = %if.end124
store i32 7010, i32* @f, align 4
br label %if.end128
if.end128: ; preds = %if.then127, %if.end124
br label %if.then131
if.then131: ; preds = %if.end128
store i32 31840, i32* @f, align 4
br label %if.end132
if.end132: ; preds = %if.then131
%62 = load i32*, i32** @a, align 4
%arrayidx133 = getelementptr inbounds i32, i32* %62, i32 35
%63 = load i32, i32* %arrayidx133, align 4
%tobool134 = icmp ne i32 %63, 0
br i1 %tobool134, label %if.then135, label %if.end136
if.then135: ; preds = %if.end132
store i32 16119, i32* @f, align 4
br label %if.end136
if.end136: ; preds = %if.then135, %if.end132
%64 = load i32*, i32** @a, align 4
%arrayidx137 = getelementptr inbounds i32, i32* %64, i32 36
%65 = load i32, i32* %arrayidx137, align 4
%tobool138 = icmp ne i32 %65, 0
br i1 %tobool138, label %if.then139, label %if.end140
if.then139: ; preds = %if.end136
store i32 7119, i32* @f, align 4
br label %if.end140
if.end140: ; preds = %if.then139, %if.end136
%66 = load i32*, i32** @a, align 4
%arrayidx141 = getelementptr inbounds i32, i32* %66, i32 37
%67 = load i32, i32* %arrayidx141, align 4
%tobool142 = icmp ne i32 %67, 0
br i1 %tobool142, label %if.then143, label %if.end144
if.then143: ; preds = %if.end140
store i32 3333, i32* @f, align 4
br label %if.end144
if.end144: ; preds = %if.then143, %if.end140
%68 = load i32*, i32** @a, align 4
%arrayidx145 = getelementptr inbounds i32, i32* %68, i32 38
%69 = load i32, i32* %arrayidx145, align 4
%tobool146 = icmp ne i32 %69, 0
br i1 %tobool146, label %if.then147, label %if.end148
if.then147: ; preds = %if.end144
store i32 6430, i32* @f, align 4
br label %if.end148
if.end148: ; preds = %if.then147, %if.end144
%70 = load i32*, i32** @a, align 4
%arrayidx149 = getelementptr inbounds i32, i32* %70, i32 39
%71 = load i32, i32* %arrayidx149, align 4
%tobool150 = icmp ne i32 %71, 0
br i1 %tobool150, label %if.then151, label %if.end152
if.then151: ; preds = %if.end148
store i32 19857, i32* @f, align 4
br label %if.end152
if.end152: ; preds = %if.then151, %if.end148
%72 = load i32*, i32** @a, align 4
%arrayidx153 = getelementptr inbounds i32, i32* %72, i32 40
%73 = load i32, i32* %arrayidx153, align 4
%tobool154 = icmp ne i32 %73, 0
br i1 %tobool154, label %if.then155, label %if.end156
if.then155: ; preds = %if.end152
store i32 13237, i32* @f, align 4
br label %if.end156
if.end156: ; preds = %if.then155, %if.end152
br label %if.then159
if.then159: ; preds = %if.end156
store i32 163, i32* @f, align 4
br label %if.end160
if.end160: ; preds = %if.then159
%74 = load i32*, i32** @a, align 4
%arrayidx161 = getelementptr inbounds i32, i32* %74, i32 42
%75 = load i32, i32* %arrayidx161, align 4
%tobool162 = icmp ne i32 %75, 0
br i1 %tobool162, label %if.then163, label %if.end164
if.then163: ; preds = %if.end160
store i32 1961, i32* @f, align 4
br label %if.end164
if.end164: ; preds = %if.then163, %if.end160
%76 = load i32*, i32** @a, align 4
%arrayidx165 = getelementptr inbounds i32, i32* %76, i32 43
%77 = load i32, i32* %arrayidx165, align 4
%tobool166 = icmp ne i32 %77, 0
br i1 %tobool166, label %if.then167, label %if.end168
if.then167: ; preds = %if.end164
store i32 11325, i32* @f, align 4
br label %if.end168
if.end168: ; preds = %if.then167, %if.end164
%78 = load i32*, i32** @a, align 4
%arrayidx169 = getelementptr inbounds i32, i32* %78, i32 44
%79 = load i32, i32* %arrayidx169, align 4
%tobool170 = icmp ne i32 %79, 0
br i1 %tobool170, label %if.then171, label %if.end172
if.then171: ; preds = %if.end168
store i32 12189, i32* @f, align 4
br label %if.end172
if.end172: ; preds = %if.then171, %if.end168
%80 = load i32*, i32** @a, align 4
%arrayidx173 = getelementptr inbounds i32, i32* %80, i32 45
%81 = load i32, i32* %arrayidx173, align 4
%tobool174 = icmp ne i32 %81, 0
br i1 %tobool174, label %if.then175, label %if.end176
if.then175: ; preds = %if.end172
store i32 15172, i32* @f, align 4
br label %if.end176
if.end176: ; preds = %if.then175, %if.end172
br label %if.then179
if.then179: ; preds = %if.end176
store i32 13491, i32* @f, align 4
br label %if.end180
if.end180: ; preds = %if.then179
%82 = load i32*, i32** @a, align 4
%arrayidx181 = getelementptr inbounds i32, i32* %82, i32 47
%83 = load i32, i32* %arrayidx181, align 4
%tobool182 = icmp ne i32 %83, 0
br i1 %tobool182, label %if.then183, label %if.end184
if.then183: ; preds = %if.end180
store i32 9521, i32* @f, align 4
br label %if.end184
if.end184: ; preds = %if.then183, %if.end180
%84 = load i32*, i32** @a, align 4
%arrayidx185 = getelementptr inbounds i32, i32* %84, i32 48
%85 = load i32, i32* %arrayidx185, align 4
%tobool186 = icmp ne i32 %85, 0
br i1 %tobool186, label %if.then187, label %if.end188
if.then187: ; preds = %if.end184
store i32 448, i32* @f, align 4
br label %if.end188
if.end188: ; preds = %if.then187, %if.end184
%86 = load i32*, i32** @a, align 4
%arrayidx189 = getelementptr inbounds i32, i32* %86, i32 49
%87 = load i32, i32* %arrayidx189, align 4
%tobool190 = icmp ne i32 %87, 0
br i1 %tobool190, label %if.then191, label %if.end192
if.then191: ; preds = %if.end188
store i32 13468, i32* @f, align 4
br label %if.end192
if.end192: ; preds = %if.then191, %if.end188
%88 = load i32*, i32** @a, align 4
%arrayidx193 = getelementptr inbounds i32, i32* %88, i32 50
%89 = load i32, i32* %arrayidx193, align 4
%tobool194 = icmp ne i32 %89, 0
br i1 %tobool194, label %if.then195, label %if.end196
if.then195: ; preds = %if.end192
store i32 16190, i32* @f, align 4
br label %if.end196
if.end196: ; preds = %if.then195, %if.end192
%90 = load i32*, i32** @a, align 4
%arrayidx197 = getelementptr inbounds i32, i32* %90, i32 51
%91 = load i32, i32* %arrayidx197, align 4
%tobool198 = icmp ne i32 %91, 0
br i1 %tobool198, label %if.then199, label %if.end200
if.then199: ; preds = %if.end196
store i32 8602, i32* @f, align 4
br label %if.end200
if.end200: ; preds = %if.then199, %if.end196
%92 = load i32*, i32** @a, align 4
%arrayidx201 = getelementptr inbounds i32, i32* %92, i32 52
%93 = load i32, i32* %arrayidx201, align 4
%tobool202 = icmp ne i32 %93, 0
br i1 %tobool202, label %if.then203, label %if.end204
if.then203: ; preds = %if.end200
store i32 21083, i32* @f, align 4
br label %if.end204
if.end204: ; preds = %if.then203, %if.end200
%94 = load i32*, i32** @a, align 4
%arrayidx205 = getelementptr inbounds i32, i32* %94, i32 53
%95 = load i32, i32* %arrayidx205, align 4
%tobool206 = icmp ne i32 %95, 0
br i1 %tobool206, label %if.then207, label %if.end208
if.then207: ; preds = %if.end204
store i32 5172, i32* @f, align 4
br label %if.end208
if.end208: ; preds = %if.then207, %if.end204
%96 = load i32*, i32** @a, align 4
%arrayidx209 = getelementptr inbounds i32, i32* %96, i32 54
%97 = load i32, i32* %arrayidx209, align 4
%tobool210 = icmp ne i32 %97, 0
br i1 %tobool210, label %if.then211, label %if.end212
if.then211: ; preds = %if.end208
store i32 32505, i32* @f, align 4
br label %if.end212
if.end212: ; preds = %if.then211, %if.end208
br label %if.then215
if.then215: ; preds = %if.end212
store i32 23490, i32* @f, align 4
br label %if.end216
if.end216: ; preds = %if.then215
%98 = load i32*, i32** @a, align 4
%arrayidx217 = getelementptr inbounds i32, i32* %98, i32 56
%99 = load i32, i32* %arrayidx217, align 4
%tobool218 = icmp ne i32 %99, 0
br i1 %tobool218, label %if.then219, label %if.end220
if.then219: ; preds = %if.end216
store i32 30699, i32* @f, align 4
br label %if.end220
if.end220: ; preds = %if.then219, %if.end216
%100 = load i32*, i32** @a, align 4
%arrayidx221 = getelementptr inbounds i32, i32* %100, i32 57
%101 = load i32, i32* %arrayidx221, align 4
%tobool222 = icmp ne i32 %101, 0
br i1 %tobool222, label %if.then223, label %if.end224
if.then223: ; preds = %if.end220
store i32 16286, i32* @f, align 4
br label %if.end224
if.end224: ; preds = %if.then223, %if.end220
%102 = load i32*, i32** @a, align 4
%arrayidx225 = getelementptr inbounds i32, i32* %102, i32 58
%103 = load i32, i32* %arrayidx225, align 4
%tobool226 = icmp ne i32 %103, 0
br i1 %tobool226, label %if.then227, label %if.end228
if.then227: ; preds = %if.end224
store i32 17939, i32* @f, align 4
br label %if.end228
if.end228: ; preds = %if.then227, %if.end224
%104 = load i32*, i32** @a, align 4
%arrayidx229 = getelementptr inbounds i32, i32* %104, i32 59
%105 = load i32, i32* %arrayidx229, align 4
%tobool230 = icmp ne i32 %105, 0
br i1 %tobool230, label %if.then231, label %if.end232
if.then231: ; preds = %if.end228
store i32 25148, i32* @f, align 4
br label %if.end232
if.end232: ; preds = %if.then231, %if.end228
%106 = load i32*, i32** @a, align 4
%arrayidx233 = getelementptr inbounds i32, i32* %106, i32 60
%107 = load i32, i32* %arrayidx233, align 4
%tobool234 = icmp ne i32 %107, 0
br i1 %tobool234, label %if.then235, label %if.end236
if.then235: ; preds = %if.end232
store i32 644, i32* @f, align 4
br label %if.end236
if.end236: ; preds = %if.then235, %if.end232
br label %if.then239
if.then239: ; preds = %if.end236
store i32 23457, i32* @f, align 4
br label %if.end240
if.end240: ; preds = %if.then239
%108 = load i32*, i32** @a, align 4
%arrayidx241 = getelementptr inbounds i32, i32* %108, i32 62
%109 = load i32, i32* %arrayidx241, align 4
%tobool242 = icmp ne i32 %109, 0
br i1 %tobool242, label %if.then243, label %if.end244
if.then243: ; preds = %if.end240
store i32 21116, i32* @f, align 4
br label %if.end244
if.end244: ; preds = %if.then243, %if.end240
br label %if.then247
if.then247: ; preds = %if.end244
store i32 10066, i32* @f, align 4
br label %if.end248
if.end248: ; preds = %if.then247
%110 = load i32*, i32** @a, align 4
%arrayidx249 = getelementptr inbounds i32, i32* %110, i32 64
%111 = load i32, i32* %arrayidx249, align 4
%tobool250 = icmp ne i32 %111, 0
br i1 %tobool250, label %if.then251, label %if.end252
if.then251: ; preds = %if.end248
store i32 9058, i32* @f, align 4
br label %if.end252
if.end252: ; preds = %if.then251, %if.end248
%112 = load i32*, i32** @a, align 4
%arrayidx253 = getelementptr inbounds i32, i32* %112, i32 65
%113 = load i32, i32* %arrayidx253, align 4
%tobool254 = icmp ne i32 %113, 0
br i1 %tobool254, label %if.then255, label %if.end256
if.then255: ; preds = %if.end252
store i32 8383, i32* @f, align 4
br label %if.end256
if.end256: ; preds = %if.then255, %if.end252
%114 = load i32*, i32** @a, align 4
%arrayidx257 = getelementptr inbounds i32, i32* %114, i32 66
%115 = load i32, i32* %arrayidx257, align 4
%tobool258 = icmp ne i32 %115, 0
br i1 %tobool258, label %if.then259, label %if.end260
if.then259: ; preds = %if.end256
store i32 31069, i32* @f, align 4
br label %if.end260
if.end260: ; preds = %if.then259, %if.end256
%116 = load i32*, i32** @a, align 4
%arrayidx261 = getelementptr inbounds i32, i32* %116, i32 67
%117 = load i32, i32* %arrayidx261, align 4
%tobool262 = icmp ne i32 %117, 0
br i1 %tobool262, label %if.then263, label %if.end264
if.then263: ; preds = %if.end260
store i32 32280, i32* @f, align 4
br label %if.end264
if.end264: ; preds = %if.then263, %if.end260
br label %if.then267
if.then267: ; preds = %if.end264
store i32 1553, i32* @f, align 4
br label %if.end268
if.end268: ; preds = %if.then267
%118 = load i32*, i32** @a, align 4
%arrayidx269 = getelementptr inbounds i32, i32* %118, i32 69
%119 = load i32, i32* %arrayidx269, align 4
%tobool270 = icmp ne i32 %119, 0
br i1 %tobool270, label %if.then271, label %if.end272
if.then271: ; preds = %if.end268
store i32 8118, i32* @f, align 4
br label %if.end272
if.end272: ; preds = %if.then271, %if.end268
%120 = load i32*, i32** @a, align 4
%arrayidx273 = getelementptr inbounds i32, i32* %120, i32 70
%121 = load i32, i32* %arrayidx273, align 4
%tobool274 = icmp ne i32 %121, 0
br i1 %tobool274, label %if.then275, label %if.end276
if.then275: ; preds = %if.end272
store i32 12959, i32* @f, align 4
br label %if.end276
if.end276: ; preds = %if.then275, %if.end272
%122 = load i32*, i32** @a, align 4
%arrayidx277 = getelementptr inbounds i32, i32* %122, i32 71
%123 = load i32, i32* %arrayidx277, align 4
%tobool278 = icmp ne i32 %123, 0
br i1 %tobool278, label %if.then279, label %if.end280
if.then279: ; preds = %if.end276
store i32 675, i32* @f, align 4
br label %if.end280
if.end280: ; preds = %if.then279, %if.end276
%124 = load i32*, i32** @a, align 4
%arrayidx281 = getelementptr inbounds i32, i32* %124, i32 72
%125 = load i32, i32* %arrayidx281, align 4
%tobool282 = icmp ne i32 %125, 0
br i1 %tobool282, label %if.then283, label %if.end284
if.then283: ; preds = %if.end280
store i32 29144, i32* @f, align 4
br label %if.end284
if.end284: ; preds = %if.then283, %if.end280
%126 = load i32*, i32** @a, align 4
%arrayidx285 = getelementptr inbounds i32, i32* %126, i32 73
%127 = load i32, i32* %arrayidx285, align 4
%tobool286 = icmp ne i32 %127, 0
br i1 %tobool286, label %if.then287, label %if.end288
if.then287: ; preds = %if.end284
store i32 26130, i32* @f, align 4
br label %if.end288
if.end288: ; preds = %if.then287, %if.end284
%128 = load i32*, i32** @a, align 4
%arrayidx289 = getelementptr inbounds i32, i32* %128, i32 74
%129 = load i32, i32* %arrayidx289, align 4
%tobool290 = icmp ne i32 %129, 0
br i1 %tobool290, label %if.then291, label %if.end292
if.then291: ; preds = %if.end288
store i32 31934, i32* @f, align 4
br label %if.end292
if.end292: ; preds = %if.then291, %if.end288
%130 = load i32*, i32** @a, align 4
%arrayidx293 = getelementptr inbounds i32, i32* %130, i32 75
%131 = load i32, i32* %arrayidx293, align 4
%tobool294 = icmp ne i32 %131, 0
br i1 %tobool294, label %if.then295, label %if.end296
if.then295: ; preds = %if.end292
store i32 25862, i32* @f, align 4
br label %if.end296
if.end296: ; preds = %if.then295, %if.end292
%132 = load i32*, i32** @a, align 4
%arrayidx297 = getelementptr inbounds i32, i32* %132, i32 76
%133 = load i32, i32* %arrayidx297, align 4
%tobool298 = icmp ne i32 %133, 0
br i1 %tobool298, label %if.then299, label %if.end300
if.then299: ; preds = %if.end296
store i32 10642, i32* @f, align 4
br label %if.end300
if.end300: ; preds = %if.then299, %if.end296
%134 = load i32*, i32** @a, align 4
%arrayidx301 = getelementptr inbounds i32, i32* %134, i32 77
%135 = load i32, i32* %arrayidx301, align 4
%tobool302 = icmp ne i32 %135, 0
br i1 %tobool302, label %if.then303, label %if.end304
if.then303: ; preds = %if.end300
store i32 20209, i32* @f, align 4
br label %if.end304
if.end304: ; preds = %if.then303, %if.end300
%136 = load i32*, i32** @a, align 4
%arrayidx305 = getelementptr inbounds i32, i32* %136, i32 78
%137 = load i32, i32* %arrayidx305, align 4
%tobool306 = icmp ne i32 %137, 0
br i1 %tobool306, label %if.then307, label %if.end308
if.then307: ; preds = %if.end304
store i32 30889, i32* @f, align 4
br label %if.end308
if.end308: ; preds = %if.then307, %if.end304
%138 = load i32*, i32** @a, align 4
%arrayidx309 = getelementptr inbounds i32, i32* %138, i32 79
%139 = load i32, i32* %arrayidx309, align 4
%tobool310 = icmp ne i32 %139, 0
br i1 %tobool310, label %if.then311, label %if.end312
if.then311: ; preds = %if.end308
store i32 18688, i32* @f, align 4
br label %if.end312
if.end312: ; preds = %if.then311, %if.end308
%140 = load i32*, i32** @a, align 4
%arrayidx313 = getelementptr inbounds i32, i32* %140, i32 80
%141 = load i32, i32* %arrayidx313, align 4
%tobool314 = icmp ne i32 %141, 0
br i1 %tobool314, label %if.then315, label %if.end316
if.then315: ; preds = %if.end312
store i32 28726, i32* @f, align 4
br label %if.end316
if.end316: ; preds = %if.then315, %if.end312
%142 = load i32*, i32** @a, align 4
%arrayidx317 = getelementptr inbounds i32, i32* %142, i32 81
%143 = load i32, i32* %arrayidx317, align 4
%tobool318 = icmp ne i32 %143, 0
br i1 %tobool318, label %if.then319, label %if.end320
if.then319: ; preds = %if.end316
store i32 4266, i32* @f, align 4
br label %if.end320
if.end320: ; preds = %if.then319, %if.end316
%144 = load i32*, i32** @a, align 4
%arrayidx321 = getelementptr inbounds i32, i32* %144, i32 82
%145 = load i32, i32* %arrayidx321, align 4
%tobool322 = icmp ne i32 %145, 0
br i1 %tobool322, label %if.then323, label %if.end324
if.then323: ; preds = %if.end320
store i32 15461, i32* @f, align 4
br label %if.end324
if.end324: ; preds = %if.then323, %if.end320
%146 = load i32*, i32** @a, align 4
%arrayidx325 = getelementptr inbounds i32, i32* %146, i32 83
%147 = load i32, i32* %arrayidx325, align 4
%tobool326 = icmp ne i32 %147, 0
br i1 %tobool326, label %if.then327, label %if.end328
if.then327: ; preds = %if.end324
store i32 24716, i32* @f, align 4
br label %if.end328
if.end328: ; preds = %if.then327, %if.end324
br label %if.then331
if.then331: ; preds = %if.end328
store i32 18727, i32* @f, align 4
br label %if.end332
if.end332: ; preds = %if.then331
%148 = load i32*, i32** @a, align 4
%arrayidx333 = getelementptr inbounds i32, i32* %148, i32 85
%149 = load i32, i32* %arrayidx333, align 4
%tobool334 = icmp ne i32 %149, 0
br i1 %tobool334, label %if.then335, label %if.end336
if.then335: ; preds = %if.end332
store i32 29505, i32* @f, align 4
br label %if.end336
if.end336: ; preds = %if.then335, %if.end332
%150 = load i32*, i32** @a, align 4
%arrayidx337 = getelementptr inbounds i32, i32* %150, i32 86
%151 = load i32, i32* %arrayidx337, align 4
%tobool338 = icmp ne i32 %151, 0
br i1 %tobool338, label %if.then339, label %if.end340
if.then339: ; preds = %if.end336
store i32 27008, i32* @f, align 4
br label %if.end340
if.end340: ; preds = %if.then339, %if.end336
%152 = load i32*, i32** @a, align 4
%arrayidx341 = getelementptr inbounds i32, i32* %152, i32 87
%153 = load i32, i32* %arrayidx341, align 4
%tobool342 = icmp ne i32 %153, 0
br i1 %tobool342, label %if.then343, label %if.end344
if.then343: ; preds = %if.end340
store i32 6550, i32* @f, align 4
br label %if.end344
if.end344: ; preds = %if.then343, %if.end340
br label %if.then347
if.then347: ; preds = %if.end344
store i32 1117, i32* @f, align 4
br label %if.end348
if.end348: ; preds = %if.then347
%154 = load i32*, i32** @a, align 4
%arrayidx349 = getelementptr inbounds i32, i32* %154, i32 89
%155 = load i32, i32* %arrayidx349, align 4
%tobool350 = icmp ne i32 %155, 0
br i1 %tobool350, label %if.then351, label %if.end352
if.then351: ; preds = %if.end348
store i32 20118, i32* @f, align 4
br label %if.end352
if.end352: ; preds = %if.then351, %if.end348
%156 = load i32*, i32** @a, align 4
%arrayidx353 = getelementptr inbounds i32, i32* %156, i32 90
%157 = load i32, i32* %arrayidx353, align 4
%tobool354 = icmp ne i32 %157, 0
br i1 %tobool354, label %if.then355, label %if.end356
if.then355: ; preds = %if.end352
store i32 13650, i32* @f, align 4
br label %if.end356
if.end356: ; preds = %if.then355, %if.end352
br label %if.then359
if.then359: ; preds = %if.end356
store i32 18642, i32* @f, align 4
br label %if.end360
if.end360: ; preds = %if.then359
%158 = load i32*, i32** @a, align 4
%arrayidx361 = getelementptr inbounds i32, i32* %158, i32 92
%159 = load i32, i32* %arrayidx361, align 4
%tobool362 = icmp ne i32 %159, 0
br i1 %tobool362, label %if.then363, label %if.end364
if.then363: ; preds = %if.end360
store i32 30662, i32* @f, align 4
br label %if.end364
if.end364: ; preds = %if.then363, %if.end360
%160 = load i32*, i32** @a, align 4
%arrayidx365 = getelementptr inbounds i32, i32* %160, i32 93
%161 = load i32, i32* %arrayidx365, align 4
%tobool366 = icmp ne i32 %161, 0
br i1 %tobool366, label %if.then367, label %if.end368
if.then367: ; preds = %if.end364
store i32 8095, i32* @f, align 4
br label %if.end368
if.end368: ; preds = %if.then367, %if.end364
%162 = load i32*, i32** @a, align 4
%arrayidx369 = getelementptr inbounds i32, i32* %162, i32 94
%163 = load i32, i32* %arrayidx369, align 4
%tobool370 = icmp ne i32 %163, 0
br i1 %tobool370, label %if.then371, label %if.end372
if.then371: ; preds = %if.end368
store i32 8442, i32* @f, align 4
br label %if.end372
if.end372: ; preds = %if.then371, %if.end368
%164 = load i32*, i32** @a, align 4
%arrayidx373 = getelementptr inbounds i32, i32* %164, i32 95
%165 = load i32, i32* %arrayidx373, align 4
%tobool374 = icmp ne i32 %165, 0
br i1 %tobool374, label %if.then375, label %if.end376
if.then375: ; preds = %if.end372
store i32 8153, i32* @f, align 4
br label %if.end376
if.end376: ; preds = %if.then375, %if.end372
br label %if.then379
if.then379: ; preds = %if.end376
store i32 12965, i32* @f, align 4
br label %if.end380
if.end380: ; preds = %if.then379
%166 = load i32*, i32** @a, align 4
%arrayidx381 = getelementptr inbounds i32, i32* %166, i32 97
%167 = load i32, i32* %arrayidx381, align 4
%tobool382 = icmp ne i32 %167, 0
br i1 %tobool382, label %if.then383, label %if.end384
if.then383: ; preds = %if.end380
store i32 14277, i32* @f, align 4
br label %if.end384
if.end384: ; preds = %if.then383, %if.end380
br label %if.then387
if.then387: ; preds = %if.end384
store i32 1997, i32* @f, align 4
br label %if.end388
if.end388: ; preds = %if.then387
%168 = load i32*, i32** @a, align 4
%arrayidx389 = getelementptr inbounds i32, i32* %168, i32 99
%169 = load i32, i32* %arrayidx389, align 4
%tobool390 = icmp ne i32 %169, 0
br i1 %tobool390, label %if.then391, label %if.end392
if.then391: ; preds = %if.end388
store i32 31385, i32* @f, align 4
br label %if.end392
if.end392: ; preds = %if.then391, %if.end388
%170 = load i32*, i32** @a, align 4
%arrayidx393 = getelementptr inbounds i32, i32* %170, i32 100
%171 = load i32, i32* %arrayidx393, align 4
%tobool394 = icmp ne i32 %171, 0
br i1 %tobool394, label %if.then395, label %if.end396
if.then395: ; preds = %if.end392
store i32 8286, i32* @f, align 4
br label %if.end396
if.end396: ; preds = %if.then395, %if.end392
ret void
}