| 528 | // ExprFor |
| 529 | |
| 530 | virtual void preVisitForStack ( ExprFor * expr ) override { |
| 531 | Visitor::preVisitForStack(expr); |
| 532 | if ( inStruct ) return; |
| 533 | for ( auto & var : expr->iteratorVariables ) { |
| 534 | auto sz = var->type->getSizeOf(); |
| 535 | var->stackTop = allocateStack(sz); |
| 536 | if ( log ) { |
| 537 | logs << "\t" << var->stackTop << "\t" << sz |
| 538 | << "\tfor " << var->name << ", line " << var->at.line << "\n"; |
| 539 | } |
| 540 | } |
| 541 | /* |
| 542 | for ( auto & src : expr->sources ) { |
| 543 | if ( src->rtti_isMakeLocal() ) { |
| 544 | auto mkl = static_cast<ExprMakeLocal*>(src); |
| 545 | mkl->needTempSrc = true; |
| 546 | } |
| 547 | } |
| 548 | */ |
| 549 | } |
| 550 | // ExprLet |
| 551 | virtual void preVisitLet ( ExprLet * expr, const VariablePtr & var, bool last ) override { |
| 552 | Visitor::preVisitLet(expr,var,last); |