Author: dpatel
Date: Thu Feb 14 17:18:47 2008
New Revision: 47141

URL: http://llvm.org/viewvc/llvm-project?rev=47141&view=rev
Log:
If loop header is also loop exiting block then OrigPN is incoming value for B 
loop header.
Fixes PR 2030.


Added:
    llvm/trunk/test/Transforms/LoopIndexSplit/2008-02-14-Crash.ll
Modified:
    llvm/trunk/lib/Transforms/Scalar/LoopIndexSplit.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/LoopIndexSplit.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopIndexSplit.cpp?rev=47141&r1=47140&r2=47141&view=diff

==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/LoopIndexSplit.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/LoopIndexSplit.cpp Thu Feb 14 17:18:47 2008
@@ -1465,7 +1465,13 @@
         PN->addIncoming(SD.B_StartValue, A_ExitingBlock);
       else { 
         PHINode *OrigPN = cast<PHINode>(InverseMap[PN]);
-        Value *V2 = OrigPN->getIncomingValueForBlock(A_ExitingBlock);
+        Value *V2 = NULL;
+        // If loop header is also loop exiting block then
+        // OrigPN is incoming value for B loop header.
+        if (A_ExitingBlock == L->getHeader())
+          V2 = OrigPN;
+        else
+          V2 = OrigPN->getIncomingValueForBlock(A_ExitingBlock);
         PN->addIncoming(V2, A_ExitingBlock);
       }
     } else

Added: llvm/trunk/test/Transforms/LoopIndexSplit/2008-02-14-Crash.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopIndexSplit/2008-02-14-Crash.ll?rev=47141&view=auto

