Author: lattner
Date: Wed Aug  1 23:47:05 2007
New Revision: 40720

URL: http://llvm.org/viewvc/llvm-project?rev=40720&view=rev
Log:
Fix PR1575 and test/Transforms/CondProp/2007-08-01-InvalidRead.ll

Added:
    llvm/trunk/test/Transforms/CondProp/2007-08-01-InvalidRead.ll
Modified:
    llvm/trunk/lib/Transforms/Scalar/CondPropagate.cpp

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

==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/CondPropagate.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/CondPropagate.cpp Wed Aug  1 23:47:05 2007
@@ -142,14 +142,15 @@
     if (ConstantInt *CB = dyn_cast<ConstantInt>(PN->getIncomingValue(i-1))) {
       // If we have a constant, forward the edge from its current to its
       // ultimate destination.
-      bool PHIGone = PN->getNumIncomingValues() == 2;
       RevectorBlockTo(PN->getIncomingBlock(i-1),
                       BI->getSuccessor(CB->isZero()));
       ++NumBrThread;
 
-      // If there were two predecessors before this simplification, the PHI 
node
-      // will be deleted.  Don't iterate through it the last time.
-      if (PHIGone) return;
+      // If there were two predecessors before this simplification, or if the
+      // PHI node contained all the same value except for the one we just
+      // substituted, the PHI node may be deleted.  Don't iterate through it 
the
+      // last time.
+      if (BI->getCondition() != PN) return;
     }
 }
 
@@ -177,16 +178,17 @@
     if (ConstantInt *CI = dyn_cast<ConstantInt>(PN->getIncomingValue(i-1))) {
       // If we have a constant, forward the edge from its current to its
       // ultimate destination.
-      bool PHIGone = PN->getNumIncomingValues() == 2;
       unsigned DestCase = SI->findCaseValue(CI);
       RevectorBlockTo(PN->getIncomingBlock(i-1),
                       SI->getSuccessor(DestCase));
       ++NumSwThread;
       RemovedPreds = true;
 
-      // If there were two predecessors before this simplification, the PHI 
node
-      // will be deleted.  Don't iterate through it the last time.
-      if (PHIGone) return;
+      // If there were two predecessors before this simplification, or if the
+      // PHI node contained all the same value except for the one we just
+      // substituted, the PHI node may be deleted.  Don't iterate through it 
the
+      // last time.
+      if (SI->getCondition() != PN) return;
     }
 }
 

Added: llvm/trunk/test/Transforms/CondProp/2007-08-01-InvalidRead.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/CondProp/2007-08-01-InvalidRead.ll?rev=40720&view=auto

