static void ForIdUpperBound ARGS((tTree slice, ptree loops, int m, bool * yyP6, ExpNormRecord * yyP5));
static void ForIdLowerBound ARGS((tTree slice, ptree loops, int m, bool * yyP8, ExpNormRecord * yyP7));
static void ExpUpperBound ARGS((ExpNormRecord e, ptree loops, int n, int ConstLoops, bool * yyP10, ExpNormRecord * yyP9));
static void ExpLowerBound ARGS((ExpNormRecord e, ptree loops, int n, int ConstLoops, bool * yyP12, ExpNormRecord * yyP11));
static bool ExpDifferent ARGS((ExpNormRecord e1, ptree loops1, int n1, ExpNormRecord e2, ptree loops2, int n2, int ConstLoops));
static void DiffUppBound ARGS((ExpNormRecord e1, ptree loops1, int n1, ExpNormRecord e2, ptree loops2, int n2, int CommonLoops, int ConstLoops, bool * yyP14, int * yyP13));
static void DiffLowBound ARGS((ExpNormRecord e1, ptree loops1, int n1, ExpNormRecord e2, ptree loops2, int n2, int CommonLoops, int ConstLoops, bool * yyP16, int * yyP15));
static void DeltaCheck ARGS((ExpNormRecord e, ptree loops, int n, bool flow, int low, bool fup, int up, pPredVector p));
static void ExpCompare ARGS((ExpNormRecord e1, ptree loops1, int n1, ExpNormRecord e2, ptree loops2, int n2, int CommonLoops, int ConstLoops, pPredVector p));
static void IndexCompare ARGS((tTree e1, ptree loops1, int n1, tTree e2, ptree loops2, int n2, int CommonLoops, int ConstLoops, pPredVector p));
void Dependences ARGS((tTree e1, ptree loops1, int n1, tTree e2, ptree loops2, int n2, int CommonLoops, int ConstLoops, pPredVector p));
static void ExpNormal
# if defined __STDC__ | defined __cplusplus
(register tTree e, ptree loops, register int n, register bool * yyP2, ExpNormRecord * yyP1)
# else
(e, loops, n, yyP2, yyP1)
register tTree e;
ptree loops;
register int n;
register bool * yyP2;
ExpNormRecord * yyP1;
# endif
{
# line 75 "Dependences.puma"
int i;
# line 85 "Dependences.puma"
{
int c;
bool found;
ExpNormRecord val;
{
# line 86 "Dependences.puma"
# line 87 "Dependences.puma"
# line 88 "Dependences.puma"
# line 89 "Dependences.puma"
GetIntConstValue (e, & found, & c);
# line 90 "Dependences.puma"
if (! (found)) goto yyL1;
{
# line 91 "Dependences.puma"
for (i=1;i<=n;i++) val.vals[i] = 0;
val.vals[0] = c;
}
}
* yyP2 = found;
* yyP1 = val;
return;
}
yyL1:;
if (e->Kind == kOP_EXP) {
if (e->OP_EXP.EXP_OP->Kind == kOP_PLUS) {
# line 102 "Dependences.puma"
{
bool yyV1;
ExpNormRecord yyV2;
bool yyV3;
ExpNormRecord yyV4;
{
# line 103 "Dependences.puma"
ExpNormal (e->OP_EXP.OPND1, loops, n, & yyV1, & yyV2);
# line 104 "Dependences.puma"
ExpNormal (e->OP_EXP.OPND2, loops, n, & yyV3, & yyV4);
# line 105 "Dependences.puma"
if (yyV1 && yyV3)
{ for (i=0; i<=n; i++)
yyV2.vals[i] += yyV4.vals[i];
}
}
* yyP2 = yyV1 && yyV3;
* yyP1 = yyV2;
return;
}
}
if (e->OP_EXP.EXP_OP->Kind == kOP_MINUS) {
# line 112 "Dependences.puma"
{
bool yyV1;
ExpNormRecord yyV2;
bool yyV3;
ExpNormRecord yyV4;
{
# line 113 "Dependences.puma"
ExpNormal (e->OP_EXP.OPND1, loops, n, & yyV1, & yyV2);
# line 114 "Dependences.puma"
ExpNormal (e->OP_EXP.OPND2, loops, n, & yyV3, & yyV4);