On Sat, Jun 03, 2017 at 09:25:31AM -0700, Jerry DeLisle wrote: > On 06/03/2017 06:48 AM, Nicolas Koenig wrote: > > Hello everyone, > > > > here is a version of the patch that includes a workaround for PR 80960. I > > have > > also included a separate test case for the failure that Dominique detected. > > The > > style issues should be fixed. > > > > Regression-tested. OK for trunk? > > > > Yes, OK.
There still are plenty of coding-style issues (see below). Can you please rectify them before committing? Also you change gfc-internals.texi without a ChangeLog entry. I guess this was an accident? thanks, $ contrib/check_GNU_style.sh /tmp/p9.diff Blocks of 8 spaces should be replaced with tabs. 40:+ break; 55:+ return false; 61:+ { 64:+ curr->block->next = NULL; 65:+ gfc_free_statements(curr); 70:+ } 92:+ || ref->u.ar.dimen_type[i] != DIMEN_ELEMENT) 93:+ return false; 98:+ { 111:+ iters[i] = stack_top->iter; 116:+ case EXPR_CONSTANT: 120:+ switch (start->value.op.op) 125:+ std::swap(start->value.op.op1, start->value.op.op2); 130:+ || start->value.op.op1->ref) 131:+ return false; 132:+ if (!stack_top || !stack_top->iter 135:+ return false; 146:+ } 160:+ continue; 163:+ { 174:+ break; 214:+ { 215:+ curr->next = prev->next->next; 216:+ prev->next = curr; 219:+ { 220:+ curr->next = stack_top->code->block->next->next->next; 253:+ { 254:+ first.prev = &write; 260:+ } Trailing whitespace. 18:+ 20:+ 22:+ 25:+static bool 28:+ gfc_code *curr; 44:+ 94:+ 106:+ if (!stack_top || !stack_top->iter 108:+ iters[i] = NULL; 128:+ if ((start->value.op.op1->expr_type!= EXPR_VARIABLE 132:+ if (!stack_top || !stack_top->iter 133:+ || stack_top->iter->var->symtree 136:+ iters[i] = stack_top->iter; 152:+ new_e->rank = future_rank; 176:+ new_e->ref->u.ar.dimen_type[i] = DIMEN_RANGE; 218:+ else 244:+ 249:+ Dot, space, space, new sentence. 17:+ optimize by replacing do loops with their analog array slices. For example: There should be exactly one space between function name and parenthesis. 26:+traverse_io_block(gfc_code *code, bool *has_reached, gfc_code *prev) 60:+ if (traverse_io_block(curr->block->next, has_reached, prev)) 65:+ gfc_free_statements(curr); 74:+ gcc_assert(curr->op == EXEC_TRANSFER); 96:+ gfc_simplify_expr(start, 0); 125:+ std::swap(start->value.op.op1, start->value.op.op2); 126:+ gcc_fallthrough(); 150:+ new_e = gfc_copy_expr(curr->expr1); 154:+ new_e->shape = gfc_get_shape(new_e->rank); 165:+ gfc_internal_error("bad expression"); 170:+ gfc_free_expr(new_e->ref->u.ar.start[i]); 171:+ new_e->ref->u.ar.start[i] = gfc_copy_expr(iters[i]->start); 172:+ new_e->ref->u.ar.end[i] = gfc_copy_expr(iters[i]->end); 173:+ new_e->ref->u.ar.stride[i] = gfc_copy_expr(iters[i]->step); 178:+ gfc_free_expr(new_e->ref->u.ar.start[i]); 179:+ expr = gfc_copy_expr(start); 180:+ expr->value.op.op1 = gfc_copy_expr(iters[i]->start); 182:+ gfc_simplify_expr(new_e->ref->u.ar.start[i], 0); 183:+ expr = gfc_copy_expr(start); 184:+ expr->value.op.op1 = gfc_copy_expr(iters[i]->end); 186:+ gfc_simplify_expr(new_e->ref->u.ar.end[i], 0); 187:+ switch(start->value.op.op) 191:+ new_e->ref->u.ar.stride[i] = gfc_copy_expr(iters[i]->step); 194:+ expr = gfc_copy_expr(start); 195:+ expr->value.op.op1 = gfc_copy_expr(iters[i]->step); 197:+ gfc_simplify_expr(new_e->ref->u.ar.stride[i], 0); 200:+ gfc_internal_error("bad op"); 204:+ gfc_internal_error("bad expression"); 258:+ traverse_io_block((*curr)->block->next, &b, prev); > > Thanks for the work. > > Jerry