home *** CD-ROM | disk | FTP | other *** search
- # include "MoveCont.h"
- # include "yyMContr.w"
- # include <stdio.h>
- # if defined __STDC__ | defined __cplusplus
- # include <stdlib.h>
- # else
- extern void exit ();
- # endif
- # include "Tree.h"
- # include "Definiti.h"
-
- # ifndef NULL
- # define NULL 0L
- # endif
- # ifndef false
- # define false 0
- # endif
- # ifndef true
- # define true 1
- # endif
-
- # ifdef yyInline
- # define yyALLOC(tree, free, max, alloc, nodesize, make, ptr, kind) \
- if ((ptr = (tree) free) >= (tree) max) ptr = alloc (); \
- free += nodesize [kind]; \
- ptr->yyHead.yyMark = 0; \
- ptr->Kind = kind;
- # else
- # define yyALLOC(tree, free, max, alloc, nodesize, make, ptr, kind) ptr = make (kind);
- # endif
-
- # define yyWrite(s) (void) fputs (s, yyf)
- # define yyWriteNl (void) fputc ('\n', yyf)
-
- # line 19 "MoveControl.puma"
-
- # include <stdio.h>
- # include "Idents.h"
- # include "StringMe.h"
- # include "Types.h"
- # include "Shapes.h"
-
-
- static FILE * yyf = stdout;
-
- static void yyAbort
- # ifdef __cplusplus
- (char * yyFunction)
- # else
- (yyFunction) char * yyFunction;
- # endif
- {
- (void) fprintf (stderr, "Error: module MoveControl, routine %s failed\n", yyFunction);
- exit (1);
- }
-
- static int DistributedVarObject ARGS((tDefinitions o));
- int DistributedVariables ARGS((tTree t));
- int ArrayExpressions ARGS((tTree t));
- static int CountVarMovements ARGS((tTree var, tTree var1));
- int CountMovements ARGS((tTree var, tTree exp));
- static bool Aligned ARGS((tTree v1, tTree v2));
- static void LastDimension ARGS((tTree v, tTree * yyP2, tTree * yyP1));
- static void AlignedVarArea ARGS((tTree v1, tTree v2, bool * yyP5, int * yyP4, int * yyP3));
- static void LastDimSpec ARGS((tTree v, tTree * yyP9, tTree * yyP8, int * yyP7, int * yyP6));
- static bool AlignedVarAccesses ARGS((tTree var1, tTree var2));
-
- static int DistributedVarObject
- # if defined __STDC__ | defined __cplusplus
- (register tDefinitions o)
- # else
- (o)
- register tDefinitions o;
- # endif
- {
- if (o->Kind == kVarObject) {
- if (o->VarObject.decl->Kind == kVAR_DECL) {
- if (o->VarObject.decl->VAR_DECL.VAL->Kind == kARRAY_TYPE) {
- if (o->VarObject.Dist->Kind == kHostDistribution) {
- # line 37 "MoveControl.puma"
- return 1;
-
- }
- if (o->VarObject.Dist->Kind == kNodeDistribution) {
- # line 42 "MoveControl.puma"
- return 1;
-
- }
- }
- }
- }
- # line 47 "MoveControl.puma"
- return 0;
-
- }
-
- int DistributedVariables
- # if defined __STDC__ | defined __cplusplus
- (register tTree t)
- # else
- (t)
- register tTree t;
- # endif
- {
- # line 53 "MoveControl.puma"
-
- char string[100];
-
-
- switch (t->Kind) {
- case kVAR_OBJ:
- # line 57 "MoveControl.puma"
- {
- # line 58 "MoveControl.puma"
- if (t->VAR_OBJ.Object == NoObject)
- { GetString (t->VAR_OBJ.Ident, string);
- printf ("DistributedVariables: Object for %s not found\n", string);
- exit (-1);
- }
-
- }
- return DistributedVarObject (t->VAR_OBJ.Object);
-
- case kUSED_VAR:
- # line 68 "MoveControl.puma"
- return DistributedVariables (t->USED_VAR.VARNAME);
-
- case kLOOP_VAR:
- # line 72 "MoveControl.puma"
- return 0;
-
- case kINDEXED_VAR:
- # line 76 "MoveControl.puma"
- return DistributedVariables (t->INDEXED_VAR.IND_VAR) + DistributedVariables (t->INDEXED_VAR.IND_EXPS);
-
- case kADDR:
- # line 80 "MoveControl.puma"
- return DistributedVariables (t->ADDR.E);
-
- case kDUMMY_EXP:
- # line 84 "MoveControl.puma"
- return 0;
-
- case kCONST_EXP:
- # line 88 "MoveControl.puma"
- return 0;
-
- case kARRAY_EXP:
- # line 92 "MoveControl.puma"
- return DistributedVariables (t->ARRAY_EXP.ELEMENTS);
-
- case kSLICE_EXP:
- # line 96 "MoveControl.puma"
- return DistributedVariables (t->SLICE_EXP.START) + DistributedVariables (t->SLICE_EXP.STOP) + DistributedVariables (t->SLICE_EXP.INC);
-
- case kOP_EXP:
- # line 101 "MoveControl.puma"
- return DistributedVariables (t->OP_EXP.OPND1) + DistributedVariables (t->OP_EXP.OPND2);
-
- case kOP1_EXP:
- # line 105 "MoveControl.puma"
- return DistributedVariables (t->OP1_EXP.OPND);
-
- case kVAR_EXP:
- # line 109 "MoveControl.puma"
- return DistributedVariables (t->VAR_EXP.V);
-
- case kFUNC_CALL_EXP:
- # line 113 "MoveControl.puma"
- return DistributedVariables (t->FUNC_CALL_EXP.FUNC_PARAMS);
-
- case kDO_EXP:
- # line 117 "MoveControl.puma"
- return DistributedVariables (t->DO_EXP.RANGE) + DistributedVariables (t->DO_EXP.BODY);
-
- case kBTE_LIST:
- # line 121 "MoveControl.puma"
- return DistributedVariables (t->BTE_LIST.Elem) + DistributedVariables (t->BTE_LIST.Next);
-
- case kBTE_EMPTY:
- # line 125 "MoveControl.puma"
- return 0;
-
- case kBTP_LIST:
- # line 129 "MoveControl.puma"
- return DistributedVariables (t->BTP_LIST.Elem) + DistributedVariables (t->BTP_LIST.Next);
-
- case kBTP_EMPTY:
- # line 133 "MoveControl.puma"
- return 0;
-
- case kVAR_PARAM:
- # line 137 "MoveControl.puma"
- return DistributedVariables (t->VAR_PARAM.V);
-
- }
-
- # line 141 "MoveControl.puma"
- {
- # line 142 "MoveControl.puma"
- printf ("Distributed Variables failed\n");
- # line 143 "MoveControl.puma"
- FileUnparse (stdout, t);
- }
- return 0;
-
- }
-
- int ArrayExpressions
- # if defined __STDC__ | defined __cplusplus
- (register tTree t)
- # else
- (t)
- register tTree t;
- # endif
- {
- # line 155 "MoveControl.puma"
-
- int h;
- char string[100];
-
-
- switch (t->Kind) {
- case kVAR_OBJ:
- # line 160 "MoveControl.puma"
- {
- # line 161 "MoveControl.puma"
- if (t->VAR_OBJ.Object == NoObject)
- { GetString (t->VAR_OBJ.Ident, string);
- printf ("ArrayExpressions: Object for %s not found\n", string);
- exit (-1);
- }
-
- }
- return DistributedVarObject (t->VAR_OBJ.Object);
-
- case kUSED_VAR:
- # line 170 "MoveControl.puma"
- return ArrayExpressions (t->USED_VAR.VARNAME);
-
- case kLOOP_VAR:
- # line 174 "MoveControl.puma"
- return 0;
-
- case kINDEXED_VAR:
- # line 178 "MoveControl.puma"
- {
- # line 180 "MoveControl.puma"
- h = TreeListLength (t->INDEXED_VAR.IND_EXPS);
- if (h>0)
- h = ArrayExpressions (t->INDEXED_VAR.IND_EXPS);
- else
- h = 1;
-
- }
- return h;
-
- case kADDR:
- # line 189 "MoveControl.puma"
- return ArrayExpressions (t->ADDR.E);
-
- case kDUMMY_EXP:
- # line 193 "MoveControl.puma"
- return 0;
-
- case kCONST_EXP:
- # line 197 "MoveControl.puma"
- return 0;
-
- case kARRAY_EXP:
- # line 201 "MoveControl.puma"
- return 1 + ArrayExpressions (t->ARRAY_EXP.ELEMENTS);
-
- case kSLICE_EXP:
- # line 205 "MoveControl.puma"
- return ArrayExpressions (t->SLICE_EXP.START) + ArrayExpressions (t->SLICE_EXP.STOP) + ArrayExpressions (t->SLICE_EXP.INC) + 1;
-
- case kOP_EXP:
- # line 210 "MoveControl.puma"
- return ArrayExpressions (t->OP_EXP.OPND1) + ArrayExpressions (t->OP_EXP.OPND2);
-
- case kOP1_EXP:
- # line 214 "MoveControl.puma"
- return ArrayExpressions (t->OP1_EXP.OPND);
-
- case kVAR_EXP:
- # line 218 "MoveControl.puma"
- return ArrayExpressions (t->VAR_EXP.V);
-
- case kFUNC_CALL_EXP:
- # line 222 "MoveControl.puma"
- return ArrayExpressions (t->FUNC_CALL_EXP.FUNC_PARAMS);
-
- case kDO_EXP:
- # line 226 "MoveControl.puma"
- return ArrayExpressions (t->DO_EXP.RANGE) + ArrayExpressions (t->DO_EXP.BODY);
-
- case kBTE_LIST:
- # line 230 "MoveControl.puma"
- return ArrayExpressions (t->BTE_LIST.Elem) + ArrayExpressions (t->BTE_LIST.Next);
-
- case kBTE_EMPTY:
- # line 234 "MoveControl.puma"
- return 0;
-
- case kBTP_LIST:
- # line 238 "MoveControl.puma"
- return ArrayExpressions (t->BTP_LIST.Elem) + ArrayExpressions (t->BTP_LIST.Next);
-
- case kBTP_EMPTY:
- # line 242 "MoveControl.puma"
- return 0;
-
- case kVAR_PARAM:
- # line 246 "MoveControl.puma"
- return ArrayExpressions (t->VAR_PARAM.V);
-
- }
-
- # line 250 "MoveControl.puma"
- {
- # line 251 "MoveControl.puma"
- printf ("Array Expressions failed\n");
- # line 252 "MoveControl.puma"
- FileUnparse (stdout, t);
- }
- return 0;
-
- }
-
- static int CountVarMovements
- # if defined __STDC__ | defined __cplusplus
- (register tTree var, register tTree var1)
- # else
- (var, var1)
- register tTree var;
- register tTree var1;
- # endif
- {
- # line 265 "MoveControl.puma"
-
- int vdist, vdist1;
- int count;
-
- if (var1->Kind == kINDEXED_VAR) {
- # line 270 "MoveControl.puma"
- {
- # line 272 "MoveControl.puma"
- if (! ((TreeDistribution (var1->INDEXED_VAR.IND_VAR) == 0))) goto yyL1;
- {
- # line 273 "MoveControl.puma"
- count = CountMovements (var, var1->INDEXED_VAR.IND_EXPS);
- }
- }
- return count;
- yyL1:;
-
- }
- # line 277 "MoveControl.puma"
- {
- # line 278 "MoveControl.puma"
- vdist = TreeDistribution (var);
- vdist1 = TreeDistribution (var1);
- if (vdist1 == 0)
- {
- count = 0;
- }
- else if (vdist1 == -1)
- {
- if (vdist == -1)
- count = 0;
- else
- count = 1;
- }
- else if (vdist1 == 1)
- {
- if (vdist == 1)
- {
- if (AlignedVarAccesses (var,var1))
- count = 0;
- else
- count = 1;
- }
- else
- count = 1;
- }
- else {
- printf ("Mixed variable expression cannot be handled\n");
- FileUnparse (stdout, var1); printf ("\n");
- exit (-1);
- }
-
- }
- return count;
-
- }
-
- int CountMovements
- # if defined __STDC__ | defined __cplusplus
- (register tTree var, register tTree exp)
- # else
- (var, exp)
- register tTree var;
- register tTree exp;
- # endif
- {
- # line 320 "MoveControl.puma"
-
- int vdist, edist;
- int count;
-
-
- switch (exp->Kind) {
- case kADDR:
- # line 325 "MoveControl.puma"
- return CountMovements (var, exp->ADDR.E);
-
- case kDUMMY_EXP:
- # line 329 "MoveControl.puma"
- return 0;
-
- case kCONST_EXP:
- # line 333 "MoveControl.puma"
- return 0;
-
- case kARRAY_EXP:
- # line 337 "MoveControl.puma"
- return CountMovements (var, exp->ARRAY_EXP.ELEMENTS);
-
- case kSLICE_EXP:
- # line 341 "MoveControl.puma"
- return CountMovements (var, exp->SLICE_EXP.START) + CountMovements (var, exp->SLICE_EXP.STOP) + CountMovements (var, exp->SLICE_EXP.INC);
-
- case kOP_EXP:
- # line 346 "MoveControl.puma"
- return CountMovements (var, exp->OP_EXP.OPND1) + CountMovements (var, exp->OP_EXP.OPND2);
-
- case kOP1_EXP:
- # line 350 "MoveControl.puma"
- return CountMovements (var, exp->OP1_EXP.OPND);
-
- case kVAR_EXP:
- # line 354 "MoveControl.puma"
- return CountVarMovements (var, exp->VAR_EXP.V);
-
- case kFUNC_CALL_EXP:
- # line 358 "MoveControl.puma"
- {
- # line 359 "MoveControl.puma"
- if (IsIntrFunc (exp))
- {
- if (IntrFuncKind1 (exp->FUNC_CALL_EXP.FUNC_ID->PROC_OBJ.Ident))
- { count = CountMovements (var, exp->FUNC_CALL_EXP.FUNC_PARAMS); }
- else if (IntrFuncKind2 (exp->FUNC_CALL_EXP.FUNC_ID->PROC_OBJ.Ident))
- { count = CountMovements (var, exp->FUNC_CALL_EXP.FUNC_PARAMS); }
- else if (IntrFuncKindn (exp->FUNC_CALL_EXP.FUNC_ID->PROC_OBJ.Ident))
- { count = CountMovements (var, exp->FUNC_CALL_EXP.FUNC_PARAMS); }
- else if (exp->FUNC_CALL_EXP.FUNC_ID->PROC_OBJ.Ident == MakeIdent ("SPREAD",6))
- { count = CountMovements (var, exp->FUNC_CALL_EXP.FUNC_PARAMS); }
- else
- {
- count = 1 + CountMovements (var, exp->FUNC_CALL_EXP.FUNC_PARAMS); }
- }
- else
- {
- count = CountMovements (var, exp->FUNC_CALL_EXP.FUNC_PARAMS);
- }
-
- }
- return count;
-
- case kBTE_LIST:
- # line 379 "MoveControl.puma"
- return CountMovements (var, exp->BTE_LIST.Elem) + CountMovements (var, exp->BTE_LIST.Next);
-
- case kBTE_EMPTY:
- # line 383 "MoveControl.puma"
- return 0;
-
- case kBTP_LIST:
- # line 387 "MoveControl.puma"
- return CountMovements (var, exp->BTP_LIST.Elem) + CountMovements (var, exp->BTP_LIST.Next);
-
- case kBTP_EMPTY:
- # line 391 "MoveControl.puma"
- return 0;
-
- case kVAR_PARAM:
- if (exp->VAR_PARAM.V->Kind == kADDR) {
- # line 395 "MoveControl.puma"
- return CountMovements (var, exp->VAR_PARAM.V);
-
- }
- # line 399 "MoveControl.puma"
- return CountVarMovements (var, exp->VAR_PARAM.V);
-
- case kUSED_VAR:
- # line 403 "MoveControl.puma"
- return CountVarMovements (var, exp);
-
- case kINDEXED_VAR:
- # line 407 "MoveControl.puma"
- return CountVarMovements (var, exp);
-
- }
-
- # line 411 "MoveControl.puma"
- {
- # line 412 "MoveControl.puma"
- printf ("Counting Movements failed\n");
- # line 413 "MoveControl.puma"
- printf ("var : ");
- # line 413 "MoveControl.puma"
- FileUnparse (stdout, var);
- # line 413 "MoveControl.puma"
- printf ("\n");
- # line 414 "MoveControl.puma"
- WriteTree (stdout, var);
- # line 415 "MoveControl.puma"
- printf ("exp : ");
- # line 415 "MoveControl.puma"
- FileUnparse (stdout, exp);
- # line 415 "MoveControl.puma"
- printf ("\n");
- # line 416 "MoveControl.puma"
- WriteTree (stdout, exp);
- # line 417 "MoveControl.puma"
- exit (- 1);
- }
- return 0;
-
- }
-
- static bool Aligned
- # if defined __STDC__ | defined __cplusplus
- (register tTree v1, register tTree v2)
- # else
- (v1, v2)
- register tTree v1;
- register tTree v2;
- # endif
- {
- if (v1 == NoTree) return false;
- if (v2 == NoTree) return false;
- if (v1->Kind == kUSED_VAR) {
- if (v2->Kind == kUSED_VAR) {
- # line 442 "MoveControl.puma"
- {
- # line 444 "MoveControl.puma"
- if (! (v1->USED_VAR.VARNAME->VAR_OBJ.Ident == v2->USED_VAR.VARNAME->VAR_OBJ.Ident)) goto yyL1;
- }
- return true;
- yyL1:;
-
- # line 447 "MoveControl.puma"
- {
- tTree yyV1;
- tTree yyV2;
- tTree yyV3;
- tTree yyV4;
- {
- # line 450 "MoveControl.puma"
- LastDimension (v1, & yyV1, & yyV2);
- # line 456 "MoveControl.puma"
- LastDimension (v2, & yyV3, & yyV4);
- # line 462 "MoveControl.puma"
- if (! (EqualExpression (yyV1, yyV3) == true)) goto yyL2;
- {
- # line 463 "MoveControl.puma"
- if (! (EqualExpression (yyV2, yyV4) == true)) goto yyL2;
- }
- }
- return true;
- }
- yyL2:;
-
- }
- }
- return false;
- }
-
- static void LastDimension
- # if defined __STDC__ | defined __cplusplus
- (register tTree v, register tTree * yyP2, register tTree * yyP1)
- # else
- (v, yyP2, yyP1)
- register tTree v;
- register tTree * yyP2;
- register tTree * yyP1;
- # endif
- {
- if (v == NoTree) return;
- if (v->Kind == kUSED_VAR) {
- # line 468 "MoveControl.puma"
- {
- struct_shape s;
- tTree low;
- tTree up;
- {
- # line 470 "MoveControl.puma"
-
- # line 472 "MoveControl.puma"
-
- # line 473 "MoveControl.puma"
-
- # line 475 "MoveControl.puma"
- GetCurrentShape (v, &s);
- low = s.bounds[s.rank-1][0];
- up = s.bounds[s.rank-1][1];
-
- }
- * yyP2 = low;
- * yyP1 = up;
- return;
- }
-
- }
- ;
- }
-
- static void AlignedVarArea
- # if defined __STDC__ | defined __cplusplus
- (register tTree v1, register tTree v2, register bool * yyP5, register int * yyP4, register int * yyP3)
- # else
- (v1, v2, yyP5, yyP4, yyP3)
- register tTree v1;
- register tTree v2;
- register bool * yyP5;
- register int * yyP4;
- register int * yyP3;
- # endif
- {
- if (v1 == NoTree) return;
- if (v2 == NoTree) return;
- if (v1->Kind == kUSED_VAR) {
- if (v2->Kind == kUSED_VAR) {
- # line 493 "MoveControl.puma"
- {
- tTree yyV1;
- tTree yyV2;
- int yyV3;
- int yyV4;
- {
- # line 495 "MoveControl.puma"
- if (! (v1->USED_VAR.VARNAME->VAR_OBJ.Ident == v2->USED_VAR.VARNAME->VAR_OBJ.Ident)) goto yyL1;
- {
- # line 496 "MoveControl.puma"
- LastDimSpec (v1, & yyV1, & yyV2, & yyV3, & yyV4);
- }
- }
- * yyP5 = true;
- * yyP4 = - yyV3;
- * yyP3 = yyV4;
- return;
- }
- yyL1:;
-
- # line 500 "MoveControl.puma"
- {
- tTree yyV1;
- tTree yyV2;
- int yyV3;
- int yyV4;
- tTree yyV5;
- tTree yyV6;
- int yyV7;
- int yyV8;
- {
- # line 503 "MoveControl.puma"
- LastDimSpec (v1, & yyV1, & yyV2, & yyV3, & yyV4);
- # line 504 "MoveControl.puma"
- LastDimSpec (v2, & yyV5, & yyV6, & yyV7, & yyV8);
- # line 506 "MoveControl.puma"
- if (! (EqualExpression (yyV1, yyV5) == true)) goto yyL2;
- {
- # line 507 "MoveControl.puma"
- if (! (EqualExpression (yyV2, yyV6) == true)) goto yyL2;
- {
- # line 511 "MoveControl.puma"
- if (! ((yyV7 >= yyV3))) goto yyL2;
- {
- # line 512 "MoveControl.puma"
- if (! ((yyV8 >= yyV4))) goto yyL2;
- }
- }
- }
- }
- * yyP5 = true;
- * yyP4 = yyV3 - yyV7;
- * yyP3 = yyV8 - yyV4;
- return;
- }
- yyL2:;
-
- }
- }
- # line 515 "MoveControl.puma"
- * yyP5 = false;
- * yyP4 = 0;
- * yyP3 = 0;
- return;
-
- ;
- }
-
- static void LastDimSpec
- # if defined __STDC__ | defined __cplusplus
- (register tTree v, register tTree * yyP9, register tTree * yyP8, register int * yyP7, register int * yyP6)
- # else
- (v, yyP9, yyP8, yyP7, yyP6)
- register tTree v;
- register tTree * yyP9;
- register tTree * yyP8;
- register int * yyP7;
- register int * yyP6;
- # endif
- {
- if (v == NoTree) return;
- if (v->Kind == kUSED_VAR) {
- # line 538 "MoveControl.puma"
- {
- tTree yyV1;
- tTree yyV2;
- int yyV3;
- int yyV4;
- {
- # line 540 "MoveControl.puma"
- LastDimSpec (ArrayFormals (v->USED_VAR.VARNAME->VAR_OBJ.Object), & yyV1, & yyV2, & yyV3, & yyV4);
- }
- * yyP9 = yyV1;
- * yyP8 = yyV2;
- * yyP7 = yyV3;
- * yyP6 = yyV4;
- return;
- }
-
- }
- if (v->Kind == kTYPE_LIST) {
- if (v->TYPE_LIST.Elem->Kind == kDYNAMIC) {
- if (v->TYPE_LIST.Elem->DYNAMIC.Shape->Kind == kSLICE_EXP) {
- if (v->TYPE_LIST.Next->Kind == kTYPE_EMPTY) {
- # line 543 "MoveControl.puma"
- * yyP9 = v->TYPE_LIST.Elem->DYNAMIC.Shape->SLICE_EXP.START;
- * yyP8 = v->TYPE_LIST.Elem->DYNAMIC.Shape->SLICE_EXP.STOP;
- * yyP7 = v->TYPE_LIST.Elem->DYNAMIC.left_overlap;
- * yyP6 = v->TYPE_LIST.Elem->DYNAMIC.right_overlap;
- return;
-
- }
- }
- }
- if (v->TYPE_LIST.Elem->Kind == kINDEX_TYPE) {
- if (v->TYPE_LIST.Next->Kind == kTYPE_EMPTY) {
- # line 547 "MoveControl.puma"
- * yyP9 = v->TYPE_LIST.Elem->INDEX_TYPE.LOWER;
- * yyP8 = v->TYPE_LIST.Elem->INDEX_TYPE.UPPER;
- * yyP7 = v->TYPE_LIST.Elem->INDEX_TYPE.left_overlap;
- * yyP6 = v->TYPE_LIST.Elem->INDEX_TYPE.right_overlap;
- return;
-
- }
- }
- if (v->TYPE_LIST.Next->Kind == kTYPE_EMPTY) {
- # line 551 "MoveControl.puma"
- {
- # line 552 "MoveControl.puma"
- printf ("Illegal last index in LastDimSpec\n");
- # line 553 "MoveControl.puma"
- WriteTree (stdout, v);
- # line 554 "MoveControl.puma"
- kill_in_protocol ();
- }
- * yyP9 = NoTree;
- * yyP8 = NoTree;
- * yyP7 = 0;
- * yyP6 = 0;
- return;
-
- }
- # line 557 "MoveControl.puma"
- {
- tTree yyV1;
- tTree yyV2;
- int yyV3;
- int yyV4;
- {
- # line 559 "MoveControl.puma"
- LastDimSpec (v->TYPE_LIST.Next, & yyV1, & yyV2, & yyV3, & yyV4);
- }
- * yyP9 = yyV1;
- * yyP8 = yyV2;
- * yyP7 = yyV3;
- * yyP6 = yyV4;
- return;
- }
-
- }
- # line 562 "MoveControl.puma"
- {
- # line 564 "MoveControl.puma"
- printf ("Illegal Tree in LastDimSpec\n");
- # line 565 "MoveControl.puma"
- WriteTree (stdout, v);
- # line 566 "MoveControl.puma"
- kill_in_protocol ();
- }
- * yyP9 = NoTree;
- * yyP8 = NoTree;
- * yyP7 = 0;
- * yyP6 = 0;
- return;
-
- ;
- }
-
- static bool AlignedVarAccesses
- # if defined __STDC__ | defined __cplusplus
- (register tTree var1, register tTree var2)
- # else
- (var1, var2)
- register tTree var1;
- register tTree var2;
- # endif
- {
- if (var1 == NoTree) return false;
- if (var2 == NoTree) return false;
- if (var1->Kind == kUSED_VAR) {
- if (var2->Kind == kUSED_VAR) {
- # line 594 "MoveControl.puma"
- {
- bool yyV1;
- int yyV2;
- int yyV3;
- {
- # line 595 "MoveControl.puma"
- AlignedVarArea (var1, var2, & yyV1, & yyV2, & yyV3);
- # line 596 "MoveControl.puma"
- if (! ((yyV1 == true))) goto yyL1;
- }
- return true;
- }
- yyL1:;
-
- }
- if (var2->Kind == kINDEXED_VAR) {
- # line 599 "MoveControl.puma"
- {
- bool yyV1;
- int yyV2;
- int yyV3;
- {
- # line 600 "MoveControl.puma"
- AlignedVarArea (var1, var2->INDEXED_VAR.IND_VAR, & yyV1, & yyV2, & yyV3);
- # line 601 "MoveControl.puma"
- if (! ((yyV1 == true))) goto yyL2;
- }
- return true;
- }
- yyL2:;
-
- }
- }
- if (var1->Kind == kINDEXED_VAR) {
- if (var2->Kind == kUSED_VAR) {
- # line 604 "MoveControl.puma"
- {
- bool yyV1;
- int yyV2;
- int yyV3;
- {
- # line 605 "MoveControl.puma"
- AlignedVarArea (var1->INDEXED_VAR.IND_VAR, var2, & yyV1, & yyV2, & yyV3);
- # line 606 "MoveControl.puma"
- if (! ((yyV1 == true))) goto yyL3;
- }
- return true;
- }
- yyL3:;
-
- }
- if (var2->Kind == kINDEXED_VAR) {
- # line 609 "MoveControl.puma"
- {
- bool yyV1;
- int yyV2;
- int yyV3;
- bool found1;
- int val;
- {
- # line 613 "MoveControl.puma"
- AlignedVarArea (var1->INDEXED_VAR.IND_VAR, var2->INDEXED_VAR.IND_VAR, & yyV1, & yyV2, & yyV3);
- # line 615 "MoveControl.puma"
- if (! ((yyV1 == true))) goto yyL4;
- {
- # line 617 "MoveControl.puma"
-
- # line 618 "MoveControl.puma"
-
- # line 620 "MoveControl.puma"
- GetConstDifference (LastIndex (var2->INDEXED_VAR.IND_EXPS), LastIndex (var1->INDEXED_VAR.IND_EXPS), & found1, & val);
- # line 627 "MoveControl.puma"
- if (! ((found1 == true))) goto yyL4;
- {
- # line 628 "MoveControl.puma"
- if (! ((val >= yyV2))) goto yyL4;
- {
- # line 629 "MoveControl.puma"
- if (! ((val <= yyV3))) goto yyL4;
- }
- }
- }
- }
- return true;
- }
- yyL4:;
-
- }
- }
- return false;
- }
-
- void BeginMoveControl ()
- {
- }
-
- void CloseMoveControl ()
- {
- }