==============================================================================
--- llvm/trunk/test/Transforms/CondProp/2007-08-01-InvalidRead.ll (added)
+++ llvm/trunk/test/Transforms/CondProp/2007-08-01-InvalidRead.ll Wed Aug  1 
23:47:05 2007
@@ -0,0 +1,814 @@
+; RUN: llvm-as < %s | opt -inline -tailduplicate -condprop -simplifycfg 
-disable-output
+; PR1575
+target datalayout = 
"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64"
+target triple = "i686-pc-linux-gnu"
+       %struct.DCTtab = type { i8, i8, i8 }
+       %struct.FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, 
i8*, i8*, %struct._IO_marker*, %struct.FILE*, i32, i32, i32, i16, i8, [1 x i8], 
i8*, i64, i8*, i8*, i8*, i8*, i32, i32, [40 x i8] }
+       %struct.VLCtab = type { i8, i8 }
+       %struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, 
i8*, i8*, i8*, %struct._IO_marker*, %struct.FILE*, i32, i32, i32, i16, i8, [1 x 
i8], i8*, i64, i8*, i8*, i8*, i8*, i32, i32, [40 x i8] }
+       %struct._IO_marker = type { %struct._IO_marker*, %struct.FILE*, i32 }
+       %struct.layer_data = type { i32, [2048 x i8], i8*, [16 x i8], i32, i8*, 
i32, i32, [64 x i32], [64 x i32], [64 x i32], [64 x i32], i32, i32, i32, i32, 
i32, i32, i32, i32, i32, i32, i32, i32, [12 x [64 x i16]] }
[EMAIL PROTECTED] = external global %struct.layer_data*         ; 
<%struct.layer_data**> [#uses=1]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=2]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=1]
[EMAIL PROTECTED] = external global [12 x %struct.DCTtab]               ; <[12 
x %struct.DCTtab]*> [#uses=0]
[EMAIL PROTECTED] = external global [60 x %struct.DCTtab]               ; <[60 
x %struct.DCTtab]*> [#uses=0]
[EMAIL PROTECTED] = external global [8 x %struct.DCTtab]                ; <[8 x 
%struct.DCTtab]*> [#uses=0]
[EMAIL PROTECTED] = external global [16 x %struct.DCTtab]               ; <[16 
x %struct.DCTtab]*> [#uses=0]
[EMAIL PROTECTED] = external global [16 x %struct.DCTtab]               ; <[16 
x %struct.DCTtab]*> [#uses=0]
[EMAIL PROTECTED] = external global [16 x %struct.DCTtab]               ; <[16 
x %struct.DCTtab]*> [#uses=0]
[EMAIL PROTECTED] = external global [16 x %struct.DCTtab]               ; <[16 
x %struct.DCTtab]*> [#uses=0]
[EMAIL PROTECTED] = external global [16 x %struct.DCTtab]               ; <[16 
x %struct.DCTtab]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [51 x i8]         ; <[51 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global %struct.FILE*               ; 
<%struct.FILE**> [#uses=0]
[EMAIL PROTECTED] = external constant [43 x i8]         ; <[43 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global [2 x [64 x i8]]             ; <[2 x [64 x 
i8]]*> [#uses=0]
[EMAIL PROTECTED] = external global [12 x %struct.DCTtab]               ; <[12 
x %struct.DCTtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [55 x i8]         ; <[55 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [43 x i8]         ; <[43 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global %struct.layer_data          ; 
<%struct.layer_data*> [#uses=1]
[EMAIL PROTECTED] = external global %struct.layer_data          ; 
<%struct.layer_data*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=2]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global [252 x %struct.DCTtab]              ; <[252 
x %struct.DCTtab]*> [#uses=0]
[EMAIL PROTECTED] = external global [8 x %struct.DCTtab]                ; <[8 x 
%struct.DCTtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [51 x i8]         ; <[51 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [45 x i8]         ; <[45 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [44 x i8]         ; <[44 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [55 x i8]         ; <[55 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [44 x i8]         ; <[44 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i1          ; <i1*> [#uses=0]
[EMAIL PROTECTED] = external constant [16 x double]             ; <[16 x 
double]*> [#uses=0]
[EMAIL PROTECTED] = external constant [43 x i8]         ; <[43 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [18 x i8]         ; <[18 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global [64 x i8]           ; <[64 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [27 x i8]         ; <[27 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=1]
[EMAIL PROTECTED] = external global [32 x i8]           ; <[32 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [37 x i8]         ; <[37 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [19 x i8]         ; <[19 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global double              ; <double*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global double              ; <double*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [27 x i8]         ; <[27 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [30 x i8]         ; <[30 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [38 x i8]         ; <[38 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global [3 x i32]           ; <[3 x i32]*> [#uses=0]
[EMAIL PROTECTED] = external constant [44 x i8]         ; <[44 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global [3 x i32]           ; <[3 x i32]*> [#uses=0]
[EMAIL PROTECTED] = external constant [45 x i8]         ; <[45 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global [2 x [2 x i32]]             ; <[2 x [2 x 
i32]]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=1]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [55 x i8]         ; <[55 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [56 x i8]         ; <[56 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [36 x i8]         ; <[36 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [40 x i8]         ; <[40 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [41 x i8]         ; <[41 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [40 x i8]         ; <[40 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [31 x i8]         ; <[31 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [22 x i8]         ; <[22 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [27 x i8]         ; <[27 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [46 x i8]         ; <[46 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [25 x i8]         ; <[25 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [25 x i8]         ; <[25 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [25 x i8]         ; <[25 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i1          ; <i1*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [29 x i8]         ; <[29 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [32 x i8]         ; <[32 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [3 x [4 x i8]]            ; <[3 x [4 x 
i8]]*> [#uses=0]
[EMAIL PROTECTED] = external constant [9 x i8]          ; <[9 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global [3 x i8*]           ; <[3 x i8*]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i8*         ; <i8**> [#uses=0]
[EMAIL PROTECTED] = external constant [30 x i8]         ; <[30 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [27 x i8]         ; <[27 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=1]
[EMAIL PROTECTED] = external global [3 x i8*]           ; <[3 x i8*]*> [#uses=0]
[EMAIL PROTECTED] = external global [3 x i8*]           ; <[3 x i8*]*> [#uses=0]
[EMAIL PROTECTED] = external global [3 x i8*]           ; <[3 x i8*]*> [#uses=0]
[EMAIL PROTECTED] = external constant [34 x i8]         ; <[34 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [43 x i8]         ; <[43 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [29 x i8]         ; <[29 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [38 x i8]         ; <[38 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [32 x i8]         ; <[32 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [8 x %struct.VLCtab]              ; <[8 x 
%struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [8 x %struct.VLCtab]              ; <[8 x 
%struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [16 x %struct.VLCtab]             ; <[16 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [8 x %struct.VLCtab]              ; <[8 x 
%struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [16 x %struct.VLCtab]             ; <[16 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [16 x %struct.VLCtab]             ; <[16 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [16 x %struct.VLCtab]             ; <[16 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [14 x %struct.VLCtab]             ; <[14 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [12 x %struct.VLCtab]             ; <[12 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [8 x %struct.VLCtab]              ; <[8 x 
%struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [8 x %struct.VLCtab]              ; <[8 x 
%struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [8 x %struct.VLCtab]              ; <[8 x 
%struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [8 x %struct.VLCtab]              ; <[8 x 
%struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [12 x %struct.VLCtab]             ; <[12 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [32 x %struct.VLCtab]             ; <[32 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [64 x %struct.VLCtab]             ; <[64 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [8 x %struct.VLCtab]              ; <[8 x 
%struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [16 x %struct.VLCtab]             ; <[16 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [104 x %struct.VLCtab]            ; <[104 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [32 x %struct.VLCtab]             ; <[32 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [16 x %struct.VLCtab]             ; <[16 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [32 x %struct.VLCtab]             ; <[32 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [32 x %struct.VLCtab]             ; <[32 
x %struct.VLCtab]*> [#uses=0]
[EMAIL PROTECTED] = external constant [56 x i8]         ; <[56 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [29 x i8]         ; <[29 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [45 x i8]         ; <[45 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [33 x i8]         ; <[33 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [42 x i8]         ; <[42 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i16*                ; <i16**> [#uses=0]
[EMAIL PROTECTED] = external global [1024 x i16]                ; <[1024 x 
i16]*> [#uses=0]
[EMAIL PROTECTED] = external global [8 x [8 x double]]          ; <[8 x [8 x 
double]]*> [#uses=0]
[EMAIL PROTECTED] = external global [28 x i8]           ; <[28 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global [41 x i8]           ; <[41 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global [8 x [4 x i32]]             ; <[8 x [4 x 
i32]]*> [#uses=0]
[EMAIL PROTECTED] = external global i8*         ; <i8**> [#uses=0]
[EMAIL PROTECTED] = external constant [36 x i8]         ; <[36 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global [256 x i8]          ; <[256 x i8]*> 
[#uses=0]
[EMAIL PROTECTED] = external constant [52 x i8]         ; <[52 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [33 x i8]         ; <[33 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i8*         ; <i8**> [#uses=0]
[EMAIL PROTECTED] = external constant [46 x i8]         ; <[46 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [22 x i8]         ; <[22 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [30 x i8]         ; <[30 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [3 x i32]         ; <[3 x i32]*> [#uses=0]
[EMAIL PROTECTED] = external constant [42 x i8]         ; <[42 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [41 x i8]         ; <[41 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [26 x i8]         ; <[26 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global [3 x i8*]           ; <[3 x i8*]*> [#uses=0]
[EMAIL PROTECTED] = external constant [34 x i8]         ; <[34 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global [3 x i8*]           ; <[3 x i8*]*> [#uses=0]
[EMAIL PROTECTED] = external constant [24 x i8]         ; <[24 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global [3 x i8*]           ; <[3 x i8*]*> [#uses=0]
[EMAIL PROTECTED] = external constant [24 x i8]         ; <[24 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i16*                ; <i16**> [#uses=0]
[EMAIL PROTECTED] = external constant [21 x i8]         ; <[21 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [3 x i8]          ; <[3 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [9 x i8]          ; <[9 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [1195 x i8]               ; <[1195 x 
i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [55 x i8]         ; <[55 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [49 x i8]         ; <[49 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [39 x i8]         ; <[39 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [49 x i8]         ; <[49 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [39 x i8]         ; <[39 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i8*         ; <i8**> [#uses=0]
[EMAIL PROTECTED] = external global i8*         ; <i8**> [#uses=0]
[EMAIL PROTECTED] = external constant [1 x i8]          ; <[1 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [39 x i8]         ; <[39 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [49 x i8]         ; <[49 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [40 x i8]         ; <[40 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [39 x i8]         ; <[39 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i8*         ; <i8**> [#uses=0]
[EMAIL PROTECTED] = external constant [47 x i8]         ; <[47 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [55 x i8]         ; <[55 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [21 x i8]         ; <[21 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [2 x i8]          ; <[2 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [20 x i8]         ; <[20 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [3 x [3 x i8]]            ; <[3 x [3 x 
i8]]*> [#uses=0]
[EMAIL PROTECTED] = external constant [3 x i8]          ; <[3 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [3 x [3 x i8]]            ; <[3 x [3 x 
i8]]*> [#uses=0]
[EMAIL PROTECTED] = external constant [5 x i8]          ; <[5 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [5 x i8]          ; <[5 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [5 x i8]          ; <[5 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [11 x i8]         ; <[11 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [20 x i8]         ; <[20 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i8*         ; <i8**> [#uses=0]
[EMAIL PROTECTED] = external global [4096 x i8]         ; <[4096 x i8]*> 
[#uses=0]
[EMAIL PROTECTED] = external constant [35 x i8]         ; <[35 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i8*         ; <i8**> [#uses=0]
[EMAIL PROTECTED] = external global i8*         ; <i8**> [#uses=0]
[EMAIL PROTECTED] = external constant [14 x i8]         ; <[14 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [5 x i8]          ; <[5 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i8*         ; <i8**> [#uses=0]
[EMAIL PROTECTED] = external global i8*         ; <i8**> [#uses=0]
[EMAIL PROTECTED] = external global i8*         ; <i8**> [#uses=0]
[EMAIL PROTECTED] = external global i8*         ; <i8**> [#uses=0]
[EMAIL PROTECTED] = external constant [5 x i8]          ; <[5 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [5 x i8]          ; <[5 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [14 x i8]         ; <[14 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [14 x i8]         ; <[14 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external global i1          ; <i1*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external global i32         ; <i32*> [#uses=0]
[EMAIL PROTECTED] = external constant [40 x i8]         ; <[40 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [31 x i8]         ; <[31 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [5 x i8]          ; <[5 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [5 x i8]          ; <[5 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [5 x i8]          ; <[5 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [49 x i8]         ; <[49 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [3 x i8]          ; <[3 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [18 x i8]         ; <[18 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [42 x i8]         ; <[42 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [18 x i8]         ; <[18 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [24 x i8]         ; <[24 x i8]*> [#uses=0]
[EMAIL PROTECTED] = external constant [43 x i8]         ; <[43 x i8]*> [#uses=0]
+
+declare void @Initialize_Buffer()
+
+declare void @Fill_Buffer()
+
+declare i32 @read(...)
+
+declare i32 @Get_Byte()
+
+declare i32 @Get_Word()
+
+declare i32 @Show_Bits(i32)
+
+declare i32 @Get_Bits1()
+
+declare void @Flush_Buffer(i32)
+
+declare void @Next_Packet()
+
+declare i32 @Get_Bits(i32)
+
+declare void @Decode_MPEG1_Intra_Block(i32, i32*)
+
+declare i32 @Get_Luma_DC_dct_diff()
+
+declare i32 @Get_Chroma_DC_dct_diff()
+
+declare i32 @puts(i8*)
+
+declare i32 @fwrite(i8*, i32, i32, i8*)
+
+declare void @Decode_MPEG1_Non_Intra_Block(i32)
+
+declare void @Decode_MPEG2_Intra_Block(i32, i32*)
+
+declare void @Decode_MPEG2_Non_Intra_Block(i32)
+
+declare i32 @Get_Hdr()
+
+declare i32 @Get_Bits32()
+
+declare i32 @fprintf(%struct.FILE*, i8*, ...)
+
+declare void @next_start_code()
+
+declare fastcc void @sequence_header()
+
+define internal fastcc void @group_of_pictures_header() {
+entry:
+       ret void
+}
+
+define internal fastcc void @picture_header() {
+entry:
+       unreachable
+}
+
+declare i32 @slice_header()
+
+declare fastcc void @extension_and_user_data()
+
+declare void @Flush_Buffer32()
+
+declare fastcc void @sequence_extension()
+
+declare fastcc void @sequence_display_extension()
+
+declare fastcc void @quant_matrix_extension()
+
+declare fastcc void @sequence_scalable_extension()
+
+declare void @Error(i8*)
+
+declare fastcc void @picture_display_extension()
+
+declare fastcc void @picture_coding_extension()
+
+declare fastcc void @picture_spatial_scalable_extension()
+
+declare fastcc void @picture_temporal_scalable_extension()
+
+declare fastcc void @extra_bit_information()
+
+declare void @marker_bit(i8*)
+
+declare fastcc void @user_data()
+
+declare fastcc void @copyright_extension()
+
+declare i32 @printf(i8*, ...)
+
+declare fastcc void @Update_Temporal_Reference_Tacking_Data()
+
+define void @Decode_Picture(i32 %bitstream_framenum, i32 %sequence_framenum) {
+entry:
+       %tmp16 = icmp eq i32 0, 0               ; <i1> [#uses=1]
+       br i1 %tmp16, label %bb43, label %bb22
+
+bb22:          ; preds = %entry
+       ret void
+
+bb43:          ; preds = %entry
+       call fastcc void @picture_data( )
+       ret void
+}
+
+declare void @Substitute_Frame_Buffer(i32, i32)
+
+define void @Spatial_Prediction() {
+entry:
+       ret void
+}
+
+define internal fastcc void @picture_data() {
+entry:
+       %tmp4 = icmp eq i32 0, 3                ; <i1> [#uses=1]
+       br i1 %tmp4, label %bb8, label %bb
+
+bb:            ; preds = %entry
+       ret void
+
+bb8:           ; preds = %entry
+       %tmp11 = call fastcc i32 @slice( i32 0 )                ; <i32> 
[#uses=0]
+       ret void
+}
+
+define internal fastcc i32 @slice(i32 %MBAmax) {
+entry:
+       %tmp6 = icmp eq i32 0, 1                ; <i1> [#uses=1]
+       br i1 %tmp6, label %bb9, label %bb231
+
+bb9:           ; preds = %entry
+       %tmp11 = icmp eq i32 0, 0               ; <i1> [#uses=1]
+       br i1 %tmp11, label %bb27, label %bb17
+
+bb17:          ; preds = %bb9
+       ret i32 0
+
+bb27:          ; preds = %bb9
+       %tmp31 = icmp slt i32 0, %MBAmax                ; <i1> [#uses=1]
+       br i1 %tmp31, label %bb110, label %bb231
+
+resync:                ; preds = %bb139
+       ret i32 0
+
+bb110:         ; preds = %bb27
+       %tmp113 = icmp slt i32 0, %MBAmax               ; <i1> [#uses=1]
+       br i1 %tmp113, label %bb131, label %bb119
+
+bb119:         ; preds = %bb110
+       ret i32 0
+
+bb131:         ; preds = %bb110
+       %tmp133 = icmp eq i32 0, 1              ; <i1> [#uses=1]
+       br i1 %tmp133, label %bb139, label %bb166
+
+bb139:         ; preds = %bb131
+       %tmp144 = call fastcc i32 @decode_macroblock( i32* null, i32* null, 
i32* null, i32* null, i32* null, [2 x [2 x i32]]* null, i32* null, [2 x i32]* 
null, i32* null )             ; <i32> [#uses=1]
+       switch i32 %tmp144, label %bb166 [
+                i32 -1, label %bb231
+                i32 0, label %resync
+       ]
+
+bb166:         ; preds = %bb139, %bb131
+       ret i32 0
+
+bb231:         ; preds = %bb139, %bb27, %entry
+       ret i32 0
+}
+
+declare i32 @Get_macroblock_address_increment()
+
+declare fastcc void @macroblock_modes(i32*, i32*, i32*, i32*, i32*, i32*, 
i32*, i32*, i32*)
+
+declare i32 @Get_macroblock_type()
+
+declare fastcc void @Add_Block(i32, i32, i32, i32, i32)
+
+declare fastcc void @Decode_SNR_Macroblock(i32*, i32*, i32, i32, i32*)
+
+declare i32 @Get_coded_block_pattern()
+
+declare fastcc void @Clear_Block(i32)
+
+declare fastcc void @Sum_Block(i32)
+
+declare fastcc void @Saturate(i16*)
+
+declare fastcc void @Update_Picture_Buffers()
+
+declare void @Output_Last_Frame_of_Sequence(i32)
+
+declare void @Write_Frame(i8**, i32)
+
+declare fastcc void @frame_reorder(i32, i32)
+
+declare fastcc void @motion_compensation(i32, i32, i32, [2 x [2 x i32]]*, [2 x 
i32]*, i32*, i32, i32)
+
+declare void @form_predictions(i32, i32, i32, i32, [2 x [2 x i32]]*, [2 x 
i32]*, i32*, i32)
+
+declare void @Reference_IDCT(i16*)
+
+declare void @Fast_IDCT(i16*)
+
+declare fastcc void @skipped_macroblock(i32*, [2 x [2 x i32]]*, i32*, [2 x 
i32]*, i32*, i32*)
+
+declare fastcc i32 @start_of_slice(i32*, i32*, i32*, [2 x [2 x i32]]*)
+
+define internal fastcc i32 @decode_macroblock(i32* %macroblock_type, i32* 
%stwtype, i32* %stwclass, i32* %motion_type, i32* %dct_type, [2 x [2 x i32]]* 
%PMV, i32* %dc_dct_pred, [2 x i32]* %motion_vertical_field_select, i32* 
%dmvector) {
+entry:
+       %tmp3 = icmp eq i32 0, 1                ; <i1> [#uses=1]
+       br i1 %tmp3, label %bb, label %bb15
+
+bb:            ; preds = %entry
+       %tmp7 = icmp slt i32 0, 3               ; <i1> [#uses=1]
+       br i1 %tmp7, label %bb13, label %bb14
+
+bb13:          ; preds = %bb
+       br label %bb15
+
+bb14:          ; preds = %bb
+       ret i32 0
+
+bb15:          ; preds = %bb13, %entry
+       %tmp21 = load i32* @Fault_Flag, align 4         ; <i32> [#uses=1]
+       %tmp22 = icmp eq i32 %tmp21, 0          ; <i1> [#uses=1]
+       br i1 %tmp22, label %bb29, label %bb630
+
+bb29:          ; preds = %bb15
+       %tmp33 = icmp eq i32 0, 0               ; <i1> [#uses=1]
+       br i1 %tmp33, label %bb91, label %bb39
+
+bb39:          ; preds = %bb29
+       ret i32 0
+
+bb91:          ; preds = %bb29
+       %tmp94 = and i32 0, 8           ; <i32> [#uses=0]
+       %tmp121 = load %struct.layer_data** @ld, align 4                ; 
<%struct.layer_data*> [#uses=0]
+       %tmp123 = load i32* null                ; <i32> [#uses=1]
+       %tmp124 = icmp eq i32 %tmp123, 0                ; <i1> [#uses=1]
+       br i1 %tmp124, label %bb146, label %bb130
+
+bb130:         ; preds = %bb91
+       call void @motion_vectors( [2 x [2 x i32]]* %PMV, i32* %dmvector, [2 x 
i32]* %motion_vertical_field_select, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, 
i32 0 )
+       br label %bb157
+
+bb146:         ; preds = %bb91
+       br label %bb157
+
+bb157:         ; preds = %bb146, %bb130
+       %tmp159 = icmp eq i32 0, 0              ; <i1> [#uses=1]
+       br i1 %tmp159, label %bb166, label %bb630
+
+bb166:         ; preds = %bb157
+       %tmp180 = icmp eq i32 0, 0              ; <i1> [#uses=1]
+       br i1 %tmp180, label %bb201, label %bb186
+
+bb186:         ; preds = %bb166
+       br label %bb212
+
+bb201:         ; preds = %bb166
+       %tmp205 = load i32* @backward_f_code, align 4           ; <i32> 
[#uses=0]
+       br label %bb212
+
+bb212:         ; preds = %bb201, %bb186
+       %tmp214 = icmp eq i32 0, 0              ; <i1> [#uses=1]
+       br i1 %tmp214, label %bb221, label %bb630
+
+bb221:         ; preds = %bb212
+       %tmp22422511 = and i32 0, 1             ; <i32> [#uses=1]
+       %toBool226 = icmp eq i32 %tmp22422511, 0                ; <i1> [#uses=1]
+       br i1 %toBool226, label %bb239, label %bb230
+
+bb230:         ; preds = %bb221
+       ret i32 0
+
+bb239:         ; preds = %bb221
+       %tmp241 = load i32* getelementptr (%struct.layer_data* @base, i32 0, 
i32 17), align 4           ; <i32> [#uses=0]
+       %tmp262 = icmp eq i32 0, 0              ; <i1> [#uses=1]
+       br i1 %tmp262, label %bb296, label %bb268
+
+bb268:         ; preds = %bb239
+       %tmp270 = load i32* @chroma_format, align 4             ; <i32> 
[#uses=1]
+       %tmp271 = icmp eq i32 %tmp270, 2                ; <i1> [#uses=1]
+       br i1 %tmp271, label %bb277, label %bb282
+
+bb277:         ; preds = %bb268
+       br label %bb312
+
+bb282:         ; preds = %bb268
+       %tmp283 = load i32* @chroma_format, align 4             ; <i32> 
[#uses=0]
+       br label %bb312
+
+bb296:         ; preds = %bb239
+       %tmp298 = load i32* %macroblock_type            ; <i32> [#uses=1]
+       %tmp2993009 = and i32 %tmp298, 1                ; <i32> [#uses=1]
+       %toBool301 = icmp eq i32 %tmp2993009, 0         ; <i1> [#uses=1]
+       br i1 %toBool301, label %bb312, label %bb305
+
+bb305:         ; preds = %bb296
+       %tmp306 = load i32* @block_count, align 4               ; <i32> 
[#uses=0]
+       %tmp308 = add i32 0, -1         ; <i32> [#uses=0]
+       br label %bb312
+
+bb312:         ; preds = %bb305, %bb296, %bb282, %bb277
+       %tmp313 = load i32* @Fault_Flag, align 4                ; <i32> 
[#uses=1]
+       %tmp314 = icmp eq i32 %tmp313, 0                ; <i1> [#uses=1]
+       br i1 %tmp314, label %bb398, label %bb630
+
+bb346:         ; preds = %cond_true404
+       %toBool351 = icmp eq i32 0, 0           ; <i1> [#uses=1]
+       %tmp359 = icmp ne i32 0, 0              ; <i1> [#uses=2]
+       br i1 %toBool351, label %bb372, label %bb355
+
+bb355:         ; preds = %bb346
+       br i1 %tmp359, label %bb365, label %bb368
+
+bb365:         ; preds = %bb355
+       br label %bb386
+
+bb368:         ; preds = %bb355
+       call void @Decode_MPEG1_Intra_Block( i32 0, i32* %dc_dct_pred )
+       br label %bb386
+
+bb372:         ; preds = %bb346
+       br i1 %tmp359, label %bb382, label %bb384
+
+bb382:         ; preds = %bb372
+       br label %bb386
+
+bb384:         ; preds = %bb372
+       call void @Decode_MPEG1_Non_Intra_Block( i32 0 )
+       br label %bb386
+
+bb386:         ; preds = %bb384, %bb382, %bb368, %bb365
+       %tmp388 = icmp eq i32 0, 0              ; <i1> [#uses=1]
+       br i1 %tmp388, label %bb395, label %bb630
+
+bb395:         ; preds = %cond_true404, %bb386
+       %tmp397 = add i32 0, 1          ; <i32> [#uses=0]
+       ret i32 0
+
+bb398:         ; preds = %bb312
+       %tmp401 = icmp slt i32 0, 0             ; <i1> [#uses=1]
+       br i1 %tmp401, label %cond_true404, label %bb407
+
+cond_true404:          ; preds = %bb398
+       %tmp340341514 = and i32 0, 0            ; <i32> [#uses=1]
+       %toBool342 = icmp eq i32 %tmp340341514, 0               ; <i1> [#uses=1]
+       br i1 %toBool342, label %bb395, label %bb346
+
+bb407:         ; preds = %bb398
+       %tmp408 = load i32* @picture_coding_type, align 4               ; <i32> 
[#uses=0]
+       %tmp419 = load i32* %macroblock_type            ; <i32> [#uses=1]
+       %tmp420 = and i32 %tmp419, 1            ; <i32> [#uses=1]
+       %tmp421 = icmp eq i32 %tmp420, 0                ; <i1> [#uses=0]
+       %tmp442 = load i32* %macroblock_type            ; <i32> [#uses=1]
+       %tmp4434447 = and i32 %tmp442, 1                ; <i32> [#uses=0]
+       %tmp450 = load i32* @concealment_motion_vectors, align 4                
; <i32> [#uses=0]
+       %tmp572 = icmp eq i32 0, 4              ; <i1> [#uses=1]
+       br i1 %tmp572, label %bb578, label %bb630
+
+bb578:         ; preds = %bb407
+       %tmp613 = getelementptr [2 x [2 x i32]]* %PMV, i32 1, i32 1, i32 1      
        ; <i32*> [#uses=0]
+       %tmp618 = getelementptr [2 x [2 x i32]]* %PMV, i32 1, i32 1, i32 0      
        ; <i32*> [#uses=0]
+       %tmp623 = getelementptr [2 x [2 x i32]]* %PMV, i32 0, i32 1, i32 1      
        ; <i32*> [#uses=0]
+       %tmp628 = getelementptr [2 x [2 x i32]]* %PMV, i32 0, i32 1, i32 0      
        ; <i32*> [#uses=0]
+       ret i32 1
+
+bb630:         ; preds = %bb407, %bb386, %bb312, %bb212, %bb157, %bb15
+       %tmp.0 = phi i32 [ 0, %bb15 ], [ 0, %bb157 ], [ 0, %bb212 ], [ 0, 
%bb312 ], [ 0, %bb386 ], [ 1, %bb407 ]                ; <i32> [#uses=1]
+       ret i32 %tmp.0
+}
+
+declare void @motion_vectors([2 x [2 x i32]]*, i32*, [2 x i32]*, i32, i32, 
i32, i32, i32, i32, i32)
+
+declare void @motion_vector(i32*, i32*, i32, i32, i32, i32, i32)
+
+declare fastcc i32 @Get_I_macroblock_type()
+
+declare fastcc i32 @Get_P_macroblock_type()
+
+declare fastcc i32 @Get_B_macroblock_type()
+
+declare fastcc void @Get_D_macroblock_type()
+
+declare fastcc i32 @Get_I_Spatial_macroblock_type()
+
+declare fastcc i32 @Get_P_Spatial_macroblock_type()
+
+declare fastcc i32 @Get_B_Spatial_macroblock_type()
+
+declare fastcc i32 @Get_SNR_macroblock_type()
+
+declare i32 @Get_motion_code()
+
+declare i32 @Get_dmvector()
+
+declare fastcc void @idctrow(i16*)
+
+declare fastcc void @idctcol(i16*)
+
+declare void @Initialize_Fast_IDCT()
+
+declare void @Initialize_Reference_IDCT()
+
+declare double @cos(double)
+
+declare double @floor(double)
+
+declare fastcc void @decode_motion_vector(i32*, i32, i32, i32, i32)
+
+declare void @Dual_Prime_Arithmetic([2 x i32]*, i32*, i32, i32)
+
+declare i32 @main(i32, i8**)
+
+declare i32 @open(i8*, i32, ...)
+
+declare void @exit(i32)
+
+declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
+
+declare i32 @lseek(i32, i32, i32)
+
+declare i32 @sprintf(i8*, i8*, ...)
+
+declare i32 @close(i32)
+
+declare fastcc void @Initialize_Decoder()
+
+declare fastcc void @Initialize_Sequence()
+
+declare void @Print_Bits(i32, i32, i32)
+
+declare fastcc void @Process_Options(i32, i8**)
+
+declare i32 @toupper(i32)
+
+declare i32 @atoi(i8*)
+
+declare fastcc i32 @Headers()
+
+declare fastcc void @Decode_Bitstream()
+
+declare fastcc void @Deinitialize_Sequence()
+
+declare fastcc i32 @video_sequence(i32*)
+
+declare void @Clear_Options()
+
+declare fastcc void @form_prediction(i8**, i32, i32, i32, i32, i32, i32, i32, 
i32, i32, i32)
+
+declare fastcc void @form_component_prediction(i8*, i8*, i32, i32, i32, i32, 
i32, i32, i32, i32, i32)
+
+declare fastcc void @Read_Lower_Layer_Component_Framewise(i32, i32, i32)
+
+declare i8* @strcat(i8*, i8*)
+
+declare %struct.FILE* @fopen(i8*, i8*)
+
+declare i32 @_IO_getc(%struct.FILE*)
+
+declare i32 @fclose(%struct.FILE*)
+
+declare fastcc void @Read_Lower_Layer_Component_Fieldwise(i32, i32, i32)
+
+declare fastcc void @Make_Spatial_Prediction_Frame(i32, i32, i8*, i8*, i16*, 
i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32)
+
+declare fastcc void @Deinterlace(i8*, i8*, i32, i32, i32, i32)
+
+declare fastcc void @Subsample_Vertical(i8*, i16*, i32, i32, i32, i32, i32, 
i32, i32)
+
+declare fastcc void @Subsample_Horizontal(i16*, i8*, i32, i32, i32, i32, i32, 
i32, i32)
+
+declare fastcc void @store_one(i8*, i8**, i32, i32, i32)
+
+declare fastcc void @store_yuv(i8*, i8**, i32, i32, i32)
+
+declare fastcc void @store_yuv1(i8*, i8*, i32, i32, i32, i32)
+
+declare i32 @write(...)
+
+declare fastcc void @store_sif(i8*, i8**, i32, i32, i32)
+
+declare fastcc void @store_ppm_tga(i8*, i8**, i32, i32, i32, i32)
+
+declare fastcc void @putbyte(i32)
+
+declare fastcc void @putword(i32)
+
+declare fastcc void @conv422to444(i8*, i8*)
+
+declare fastcc void @conv420to422(i8*, i8*)
+
+declare fastcc void @Read_Frame(i8*, i8**, i32)
+
+declare fastcc i32 @Read_Components(i8*, i32)
+
+declare fastcc void @Read_Component(i8*, i8*, i32, i32)
+
+declare fastcc i32 @Extract_Components(i8*, i32)
+
+declare i32 @fseek(%struct.FILE*, i32, i32)
+
+declare i32 @fread(i8*, i32, i32, %struct.FILE*)
+
+declare fastcc void @Copy_Frame(i8*, i8*, i32, i32, i32, i32)
+
+declare i32 @Get_Long()


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

Reply via email to