==============================================================================
--- llvm/trunk/test/Transforms/LoopIndexSplit/2008-02-14-Crash.ll (added)
+++ llvm/trunk/test/Transforms/LoopIndexSplit/2008-02-14-Crash.ll Thu Feb 14 
17:18:47 2008
@@ -0,0 +1,464 @@
+; RUN: llvm-as < %s | opt -loop-index-split -disable-output
+; PR 2030
+       %struct.FULL = type { i32, i32, [1000 x float*] }
+
+define i32 @matgen(%struct.FULL* %a, float** %x, float** %b, float** %bt, 
i32** %ipvt, i32 %test_case, i32 %scale) {
+entry:
+       br i1 false, label %bb, label %entry.bb30_crit_edge
+
+entry.bb30_crit_edge:          ; preds = %entry
+       br label %bb30
+
+bb:            ; preds = %entry
+       br label %bb14
+
+bb6:           ; preds = %bb14
+       br label %bb14
+
+bb14:          ; preds = %bb6, %bb
+       br i1 false, label %bb6, label %bb22
+
+bb22:          ; preds = %bb14
+       br label %bb30
+
+bb30:          ; preds = %bb22, %entry.bb30_crit_edge
+       switch i32 %test_case, label %bb648 [
+                i32 1, label %bb30.bb32_crit_edge
+                i32 2, label %bb30.bb32_crit_edge1
+                i32 3, label %bb30.bb32_crit_edge2
+                i32 4, label %bb30.bb108_crit_edge
+                i32 5, label %bb30.bb108_crit_edge3
+                i32 6, label %bb30.bb142_crit_edge
+                i32 7, label %bb30.bb142_crit_edge4
+                i32 8, label %bb30.bb142_crit_edge5
+                i32 9, label %bb234
+                i32 10, label %bb292
+                i32 11, label %bb353
+                i32 12, label %bb419
+                i32 13, label %bb485
+                i32 14, label %bb567
+       ]
+
+bb30.bb142_crit_edge5:         ; preds = %bb30
+       br label %bb142
+
+bb30.bb142_crit_edge4:         ; preds = %bb30
+       br label %bb142
+
+bb30.bb142_crit_edge:          ; preds = %bb30
+       br label %bb142
+
+bb30.bb108_crit_edge3:         ; preds = %bb30
+       br label %bb108
+
+bb30.bb108_crit_edge:          ; preds = %bb30
+       br label %bb108
+
+bb30.bb32_crit_edge2:          ; preds = %bb30
+       br label %bb32
+
+bb30.bb32_crit_edge1:          ; preds = %bb30
+       br label %bb32
+
+bb30.bb32_crit_edge:           ; preds = %bb30
+       br label %bb32
+
+bb32:          ; preds = %bb30.bb32_crit_edge, %bb30.bb32_crit_edge1, 
%bb30.bb32_crit_edge2
+       br i1 false, label %bb53, label %bb52
+
+bb52:          ; preds = %bb32
+       br label %bb739
+
+bb53:          ; preds = %bb32
+       br label %bb101
+
+bb58:          ; preds = %bb101
+       br label %bb92
+
+bb64:          ; preds = %bb92
+       br i1 false, label %bb64.bb87_crit_edge, label %bb72
+
+bb64.bb87_crit_edge:           ; preds = %bb64
+       br label %bb87
+
+bb72:          ; preds = %bb64
+       br i1 false, label %bb72.bb87_crit_edge, label %bb79
+
+bb72.bb87_crit_edge:           ; preds = %bb72
+       br label %bb87
+
+bb79:          ; preds = %bb72
+       br label %bb87
+
+bb87:          ; preds = %bb79, %bb72.bb87_crit_edge, %bb64.bb87_crit_edge
+       br label %bb92
+
+bb92:          ; preds = %bb87, %bb58
+       br i1 false, label %bb64, label %bb98
+
+bb98:          ; preds = %bb92
+       br label %bb101
+
+bb101:         ; preds = %bb98, %bb53
+       br i1 false, label %bb58, label %bb107
+
+bb107:         ; preds = %bb101
+       br label %bb651
+
+bb108:         ; preds = %bb30.bb108_crit_edge, %bb30.bb108_crit_edge3
+       br i1 false, label %bb125, label %bb124
+
+bb124:         ; preds = %bb108
+       br label %bb739
+
+bb125:         ; preds = %bb108
+       br i1 false, label %bb138, label %bb139
+
+bb138:         ; preds = %bb125
+       br label %bb140
+
+bb139:         ; preds = %bb125
+       br label %bb140
+
+bb140:         ; preds = %bb139, %bb138
+       br label %bb651
+
+bb142:         ; preds = %bb30.bb142_crit_edge, %bb30.bb142_crit_edge4, 
%bb30.bb142_crit_edge5
+       br i1 false, label %bb161, label %bb160
+
+bb160:         ; preds = %bb142
+       br label %bb739
+
+bb161:         ; preds = %bb142
+       br i1 false, label %bb170, label %bb161.bb171_crit_edge
+
+bb161.bb171_crit_edge:         ; preds = %bb161
+       br label %bb171
+
+bb170:         ; preds = %bb161
+       br label %bb171
+
+bb171:         ; preds = %bb170, %bb161.bb171_crit_edge
+       br i1 false, label %bb176, label %bb171.bb177_crit_edge
+
+bb171.bb177_crit_edge:         ; preds = %bb171
+       br label %bb177
+
+bb176:         ; preds = %bb171
+       br label %bb177
+
+bb177:         ; preds = %bb176, %bb171.bb177_crit_edge
+       br label %bb227
+
+bb178:         ; preds = %bb227
+       br label %bb218
+
+bb184:         ; preds = %bb218
+       br i1 false, label %bb191, label %bb193
+
+bb191:         ; preds = %bb184
+       br label %bb213
+
+bb193:         ; preds = %bb184
+       br i1 false, label %bb200, label %bb203
+
+bb200:         ; preds = %bb193
+       br label %bb213
+
+bb203:         ; preds = %bb193
+       br i1 false, label %bb210, label %bb203.bb213_crit_edge
+
+bb203.bb213_crit_edge:         ; preds = %bb203
+       br label %bb213
+
+bb210:         ; preds = %bb203
+       br label %bb213
+
+bb213:         ; preds = %bb210, %bb203.bb213_crit_edge, %bb200, %bb191
+       br label %bb218
+
+bb218:         ; preds = %bb213, %bb178
+       br i1 false, label %bb184, label %bb224
+
+bb224:         ; preds = %bb218
+       br label %bb227
+
+bb227:         ; preds = %bb224, %bb177
+       br i1 false, label %bb178, label %bb233
+
+bb233:         ; preds = %bb227
+       br label %bb651
+
+bb234:         ; preds = %bb30
+       br i1 false, label %bb253, label %bb252
+
+bb252:         ; preds = %bb234
+       br label %bb739
+
+bb253:         ; preds = %bb234
+       br label %bb285
+
+bb258:         ; preds = %bb285
+       br label %bb276
+
+bb264:         ; preds = %bb276
+       br label %bb276
+
+bb276:         ; preds = %bb264, %bb258
+       br i1 false, label %bb264, label %bb282
+
+bb282:         ; preds = %bb276
+       br label %bb285
+
+bb285:         ; preds = %bb282, %bb253
+       br i1 false, label %bb258, label %bb291
+
+bb291:         ; preds = %bb285
+       br label %bb651
+
+bb292:         ; preds = %bb30
+       br i1 false, label %bb311, label %bb310
+
+bb310:         ; preds = %bb292
+       br label %bb739
+
+bb311:         ; preds = %bb292
+       br label %bb346
+
+bb316:         ; preds = %bb346
+       br label %bb337
+
+bb322:         ; preds = %bb337
+       br label %bb337
+
+bb337:         ; preds = %bb322, %bb316
+       br i1 false, label %bb322, label %bb343
+
+bb343:         ; preds = %bb337
+       br label %bb346
+
+bb346:         ; preds = %bb343, %bb311
+       br i1 false, label %bb316, label %bb352
+
+bb352:         ; preds = %bb346
+       br label %bb651
+
+bb353:         ; preds = %bb30
+       br i1 false, label %bb372, label %bb371
+
+bb371:         ; preds = %bb353
+       br label %bb739
+
+bb372:         ; preds = %bb353
+       br label %bb412
+
+bb377:         ; preds = %bb412
+       br label %bb403
+
+bb383:         ; preds = %bb403
+       br i1 false, label %bb395, label %bb389
+
+bb389:         ; preds = %bb383
+       br label %bb396
+
+bb395:         ; preds = %bb383
+       br label %bb396
+
+bb396:         ; preds = %bb395, %bb389
+       br label %bb403
+
+bb403:         ; preds = %bb396, %bb377
+       br i1 false, label %bb383, label %bb409
+
+bb409:         ; preds = %bb403
+       br label %bb412
+
+bb412:         ; preds = %bb409, %bb372
+       br i1 false, label %bb377, label %bb418
+
+bb418:         ; preds = %bb412
+       br label %bb651
+
+bb419:         ; preds = %bb30
+       br i1 false, label %bb438, label %bb437
+
+bb437:         ; preds = %bb419
+       br label %bb739
+
+bb438:         ; preds = %bb419
+       br label %bb478
+
+bb443:         ; preds = %bb478
+       br label %bb469
+
+bb449:         ; preds = %bb469
+       br i1 false, label %bb461, label %bb455
+
+bb455:         ; preds = %bb449
+       br label %bb462
+
+bb461:         ; preds = %bb449
+       br label %bb462
+
+bb462:         ; preds = %bb461, %bb455
+       br label %bb469
+
+bb469:         ; preds = %bb462, %bb443
+       br i1 false, label %bb449, label %bb475
+
+bb475:         ; preds = %bb469
+       br label %bb478
+
+bb478:         ; preds = %bb475, %bb438
+       br i1 false, label %bb443, label %bb484
+
+bb484:         ; preds = %bb478
+       br label %bb651
+
+bb485:         ; preds = %bb30
+       br i1 false, label %bb504, label %bb503
+
+bb503:         ; preds = %bb485
+       br label %bb739
+
+bb504:         ; preds = %bb485
+       br label %bb560
+
+bb513:         ; preds = %bb560
+       br label %bb551
+
+bb519:         ; preds = %bb551
+       br i1 false, label %bb528, label %bb532
+
+bb528:         ; preds = %bb519
+       br label %bb536
+
+bb532:         ; preds = %bb519
+       br label %bb536
+
+bb536:         ; preds = %bb532, %bb528
+       br label %bb551
+
+bb551:         ; preds = %bb536, %bb513
+       br i1 false, label %bb519, label %bb557
+
+bb557:         ; preds = %bb551
+       br label %bb560
+
+bb560:         ; preds = %bb557, %bb504
+       br i1 false, label %bb513, label %bb566
+
+bb566:         ; preds = %bb560
+       br label %bb651
+
+bb567:         ; preds = %bb30
+       br i1 false, label %bb586, label %bb585
+
+bb585:         ; preds = %bb567
+       br label %bb739
+
+bb586:         ; preds = %bb567
+       br label %bb641
+
+bb595:         ; preds = %bb641
+       br label %bb632
+
+bb601:         ; preds = %bb632
+       %tmp604 = icmp sgt i32 %i.7, 0          ; <i1> [#uses=1]
+       br i1 %tmp604, label %bb607, label %bb611
+
+bb607:         ; preds = %bb601
+       br label %bb615
+
+bb611:         ; preds = %bb601
+       br label %bb615
+
+bb615:         ; preds = %bb611, %bb607
+       %tmp629 = add i32 %i.7, 1               ; <i32> [#uses=1]
+       %tmp631 = getelementptr float* %col.7, i32 1            ; <float*> 
[#uses=1]
+       br label %bb632
+
+bb632:         ; preds = %bb615, %bb595
+       %col.7 = phi float* [ null, %bb595 ], [ %tmp631, %bb615 ]               
; <float*> [#uses=1]
+       %i.7 = phi i32 [ 0, %bb595 ], [ %tmp629, %bb615 ]               ; <i32> 
[#uses=3]
+       %tmp635 = icmp slt i32 %i.7, 0          ; <i1> [#uses=1]
+       br i1 %tmp635, label %bb601, label %bb638
+
+bb638:         ; preds = %bb632
+       br label %bb641
+
+bb641:         ; preds = %bb638, %bb586
+       br i1 false, label %bb595, label %bb647
+
+bb647:         ; preds = %bb641
+       br label %bb651
+
+bb648:         ; preds = %bb30
+       br label %bb739
+
+bb651:         ; preds = %bb647, %bb566, %bb484, %bb418, %bb352, %bb291, 
%bb233, %bb140, %bb107
+       br i1 false, label %bb658, label %bb651.bb661_crit_edge
+
+bb651.bb661_crit_edge:         ; preds = %bb651
+       br label %bb661
+
+bb658:         ; preds = %bb651
+       br label %bb661
+
+bb661:         ; preds = %bb658, %bb651.bb661_crit_edge
+       br i1 false, label %bb666, label %bb661.bb686_crit_edge
+
+bb661.bb686_crit_edge:         ; preds = %bb661
+       br label %bb686
+
+bb666:         ; preds = %bb661
+       br label %bb680
+
+bb670:         ; preds = %bb680
+       br label %bb680
+
+bb680:         ; preds = %bb670, %bb666
+       br i1 false, label %bb670, label %bb680.bb686_crit_edge
+
+bb680.bb686_crit_edge:         ; preds = %bb680
+       br label %bb686
+
+bb686:         ; preds = %bb680.bb686_crit_edge, %bb661.bb686_crit_edge
+       br i1 false, label %bb699, label %bb696
+
+bb696:         ; preds = %bb686
+       br label %bb739
+
+bb699:         ; preds = %bb686
+       br i1 false, label %bb712, label %bb709
+
+bb709:         ; preds = %bb699
+       br label %bb739
+
+bb712:         ; preds = %bb699
+       br i1 false, label %bb717, label %bb712.bb720_crit_edge
+
+bb712.bb720_crit_edge:         ; preds = %bb712
+       br label %bb720
+
+bb717:         ; preds = %bb712
+       br label %bb720
+
+bb720:         ; preds = %bb717, %bb712.bb720_crit_edge
+       br i1 false, label %bb725, label %bb720.bb738_crit_edge
+
+bb720.bb738_crit_edge:         ; preds = %bb720
+       br label %bb738
+
+bb725:         ; preds = %bb720
+       br label %bb738
+
+bb738:         ; preds = %bb725, %bb720.bb738_crit_edge
+       br label %bb739
+
+bb739:         ; preds = %bb738, %bb709, %bb696, %bb648, %bb585, %bb503, 
%bb437, %bb371, %bb310, %bb252, %bb160, %bb124, %bb52
+       br label %return
+
+return:                ; preds = %bb739
+       ret i32 0
+}


_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to