[llvm-commits] [llvm] r166710 - in /llvm/trunk: lib/Transforms/Utils/SimplifyCFG.cpp test/Transforms/SimplifyCFG/switch_to_lookup_table.ll

Jakob Stoklund Olesen stoklund at 2pi.dk
Thu Oct 25 11:51:16 PDT 2012


Author: stoklund
Date: Thu Oct 25 13:51:15 2012
New Revision: 166710

URL: http://llvm.org/viewvc/llvm-project?rev=166710&view=rev
Log:
Also optimize large switch statements.

The isValueEqualityComparison() guard at the top of SimplifySwitch()
only applies to some of the possible transformations.

The newer transformations work just fine on large switches, and the
check on predecessor count is nonsensical.

Modified:
    llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
    llvm/trunk/test/Transforms/SimplifyCFG/switch_to_lookup_table.ll

Modified: llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp?rev=166710&r1=166709&r2=166710&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp (original)
+++ llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp Thu Oct 25 13:51:15 2012
@@ -3583,32 +3583,30 @@
 }
 
 bool SimplifyCFGOpt::SimplifySwitch(SwitchInst *SI, IRBuilder<> &Builder) {
-  // If this switch is too complex to want to look at, ignore it.
-  if (!isValueEqualityComparison(SI))
-    return false;
-
   BasicBlock *BB = SI->getParent();
 
-  // If we only have one predecessor, and if it is a branch on this value,
-  // see if that predecessor totally determines the outcome of this switch.
-  if (BasicBlock *OnlyPred = BB->getSinglePredecessor())
-    if (SimplifyEqualityComparisonWithOnlyPredecessor(SI, OnlyPred, Builder))
-      return SimplifyCFG(BB) | true;
+  if (isValueEqualityComparison(SI)) {
+    // If we only have one predecessor, and if it is a branch on this value,
+    // see if that predecessor totally determines the outcome of this switch.
+    if (BasicBlock *OnlyPred = BB->getSinglePredecessor())
+      if (SimplifyEqualityComparisonWithOnlyPredecessor(SI, OnlyPred, Builder))
+        return SimplifyCFG(BB) | true;
 
-  Value *Cond = SI->getCondition();
-  if (SelectInst *Select = dyn_cast<SelectInst>(Cond))
-    if (SimplifySwitchOnSelect(SI, Select))
-      return SimplifyCFG(BB) | true;
+    Value *Cond = SI->getCondition();
+    if (SelectInst *Select = dyn_cast<SelectInst>(Cond))
+      if (SimplifySwitchOnSelect(SI, Select))
+        return SimplifyCFG(BB) | true;
 
-  // If the block only contains the switch, see if we can fold the block
-  // away into any preds.
-  BasicBlock::iterator BBI = BB->begin();
-  // Ignore dbg intrinsics.
-  while (isa<DbgInfoIntrinsic>(BBI))
-    ++BBI;
-  if (SI == &*BBI)
-    if (FoldValueComparisonIntoPredecessors(SI, Builder))
-      return SimplifyCFG(BB) | true;
+    // If the block only contains the switch, see if we can fold the block
+    // away into any preds.
+    BasicBlock::iterator BBI = BB->begin();
+    // Ignore dbg intrinsics.
+    while (isa<DbgInfoIntrinsic>(BBI))
+      ++BBI;
+    if (SI == &*BBI)
+      if (FoldValueComparisonIntoPredecessors(SI, Builder))
+        return SimplifyCFG(BB) | true;
+  }
 
   // Try to transform the switch into an icmp and a branch.
   if (TurnSwitchRangeIntoICmp(SI, Builder))

Modified: llvm/trunk/test/Transforms/SimplifyCFG/switch_to_lookup_table.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SimplifyCFG/switch_to_lookup_table.ll?rev=166710&r1=166709&r2=166710&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/SimplifyCFG/switch_to_lookup_table.ll (original)
+++ llvm/trunk/test/Transforms/SimplifyCFG/switch_to_lookup_table.ll Thu Oct 25 13:51:15 2012
@@ -15,6 +15,9 @@
 ; The table for @earlyreturncrash
 ; CHECK: @switch.table3 = private unnamed_addr constant [4 x i32] [i32 42, i32 9, i32 88, i32 5]
 
+; The table for @large.
+; CHECK: @switch.table4 = private unnamed_addr constant [199 x i32] [i32 1, i32 4, i32 9,
+
 ; A simple int-to-int selection switch.
 ; It is dense enough to be replaced by table lookup.
 ; The result is directly by a ret from an otherwise empty bb,
@@ -293,3 +296,822 @@
 ; CHECK: %switch.cast = trunc i32 %switch.tableidx to i9
 ; CHECK: %switch.downshift = lshr i9 3, %switch.shiftamt
 }
+
+; Also handle large switches that would be rejected by
+; isValueEqualityComparison()
+; CHECK: large
+; CHECK-NOT: switch i32
+define i32 @large(i32 %x) nounwind uwtable readnone ssp {
+entry:
+  %cmp = icmp slt i32 %x, 0
+  br i1 %cmp, label %if.then, label %if.end
+
+if.then:                                          ; preds = %entry
+  %mul = mul i32 %x, -10
+  br label %if.end
+
+if.end:                                           ; preds = %if.then, %entry
+  %x.addr.0 = phi i32 [ %mul, %if.then ], [ %x, %entry ]
+  switch i32 %x.addr.0, label %return [
+    i32 199, label %sw.bb203
+    i32 1, label %sw.bb1
+    i32 2, label %sw.bb2
+    i32 3, label %sw.bb3
+    i32 4, label %sw.bb4
+    i32 5, label %sw.bb5
+    i32 6, label %sw.bb6
+    i32 7, label %sw.bb7
+    i32 8, label %sw.bb8
+    i32 9, label %sw.bb9
+    i32 10, label %sw.bb10
+    i32 11, label %sw.bb11
+    i32 12, label %sw.bb12
+    i32 13, label %sw.bb13
+    i32 14, label %sw.bb14
+    i32 15, label %sw.bb15
+    i32 16, label %sw.bb16
+    i32 17, label %sw.bb17
+    i32 18, label %sw.bb18
+    i32 19, label %sw.bb19
+    i32 20, label %sw.bb20
+    i32 21, label %sw.bb21
+    i32 22, label %sw.bb22
+    i32 23, label %sw.bb23
+    i32 24, label %sw.bb24
+    i32 25, label %sw.bb25
+    i32 26, label %sw.bb26
+    i32 27, label %sw.bb27
+    i32 28, label %sw.bb28
+    i32 29, label %sw.bb29
+    i32 30, label %sw.bb30
+    i32 31, label %sw.bb31
+    i32 32, label %sw.bb32
+    i32 33, label %sw.bb33
+    i32 34, label %sw.bb34
+    i32 35, label %sw.bb35
+    i32 36, label %sw.bb37
+    i32 37, label %sw.bb38
+    i32 38, label %sw.bb39
+    i32 39, label %sw.bb40
+    i32 40, label %sw.bb41
+    i32 41, label %sw.bb42
+    i32 42, label %sw.bb43
+    i32 43, label %sw.bb44
+    i32 44, label %sw.bb45
+    i32 45, label %sw.bb47
+    i32 46, label %sw.bb48
+    i32 47, label %sw.bb49
+    i32 48, label %sw.bb50
+    i32 49, label %sw.bb51
+    i32 50, label %sw.bb52
+    i32 51, label %sw.bb53
+    i32 52, label %sw.bb54
+    i32 53, label %sw.bb55
+    i32 54, label %sw.bb56
+    i32 55, label %sw.bb58
+    i32 56, label %sw.bb59
+    i32 57, label %sw.bb60
+    i32 58, label %sw.bb61
+    i32 59, label %sw.bb62
+    i32 60, label %sw.bb63
+    i32 61, label %sw.bb64
+    i32 62, label %sw.bb65
+    i32 63, label %sw.bb66
+    i32 64, label %sw.bb67
+    i32 65, label %sw.bb68
+    i32 66, label %sw.bb69
+    i32 67, label %sw.bb70
+    i32 68, label %sw.bb71
+    i32 69, label %sw.bb72
+    i32 70, label %sw.bb73
+    i32 71, label %sw.bb74
+    i32 72, label %sw.bb76
+    i32 73, label %sw.bb77
+    i32 74, label %sw.bb78
+    i32 75, label %sw.bb79
+    i32 76, label %sw.bb80
+    i32 77, label %sw.bb81
+    i32 78, label %sw.bb82
+    i32 79, label %sw.bb83
+    i32 80, label %sw.bb84
+    i32 81, label %sw.bb85
+    i32 82, label %sw.bb86
+    i32 83, label %sw.bb87
+    i32 84, label %sw.bb88
+    i32 85, label %sw.bb89
+    i32 86, label %sw.bb90
+    i32 87, label %sw.bb91
+    i32 88, label %sw.bb92
+    i32 89, label %sw.bb93
+    i32 90, label %sw.bb94
+    i32 91, label %sw.bb95
+    i32 92, label %sw.bb96
+    i32 93, label %sw.bb97
+    i32 94, label %sw.bb98
+    i32 95, label %sw.bb99
+    i32 96, label %sw.bb100
+    i32 97, label %sw.bb101
+    i32 98, label %sw.bb102
+    i32 99, label %sw.bb103
+    i32 100, label %sw.bb104
+    i32 101, label %sw.bb105
+    i32 102, label %sw.bb106
+    i32 103, label %sw.bb107
+    i32 104, label %sw.bb108
+    i32 105, label %sw.bb109
+    i32 106, label %sw.bb110
+    i32 107, label %sw.bb111
+    i32 108, label %sw.bb112
+    i32 109, label %sw.bb113
+    i32 110, label %sw.bb114
+    i32 111, label %sw.bb115
+    i32 112, label %sw.bb116
+    i32 113, label %sw.bb117
+    i32 114, label %sw.bb118
+    i32 115, label %sw.bb119
+    i32 116, label %sw.bb120
+    i32 117, label %sw.bb121
+    i32 118, label %sw.bb122
+    i32 119, label %sw.bb123
+    i32 120, label %sw.bb124
+    i32 121, label %sw.bb125
+    i32 122, label %sw.bb126
+    i32 123, label %sw.bb127
+    i32 124, label %sw.bb128
+    i32 125, label %sw.bb129
+    i32 126, label %sw.bb130
+    i32 127, label %sw.bb131
+    i32 128, label %sw.bb132
+    i32 129, label %sw.bb133
+    i32 130, label %sw.bb134
+    i32 131, label %sw.bb135
+    i32 132, label %sw.bb136
+    i32 133, label %sw.bb137
+    i32 134, label %sw.bb138
+    i32 135, label %sw.bb139
+    i32 136, label %sw.bb140
+    i32 137, label %sw.bb141
+    i32 138, label %sw.bb142
+    i32 139, label %sw.bb143
+    i32 140, label %sw.bb144
+    i32 141, label %sw.bb145
+    i32 142, label %sw.bb146
+    i32 143, label %sw.bb147
+    i32 144, label %sw.bb148
+    i32 145, label %sw.bb149
+    i32 146, label %sw.bb150
+    i32 147, label %sw.bb151
+    i32 148, label %sw.bb152
+    i32 149, label %sw.bb153
+    i32 150, label %sw.bb154
+    i32 151, label %sw.bb155
+    i32 152, label %sw.bb156
+    i32 153, label %sw.bb157
+    i32 154, label %sw.bb158
+    i32 155, label %sw.bb159
+    i32 156, label %sw.bb160
+    i32 157, label %sw.bb161
+    i32 158, label %sw.bb162
+    i32 159, label %sw.bb163
+    i32 160, label %sw.bb164
+    i32 161, label %sw.bb165
+    i32 162, label %sw.bb166
+    i32 163, label %sw.bb167
+    i32 164, label %sw.bb168
+    i32 165, label %sw.bb169
+    i32 166, label %sw.bb170
+    i32 167, label %sw.bb171
+    i32 168, label %sw.bb172
+    i32 169, label %sw.bb173
+    i32 170, label %sw.bb174
+    i32 171, label %sw.bb175
+    i32 172, label %sw.bb176
+    i32 173, label %sw.bb177
+    i32 174, label %sw.bb178
+    i32 175, label %sw.bb179
+    i32 176, label %sw.bb180
+    i32 177, label %sw.bb181
+    i32 178, label %sw.bb182
+    i32 179, label %sw.bb183
+    i32 180, label %sw.bb184
+    i32 181, label %sw.bb185
+    i32 182, label %sw.bb186
+    i32 183, label %sw.bb187
+    i32 184, label %sw.bb188
+    i32 185, label %sw.bb189
+    i32 186, label %sw.bb190
+    i32 187, label %sw.bb191
+    i32 188, label %sw.bb192
+    i32 189, label %sw.bb193
+    i32 190, label %sw.bb194
+    i32 191, label %sw.bb195
+    i32 192, label %sw.bb196
+    i32 193, label %sw.bb197
+    i32 194, label %sw.bb198
+    i32 195, label %sw.bb199
+    i32 196, label %sw.bb200
+    i32 197, label %sw.bb201
+    i32 198, label %sw.bb202
+  ]
+
+sw.bb1:                                           ; preds = %if.end
+  br label %return
+
+sw.bb2:                                           ; preds = %if.end
+  br label %return
+
+sw.bb3:                                           ; preds = %if.end
+  br label %return
+
+sw.bb4:                                           ; preds = %if.end
+  br label %return
+
+sw.bb5:                                           ; preds = %if.end
+  br label %return
+
+sw.bb6:                                           ; preds = %if.end
+  br label %return
+
+sw.bb7:                                           ; preds = %if.end
+  br label %return
+
+sw.bb8:                                           ; preds = %if.end
+  br label %return
+
+sw.bb9:                                           ; preds = %if.end
+  br label %return
+
+sw.bb10:                                          ; preds = %if.end
+  br label %return
+
+sw.bb11:                                          ; preds = %if.end
+  br label %return
+
+sw.bb12:                                          ; preds = %if.end
+  br label %return
+
+sw.bb13:                                          ; preds = %if.end
+  br label %return
+
+sw.bb14:                                          ; preds = %if.end
+  br label %return
+
+sw.bb15:                                          ; preds = %if.end
+  br label %return
+
+sw.bb16:                                          ; preds = %if.end
+  br label %return
+
+sw.bb17:                                          ; preds = %if.end
+  br label %return
+
+sw.bb18:                                          ; preds = %if.end
+  br label %return
+
+sw.bb19:                                          ; preds = %if.end
+  br label %return
+
+sw.bb20:                                          ; preds = %if.end
+  br label %return
+
+sw.bb21:                                          ; preds = %if.end
+  br label %return
+
+sw.bb22:                                          ; preds = %if.end
+  br label %return
+
+sw.bb23:                                          ; preds = %if.end
+  br label %return
+
+sw.bb24:                                          ; preds = %if.end
+  br label %return
+
+sw.bb25:                                          ; preds = %if.end
+  br label %return
+
+sw.bb26:                                          ; preds = %if.end
+  br label %return
+
+sw.bb27:                                          ; preds = %if.end
+  br label %return
+
+sw.bb28:                                          ; preds = %if.end
+  br label %return
+
+sw.bb29:                                          ; preds = %if.end
+  br label %return
+
+sw.bb30:                                          ; preds = %if.end
+  br label %return
+
+sw.bb31:                                          ; preds = %if.end
+  br label %return
+
+sw.bb32:                                          ; preds = %if.end
+  br label %return
+
+sw.bb33:                                          ; preds = %if.end
+  br label %return
+
+sw.bb34:                                          ; preds = %if.end
+  br label %return
+
+sw.bb35:                                          ; preds = %if.end
+  br label %return
+
+sw.bb37:                                          ; preds = %if.end
+  br label %return
+
+sw.bb38:                                          ; preds = %if.end
+  br label %return
+
+sw.bb39:                                          ; preds = %if.end
+  br label %return
+
+sw.bb40:                                          ; preds = %if.end
+  br label %return
+
+sw.bb41:                                          ; preds = %if.end
+  br label %return
+
+sw.bb42:                                          ; preds = %if.end
+  br label %return
+
+sw.bb43:                                          ; preds = %if.end
+  br label %return
+
+sw.bb44:                                          ; preds = %if.end
+  br label %return
+
+sw.bb45:                                          ; preds = %if.end
+  br label %return
+
+sw.bb47:                                          ; preds = %if.end
+  br label %return
+
+sw.bb48:                                          ; preds = %if.end
+  br label %return
+
+sw.bb49:                                          ; preds = %if.end
+  br label %return
+
+sw.bb50:                                          ; preds = %if.end
+  br label %return
+
+sw.bb51:                                          ; preds = %if.end
+  br label %return
+
+sw.bb52:                                          ; preds = %if.end
+  br label %return
+
+sw.bb53:                                          ; preds = %if.end
+  br label %return
+
+sw.bb54:                                          ; preds = %if.end
+  br label %return
+
+sw.bb55:                                          ; preds = %if.end
+  br label %return
+
+sw.bb56:                                          ; preds = %if.end
+  br label %return
+
+sw.bb58:                                          ; preds = %if.end
+  br label %return
+
+sw.bb59:                                          ; preds = %if.end
+  br label %return
+
+sw.bb60:                                          ; preds = %if.end
+  br label %return
+
+sw.bb61:                                          ; preds = %if.end
+  br label %return
+
+sw.bb62:                                          ; preds = %if.end
+  br label %return
+
+sw.bb63:                                          ; preds = %if.end
+  br label %return
+
+sw.bb64:                                          ; preds = %if.end
+  br label %return
+
+sw.bb65:                                          ; preds = %if.end
+  br label %return
+
+sw.bb66:                                          ; preds = %if.end
+  br label %return
+
+sw.bb67:                                          ; preds = %if.end
+  br label %return
+
+sw.bb68:                                          ; preds = %if.end
+  br label %return
+
+sw.bb69:                                          ; preds = %if.end
+  br label %return
+
+sw.bb70:                                          ; preds = %if.end
+  br label %return
+
+sw.bb71:                                          ; preds = %if.end
+  br label %return
+
+sw.bb72:                                          ; preds = %if.end
+  br label %return
+
+sw.bb73:                                          ; preds = %if.end
+  br label %return
+
+sw.bb74:                                          ; preds = %if.end
+  br label %return
+
+sw.bb76:                                          ; preds = %if.end
+  br label %return
+
+sw.bb77:                                          ; preds = %if.end
+  br label %return
+
+sw.bb78:                                          ; preds = %if.end
+  br label %return
+
+sw.bb79:                                          ; preds = %if.end
+  br label %return
+
+sw.bb80:                                          ; preds = %if.end
+  br label %return
+
+sw.bb81:                                          ; preds = %if.end
+  br label %return
+
+sw.bb82:                                          ; preds = %if.end
+  br label %return
+
+sw.bb83:                                          ; preds = %if.end
+  br label %return
+
+sw.bb84:                                          ; preds = %if.end
+  br label %return
+
+sw.bb85:                                          ; preds = %if.end
+  br label %return
+
+sw.bb86:                                          ; preds = %if.end
+  br label %return
+
+sw.bb87:                                          ; preds = %if.end
+  br label %return
+
+sw.bb88:                                          ; preds = %if.end
+  br label %return
+
+sw.bb89:                                          ; preds = %if.end
+  br label %return
+
+sw.bb90:                                          ; preds = %if.end
+  br label %return
+
+sw.bb91:                                          ; preds = %if.end
+  br label %return
+
+sw.bb92:                                          ; preds = %if.end
+  br label %return
+
+sw.bb93:                                          ; preds = %if.end
+  br label %return
+
+sw.bb94:                                          ; preds = %if.end
+  br label %return
+
+sw.bb95:                                          ; preds = %if.end
+  br label %return
+
+sw.bb96:                                          ; preds = %if.end
+  br label %return
+
+sw.bb97:                                          ; preds = %if.end
+  br label %return
+
+sw.bb98:                                          ; preds = %if.end
+  br label %return
+
+sw.bb99:                                          ; preds = %if.end
+  br label %return
+
+sw.bb100:                                         ; preds = %if.end
+  br label %return
+
+sw.bb101:                                         ; preds = %if.end
+  br label %return
+
+sw.bb102:                                         ; preds = %if.end
+  br label %return
+
+sw.bb103:                                         ; preds = %if.end
+  br label %return
+
+sw.bb104:                                         ; preds = %if.end
+  br label %return
+
+sw.bb105:                                         ; preds = %if.end
+  br label %return
+
+sw.bb106:                                         ; preds = %if.end
+  br label %return
+
+sw.bb107:                                         ; preds = %if.end
+  br label %return
+
+sw.bb108:                                         ; preds = %if.end
+  br label %return
+
+sw.bb109:                                         ; preds = %if.end
+  br label %return
+
+sw.bb110:                                         ; preds = %if.end
+  br label %return
+
+sw.bb111:                                         ; preds = %if.end
+  br label %return
+
+sw.bb112:                                         ; preds = %if.end
+  br label %return
+
+sw.bb113:                                         ; preds = %if.end
+  br label %return
+
+sw.bb114:                                         ; preds = %if.end
+  br label %return
+
+sw.bb115:                                         ; preds = %if.end
+  br label %return
+
+sw.bb116:                                         ; preds = %if.end
+  br label %return
+
+sw.bb117:                                         ; preds = %if.end
+  br label %return
+
+sw.bb118:                                         ; preds = %if.end
+  br label %return
+
+sw.bb119:                                         ; preds = %if.end
+  br label %return
+
+sw.bb120:                                         ; preds = %if.end
+  br label %return
+
+sw.bb121:                                         ; preds = %if.end
+  br label %return
+
+sw.bb122:                                         ; preds = %if.end
+  br label %return
+
+sw.bb123:                                         ; preds = %if.end
+  br label %return
+
+sw.bb124:                                         ; preds = %if.end
+  br label %return
+
+sw.bb125:                                         ; preds = %if.end
+  br label %return
+
+sw.bb126:                                         ; preds = %if.end
+  br label %return
+
+sw.bb127:                                         ; preds = %if.end
+  br label %return
+
+sw.bb128:                                         ; preds = %if.end
+  br label %return
+
+sw.bb129:                                         ; preds = %if.end
+  br label %return
+
+sw.bb130:                                         ; preds = %if.end
+  br label %return
+
+sw.bb131:                                         ; preds = %if.end
+  br label %return
+
+sw.bb132:                                         ; preds = %if.end
+  br label %return
+
+sw.bb133:                                         ; preds = %if.end
+  br label %return
+
+sw.bb134:                                         ; preds = %if.end
+  br label %return
+
+sw.bb135:                                         ; preds = %if.end
+  br label %return
+
+sw.bb136:                                         ; preds = %if.end
+  br label %return
+
+sw.bb137:                                         ; preds = %if.end
+  br label %return
+
+sw.bb138:                                         ; preds = %if.end
+  br label %return
+
+sw.bb139:                                         ; preds = %if.end
+  br label %return
+
+sw.bb140:                                         ; preds = %if.end
+  br label %return
+
+sw.bb141:                                         ; preds = %if.end
+  br label %return
+
+sw.bb142:                                         ; preds = %if.end
+  br label %return
+
+sw.bb143:                                         ; preds = %if.end
+  br label %return
+
+sw.bb144:                                         ; preds = %if.end
+  br label %return
+
+sw.bb145:                                         ; preds = %if.end
+  br label %return
+
+sw.bb146:                                         ; preds = %if.end
+  br label %return
+
+sw.bb147:                                         ; preds = %if.end
+  br label %return
+
+sw.bb148:                                         ; preds = %if.end
+  br label %return
+
+sw.bb149:                                         ; preds = %if.end
+  br label %return
+
+sw.bb150:                                         ; preds = %if.end
+  br label %return
+
+sw.bb151:                                         ; preds = %if.end
+  br label %return
+
+sw.bb152:                                         ; preds = %if.end
+  br label %return
+
+sw.bb153:                                         ; preds = %if.end
+  br label %return
+
+sw.bb154:                                         ; preds = %if.end
+  br label %return
+
+sw.bb155:                                         ; preds = %if.end
+  br label %return
+
+sw.bb156:                                         ; preds = %if.end
+  br label %return
+
+sw.bb157:                                         ; preds = %if.end
+  br label %return
+
+sw.bb158:                                         ; preds = %if.end
+  br label %return
+
+sw.bb159:                                         ; preds = %if.end
+  br label %return
+
+sw.bb160:                                         ; preds = %if.end
+  br label %return
+
+sw.bb161:                                         ; preds = %if.end
+  br label %return
+
+sw.bb162:                                         ; preds = %if.end
+  br label %return
+
+sw.bb163:                                         ; preds = %if.end
+  br label %return
+
+sw.bb164:                                         ; preds = %if.end
+  br label %return
+
+sw.bb165:                                         ; preds = %if.end
+  br label %return
+
+sw.bb166:                                         ; preds = %if.end
+  br label %return
+
+sw.bb167:                                         ; preds = %if.end
+  br label %return
+
+sw.bb168:                                         ; preds = %if.end
+  br label %return
+
+sw.bb169:                                         ; preds = %if.end
+  br label %return
+
+sw.bb170:                                         ; preds = %if.end
+  br label %return
+
+sw.bb171:                                         ; preds = %if.end
+  br label %return
+
+sw.bb172:                                         ; preds = %if.end
+  br label %return
+
+sw.bb173:                                         ; preds = %if.end
+  br label %return
+
+sw.bb174:                                         ; preds = %if.end
+  br label %return
+
+sw.bb175:                                         ; preds = %if.end
+  br label %return
+
+sw.bb176:                                         ; preds = %if.end
+  br label %return
+
+sw.bb177:                                         ; preds = %if.end
+  br label %return
+
+sw.bb178:                                         ; preds = %if.end
+  br label %return
+
+sw.bb179:                                         ; preds = %if.end
+  br label %return
+
+sw.bb180:                                         ; preds = %if.end
+  br label %return
+
+sw.bb181:                                         ; preds = %if.end
+  br label %return
+
+sw.bb182:                                         ; preds = %if.end
+  br label %return
+
+sw.bb183:                                         ; preds = %if.end
+  br label %return
+
+sw.bb184:                                         ; preds = %if.end
+  br label %return
+
+sw.bb185:                                         ; preds = %if.end
+  br label %return
+
+sw.bb186:                                         ; preds = %if.end
+  br label %return
+
+sw.bb187:                                         ; preds = %if.end
+  br label %return
+
+sw.bb188:                                         ; preds = %if.end
+  br label %return
+
+sw.bb189:                                         ; preds = %if.end
+  br label %return
+
+sw.bb190:                                         ; preds = %if.end
+  br label %return
+
+sw.bb191:                                         ; preds = %if.end
+  br label %return
+
+sw.bb192:                                         ; preds = %if.end
+  br label %return
+
+sw.bb193:                                         ; preds = %if.end
+  br label %return
+
+sw.bb194:                                         ; preds = %if.end
+  br label %return
+
+sw.bb195:                                         ; preds = %if.end
+  br label %return
+
+sw.bb196:                                         ; preds = %if.end
+  br label %return
+
+sw.bb197:                                         ; preds = %if.end
+  br label %return
+
+sw.bb198:                                         ; preds = %if.end
+  br label %return
+
+sw.bb199:                                         ; preds = %if.end
+  br label %return
+
+sw.bb200:                                         ; preds = %if.end
+  br label %return
+
+sw.bb201:                                         ; preds = %if.end
+  br label %return
+
+sw.bb202:                                         ; preds = %if.end
+  br label %return
+
+sw.bb203:                                         ; preds = %if.end
+  br label %return
+
+return:
+  %retval.0 = phi i32 [ 39204, %sw.bb202 ], [ 38809, %sw.bb201 ], [ 38416, %sw.bb200 ], [ 38025, %sw.bb199 ], [ 37636, %sw.bb198 ], [ 37249, %sw.bb197 ], [ 36864, %sw.bb196 ], [ 36481, %sw.bb195 ], [ 36100, %sw.bb194 ], [ 35721, %sw.bb193 ], [ 35344, %sw.bb192 ], [ 34969, %sw.bb191 ], [ 34596, %sw.bb190 ], [ 34225, %sw.bb189 ], [ 33856, %sw.bb188 ], [ 33489, %sw.bb187 ], [ 33124, %sw.bb186 ], [ 32761, %sw.bb185 ], [ 32400, %sw.bb184 ], [ 32041, %sw.bb183 ], [ 31684, %sw.bb182 ], [ 31329, %sw.bb181 ], [ 30976, %sw.bb180 ], [ 30625, %sw.bb179 ], [ 30276, %sw.bb178 ], [ 29929, %sw.bb177 ], [ 29584, %sw.bb176 ], [ 29241, %sw.bb175 ], [ 28900, %sw.bb174 ], [ 28561, %sw.bb173 ], [ 28224, %sw.bb172 ], [ 27889, %sw.bb171 ], [ 27556, %sw.bb170 ], [ 27225, %sw.bb169 ], [ 26896, %sw.bb168 ], [ 26569, %sw.bb167 ], [ 26244, %sw.bb166 ], [ 25921, %sw.bb165 ], [ 25600, %sw.bb164 ], [ 25281, %sw.bb163 ], [ 24964, %sw.bb162 ], [ 24649, %sw.bb161 ], [ 24336, %sw.bb160 ], [ 24025, %sw.bb159 ],
  [ 23716, %sw.bb158 ], [ 23409, %sw.bb157 ], [ 23104, %sw.bb156 ], [ 22801, %sw.bb155 ], [ 22500, %sw.bb154 ], [ 22201, %sw.bb153 ], [ 21904, %sw.bb152 ], [ 21609, %sw.bb151 ], [ 21316, %sw.bb150 ], [ 21025, %sw.bb149 ], [ 20736, %sw.bb148 ], [ 20449, %sw.bb147 ], [ 20164, %sw.bb146 ], [ 19881, %sw.bb145 ], [ 19600, %sw.bb144 ], [ 19321, %sw.bb143 ], [ 19044, %sw.bb142 ], [ 18769, %sw.bb141 ], [ 18496, %sw.bb140 ], [ 18225, %sw.bb139 ], [ 17956, %sw.bb138 ], [ 17689, %sw.bb137 ], [ 17424, %sw.bb136 ], [ 17161, %sw.bb135 ], [ 16900, %sw.bb134 ], [ 16641, %sw.bb133 ], [ 16384, %sw.bb132 ], [ 16129, %sw.bb131 ], [ 15876, %sw.bb130 ], [ 15625, %sw.bb129 ], [ 15376, %sw.bb128 ], [ 15129, %sw.bb127 ], [ 14884, %sw.bb126 ], [ 14641, %sw.bb125 ], [ 14400, %sw.bb124 ], [ 14161, %sw.bb123 ], [ 13924, %sw.bb122 ], [ 13689, %sw.bb121 ], [ 13456, %sw.bb120 ], [ 13225, %sw.bb119 ], [ 12996, %sw.bb118 ], [ 12769, %sw.bb117 ], [ 12544, %sw.bb116 ], [ 12321, %sw.bb115 ], [ 12100, %sw.bb114 ]
 , [ 11881, %sw.bb113 ], [ 11664, %sw.bb112 ], [ 11449, %sw.bb111 ], [ 11236, %sw.bb110 ], [ 11025, %sw.bb109 ], [ 10816, %sw.bb108 ], [ 10609, %sw.bb107 ], [ 10404, %sw.bb106 ], [ 10201, %sw.bb105 ], [ 10000, %sw.bb104 ], [ 9801, %sw.bb103 ], [ 9604, %sw.bb102 ], [ 9409, %sw.bb101 ], [ 9216, %sw.bb100 ], [ 9025, %sw.bb99 ], [ 8836, %sw.bb98 ], [ 8649, %sw.bb97 ], [ 8464, %sw.bb96 ], [ 8281, %sw.bb95 ], [ 8100, %sw.bb94 ], [ 7921, %sw.bb93 ], [ 7744, %sw.bb92 ], [ 7569, %sw.bb91 ], [ 7396, %sw.bb90 ], [ 7225, %sw.bb89 ], [ 7056, %sw.bb88 ], [ 6889, %sw.bb87 ], [ 6724, %sw.bb86 ], [ 6561, %sw.bb85 ], [ 6400, %sw.bb84 ], [ 6241, %sw.bb83 ], [ 6084, %sw.bb82 ], [ 5929, %sw.bb81 ], [ 5776, %sw.bb80 ], [ 5625, %sw.bb79 ], [ 5476, %sw.bb78 ], [ 5329, %sw.bb77 ], [ 5184, %sw.bb76 ], [ 5112, %sw.bb74 ], [ 4900, %sw.bb73 ], [ 4761, %sw.bb72 ], [ 4624, %sw.bb71 ], [ 4489, %sw.bb70 ], [ 4356, %sw.bb69 ], [ 4225, %sw.bb68 ], [ 4096, %sw.bb67 ], [ 3969, %sw.bb66 ], [ 3844, %sw.bb65 ], [ 3
 721, %sw.bb64 ], [ 3600, %sw.bb63 ], [ 3481, %sw.bb62 ], [ 3364, %sw.bb61 ], [ 3249, %sw.bb60 ], [ 3136, %sw.bb59 ], [ 3025, %sw.bb58 ], [ 2970, %sw.bb56 ], [ 2809, %sw.bb55 ], [ 2704, %sw.bb54 ], [ 2601, %sw.bb53 ], [ 2500, %sw.bb52 ], [ 2401, %sw.bb51 ], [ 2304, %sw.bb50 ], [ 2209, %sw.bb49 ], [ 2116, %sw.bb48 ], [ 2025, %sw.bb47 ], [ 1980, %sw.bb45 ], [ 1849, %sw.bb44 ], [ 1764, %sw.bb43 ], [ 1681, %sw.bb42 ], [ 1600, %sw.bb41 ], [ 1521, %sw.bb40 ], [ 1444, %sw.bb39 ], [ 1369, %sw.bb38 ], [ 1296, %sw.bb37 ], [ 1260, %sw.bb35 ], [ 1156, %sw.bb34 ], [ 1089, %sw.bb33 ], [ 1024, %sw.bb32 ], [ 961, %sw.bb31 ], [ 900, %sw.bb30 ], [ 841, %sw.bb29 ], [ 784, %sw.bb28 ], [ 729, %sw.bb27 ], [ 676, %sw.bb26 ], [ 625, %sw.bb25 ], [ 576, %sw.bb24 ], [ 529, %sw.bb23 ], [ 484, %sw.bb22 ], [ 441, %sw.bb21 ], [ 400, %sw.bb20 ], [ 361, %sw.bb19 ], [ 342, %sw.bb18 ], [ 289, %sw.bb17 ], [ 256, %sw.bb16 ], [ 225, %sw.bb15 ], [ 196, %sw.bb14 ], [ 169, %sw.bb13 ], [ 144, %sw.bb12 ], [ 121, %sw.b
 b11 ], [ 100, %sw.bb10 ], [ 81, %sw.bb9 ], [ 64, %sw.bb8 ], [ 49, %sw.bb7 ], [ 36, %sw.bb6 ], [ 25, %sw.bb5 ], [ 16, %sw.bb4 ], [ 9, %sw.bb3 ], [ 4, %sw.bb2 ], [ 1, %sw.bb1 ], [ 39601, %sw.bb203 ], [ 0, %if.end ]
+  ret i32 %retval.0
+}





More information about the llvm-commits mailing list