fixed and improved SAPFOR and FDVM
This commit is contained in:
@@ -12668,6 +12668,7 @@ int DistrArrayAssign(SgStatement *stmt)
|
||||
return(1);
|
||||
left_whole = !le->lhs();
|
||||
right_whole = !re->lhs();
|
||||
CANCEL_RTS2_MODE; // switch to basic RTS interface
|
||||
ChangeDistArrayRef(le->lhs()); //replacing dvm-array references in subscript list
|
||||
ChangeDistArrayRef(re->lhs());
|
||||
LINE_NUMBER_BEFORE(stmt,stmt);
|
||||
@@ -12709,13 +12710,15 @@ int DistrArrayAssign(SgStatement *stmt)
|
||||
doAssignStmtAfter(ArrayCopy(headr, from_init, from_init+rr, from_init+2*rr, headl, to_init, to_init+rl, to_init+2*rl, 0));
|
||||
if(dvm_ind)
|
||||
doCallAfter(DeleteObject_H(DVM000(dvm_ind)));
|
||||
SET_DVM(to_init);
|
||||
SET_DVM(to_init);
|
||||
RESUMPTION_RTS2_MODE; // return to RTS2 interface
|
||||
return(1);
|
||||
}
|
||||
|
||||
// assignment statement of kind: <dvm_array_section> = <scalar_expression>
|
||||
if(only_debug)
|
||||
return(1);
|
||||
CANCEL_RTS2_MODE; // switch to basic RTS interface
|
||||
if(INTERFACE_RTS2 && !isWholeArray(stmt->expr(0)))
|
||||
err("Illegal array statement in -Opl2 mode", 642, stmt);
|
||||
|
||||
@@ -12735,6 +12738,7 @@ int DistrArrayAssign(SgStatement *stmt)
|
||||
else
|
||||
doAssignStmtAfter(ArrayCopy(headr, to_init, to_init, to_init, headl, to_init, to_init+rl, to_init+2*rl, -1));
|
||||
SET_DVM(to_init);
|
||||
RESUMPTION_RTS2_MODE; // return to RTS2 interface
|
||||
return(1);
|
||||
}
|
||||
|
||||
@@ -12753,6 +12757,7 @@ int AssignDistrArray(SgStatement *stmt)
|
||||
// assignment statement of kind: <array_section> = <dvm_array_section>
|
||||
if(only_debug)
|
||||
return(1);
|
||||
CANCEL_RTS2_MODE; // switch to basic RTS interface
|
||||
left_whole = !le->lhs();
|
||||
right_whole = !re->lhs();
|
||||
|
||||
@@ -12781,8 +12786,10 @@ int AssignDistrArray(SgStatement *stmt)
|
||||
typer = ar->type()->baseType();
|
||||
rr = Rank(ar);
|
||||
headr = HeaderRef(ar);
|
||||
if(!headr) // if there is error of dvm-array specification, header is not created
|
||||
if(!headr) { // if there is error of dvm-array specification, header is not created
|
||||
RESUMPTION_RTS2_MODE; // return to RTS2 interface
|
||||
return(0);
|
||||
}
|
||||
if(!CompareTypes(typel,typer))
|
||||
err("Different types of left and right side",620,stmt);
|
||||
|
||||
@@ -12801,6 +12808,7 @@ int AssignDistrArray(SgStatement *stmt)
|
||||
doCallAfter(DeleteObject_H(DVM000(dvm_ind)));
|
||||
|
||||
SET_DVM(dvm_ind ? dvm_ind : to_init) ; //SET_DVM(to_init);
|
||||
RESUMPTION_RTS2_MODE; // return to RTS2 interface
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user