Lines Matching refs:rvalue

3638 gfc_check_assign (gfc_expr *lvalue, gfc_expr *rvalue, int conform,  in gfc_check_assign()  argument
3723 && sym->attr.proc != PROC_MODULE && !rvalue->error) in gfc_check_assign()
3731 if (rvalue->rank != 0 && lvalue->rank != rvalue->rank) in gfc_check_assign()
3734 lvalue->rank, rvalue->rank, &lvalue->where); in gfc_check_assign()
3745 if (rvalue->expr_type == EXPR_NULL) in gfc_check_assign()
3753 &rvalue->where); in gfc_check_assign()
3760 && rvalue->expr_type == EXPR_FUNCTION && gfc_expr_attr (rvalue).pointer) in gfc_check_assign()
3763 "assignment at %L", &rvalue->where); in gfc_check_assign()
3766 if (lvalue->rank != 0 && rvalue->rank != 0 in gfc_check_assign()
3767 && !gfc_check_conformance (lvalue, rvalue, "array assignment")) in gfc_check_assign()
3771 if (rvalue->ts.type == BT_BOZ) in gfc_check_assign()
3776 && gfc_boz2int (rvalue, lvalue->ts.kind)) in gfc_check_assign()
3780 && gfc_boz2real (rvalue, lvalue->ts.kind)) in gfc_check_assign()
3784 &rvalue->where)) in gfc_check_assign()
3794 &rvalue->where)) in gfc_check_assign()
3798 && gfc_boz2int (rvalue, lvalue->ts.kind)) in gfc_check_assign()
3802 && gfc_boz2real (rvalue, lvalue->ts.kind)) in gfc_check_assign()
3806 "%qs variable", &rvalue->where, gfc_typename (lvalue)); in gfc_check_assign()
3818 if (gfc_compare_types (&lvalue->ts, &rvalue->ts)) in gfc_check_assign()
3828 if ((gfc_numeric_ts (&lvalue->ts) && gfc_numeric_ts (&rvalue->ts)) in gfc_check_assign()
3829 || rvalue->ts.type == BT_HOLLERITH) in gfc_check_assign()
3834 && rvalue->ts.type == BT_CHARACTER in gfc_check_assign()
3835 && rvalue->ts.kind == gfc_default_character_kind) in gfc_check_assign()
3838 if (lvalue->ts.type == BT_LOGICAL && rvalue->ts.type == BT_LOGICAL) in gfc_check_assign()
3841 where = lvalue->where.lb ? &lvalue->where : &rvalue->where; in gfc_check_assign()
3844 gfc_typename (rvalue), gfc_typename (lvalue)); in gfc_check_assign()
3851 if (lvalue->ts.type == BT_CHARACTER && rvalue->ts.type == BT_CHARACTER) in gfc_check_assign()
3853 if (lvalue->ts.kind != rvalue->ts.kind && allow_convert) in gfc_check_assign()
3854 return gfc_convert_chartype (rvalue, &lvalue->ts); in gfc_check_assign()
3862 return gfc_convert_type (rvalue, &lvalue->ts, 1); in gfc_check_assign()
3871 gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue, in gfc_check_pointer_assign() argument
3903 same_rank = lvalue->rank == rvalue->rank; in gfc_check_pointer_assign()
4001 if (rvalue->expr_type == EXPR_NULL && rvalue->ts.type == BT_UNKNOWN) in gfc_check_pointer_assign()
4026 attr = gfc_expr_attr (rvalue); in gfc_check_pointer_assign()
4027 if (!((rvalue->expr_type == EXPR_NULL) in gfc_check_pointer_assign()
4028 || (rvalue->expr_type == EXPR_FUNCTION && attr.proc_pointer) in gfc_check_pointer_assign()
4029 || (rvalue->expr_type == EXPR_VARIABLE && attr.proc_pointer) in gfc_check_pointer_assign()
4030 || (rvalue->expr_type == EXPR_VARIABLE in gfc_check_pointer_assign()
4034 &rvalue->where); in gfc_check_pointer_assign()
4038 if (rvalue->expr_type == EXPR_VARIABLE && !attr.proc_pointer) in gfc_check_pointer_assign()
4041 gfc_symbol *sym = rvalue->symtree->n.sym; in gfc_check_pointer_assign()
4047 gfc_resolve_intrinsic (sym, &rvalue->where); in gfc_check_pointer_assign()
4048 attr = gfc_expr_attr (rvalue); in gfc_check_pointer_assign()
4060 sym->name, &rvalue->where); in gfc_check_pointer_assign()
4069 rvalue->symtree->name, &rvalue->where); in gfc_check_pointer_assign()
4079 rvalue->symtree->name, &rvalue->where); in gfc_check_pointer_assign()
4085 "at %L", rvalue->symtree->name, &rvalue->where)) in gfc_check_pointer_assign()
4087 if (attr.intrinsic && gfc_intrinsic_actual_ok (rvalue->symtree->name, in gfc_check_pointer_assign()
4091 "assignment", rvalue->symtree->name, &rvalue->where); in gfc_check_pointer_assign()
4100 rvalue->symtree->name, &rvalue->where); in gfc_check_pointer_assign()
4107 if (rvalue->expr_type == EXPR_VARIABLE in gfc_check_pointer_assign()
4109 != rvalue->symtree->n.sym->attr.ext_attr) in gfc_check_pointer_assign()
4119 != (calls.ext_attr & rvalue->symtree->n.sym->attr.ext_attr)) in gfc_check_pointer_assign()
4123 &rvalue->where); in gfc_check_pointer_assign()
4138 comp2 = gfc_get_proc_ptr_comp (rvalue); in gfc_check_pointer_assign()
4141 if (rvalue->expr_type == EXPR_FUNCTION) in gfc_check_pointer_assign()
4152 else if (rvalue->expr_type == EXPR_FUNCTION) in gfc_check_pointer_assign()
4154 if (rvalue->value.function.esym) in gfc_check_pointer_assign()
4155 s2 = rvalue->value.function.esym->result; in gfc_check_pointer_assign()
4157 s2 = rvalue->symtree->n.sym->result; in gfc_check_pointer_assign()
4163 s2 = rvalue->symtree->n.sym; in gfc_check_pointer_assign()
4175 "at %L: %qs is not a subroutine", &rvalue->where, name); in gfc_check_pointer_assign()
4200 comp2->name, &rvalue->where, err); in gfc_check_pointer_assign()
4206 s2->name, &rvalue->where, err); in gfc_check_pointer_assign()
4218 "at %L: %s", &rvalue->where, err); in gfc_check_pointer_assign()
4228 "the EXTERNAL attribute", s2->name, &rvalue->where); in gfc_check_pointer_assign()
4237 if (rvalue->expr_type == EXPR_CONSTANT) in gfc_check_pointer_assign()
4240 &rvalue->where); in gfc_check_pointer_assign()
4245 if (!gfc_compare_types (&lvalue->ts, &rvalue->ts)) in gfc_check_pointer_assign()
4248 if (UNLIMITED_POLY (rvalue) in gfc_check_pointer_assign()
4260 gfc_typename (rvalue), gfc_typename (lvalue)); in gfc_check_pointer_assign()
4264 if (lvalue->ts.type != BT_CLASS && lvalue->ts.kind != rvalue->ts.kind) in gfc_check_pointer_assign()
4271 if (lvalue->rank != rvalue->rank && !rank_remap) in gfc_check_pointer_assign()
4278 if (lvalue->ts.type == BT_CLASS && !UNLIMITED_POLY (rvalue)) in gfc_check_pointer_assign()
4279 gfc_find_vtab (&rvalue->ts); in gfc_check_pointer_assign()
4289 && gfc_array_size (rvalue, &rsize) in gfc_check_pointer_assign()
4301 if (rvalue->rank != 1) in gfc_check_pointer_assign()
4303 if (!gfc_is_simply_contiguous (rvalue, true, false)) in gfc_check_pointer_assign()
4306 " simply contiguous at %L", &rvalue->where); in gfc_check_pointer_assign()
4310 "rank 1 at %L", &rvalue->where)) in gfc_check_pointer_assign()
4316 if (rvalue->expr_type == EXPR_NULL) in gfc_check_pointer_assign()
4319 if (rvalue->expr_type == EXPR_VARIABLE && is_subref_array (rvalue)) in gfc_check_pointer_assign()
4322 attr = gfc_expr_attr (rvalue); in gfc_check_pointer_assign()
4324 if (rvalue->expr_type == EXPR_FUNCTION && !attr.pointer) in gfc_check_pointer_assign()
4329 if (rvalue->value.function.isym in gfc_check_pointer_assign()
4330 && rvalue->value.function.isym->id == GFC_ISYM_CAF_GET) in gfc_check_pointer_assign()
4335 &rvalue->where); in gfc_check_pointer_assign()
4339 &rvalue->where); in gfc_check_pointer_assign()
4349 if (gfc_is_size_zero_array (rvalue)) in gfc_check_pointer_assign()
4352 "the TARGET attribute is expected", &rvalue->where); in gfc_check_pointer_assign()
4355 else if (!rvalue->symtree) in gfc_check_pointer_assign()
4359 &rvalue->where); in gfc_check_pointer_assign()
4363 sym = rvalue->symtree->n.sym; in gfc_check_pointer_assign()
4374 &rvalue->where); in gfc_check_pointer_assign()
4378 for (ref = rvalue->ref; ref; ref = ref->next) in gfc_check_pointer_assign()
4416 "nor POINTER at %L", &rvalue->where); in gfc_check_pointer_assign()
4423 bool t = gfc_check_same_strlen (lvalue, rvalue, "pointer assignment"); in gfc_check_pointer_assign()
4428 if (is_pure && gfc_impure_variable (rvalue->symtree->n.sym)) in gfc_check_pointer_assign()
4431 "procedure at %L", &rvalue->where); in gfc_check_pointer_assign()
4434 if (is_implicit_pure && gfc_impure_variable (rvalue->symtree->n.sym)) in gfc_check_pointer_assign()
4437 if (gfc_has_vector_index (rvalue)) in gfc_check_pointer_assign()
4440 "on rhs at %L", &rvalue->where); in gfc_check_pointer_assign()
4448 "attribute at %L", &rvalue->where); in gfc_check_pointer_assign()
4453 if (rvalue->expr_type == EXPR_VARIABLE in gfc_check_pointer_assign()
4454 && gfc_is_coindexed (rvalue)) in gfc_check_pointer_assign()
4457 for (ref = rvalue->ref; ref; ref = ref->next) in gfc_check_pointer_assign()
4461 &rvalue->where); in gfc_check_pointer_assign()
4472 && !gfc_is_simply_contiguous (rvalue, false, true)) in gfc_check_pointer_assign()
4474 "non-contiguous target at %L", &rvalue->where); in gfc_check_pointer_assign()
4478 && rvalue->expr_type == EXPR_VARIABLE in gfc_check_pointer_assign()
4479 && !rvalue->symtree->n.sym->attr.save in gfc_check_pointer_assign()
4480 && !rvalue->symtree->n.sym->attr.pointer && !attr.pointer in gfc_check_pointer_assign()
4481 && !rvalue->symtree->n.sym->attr.host_assoc in gfc_check_pointer_assign()
4482 && !rvalue->symtree->n.sym->attr.in_common in gfc_check_pointer_assign()
4483 && !rvalue->symtree->n.sym->attr.use_assoc in gfc_check_pointer_assign()
4484 && !rvalue->symtree->n.sym->attr.dummy) in gfc_check_pointer_assign()
4494 != rvalue->symtree->n.sym->ns) in gfc_check_pointer_assign()
4498 if (rvalue->symtree->n.sym->ns->proc_name in gfc_check_pointer_assign()
4499 && rvalue->symtree->n.sym->ns->proc_name->attr.flavor != FL_PROCEDURE in gfc_check_pointer_assign()
4500 && rvalue->symtree->n.sym->ns->proc_name->attr.flavor != FL_PROGRAM) in gfc_check_pointer_assign()
4501 for (ns = rvalue->symtree->n.sym->ns; in gfc_check_pointer_assign()
4524 gfc_check_assign_symbol (gfc_symbol *sym, gfc_component *comp, gfc_expr *rvalue) in gfc_check_assign_symbol() argument
4561 r = gfc_check_pointer_assign (&lvalue, rvalue, false, true); in gfc_check_assign_symbol()
4567 if (rvalue->expr_type == EXPR_FUNCTION in gfc_check_assign_symbol()
4568 && rvalue->value.function.isym in gfc_check_assign_symbol()
4569 && (rvalue->value.function.isym->conversion == 1)) in gfc_check_assign_symbol()
4570 gfc_check_init_expr (rvalue); in gfc_check_assign_symbol()
4572 r = gfc_check_assign (&lvalue, rvalue, 1); in gfc_check_assign_symbol()
4581 if (pointer && rvalue->expr_type != EXPR_NULL && !proc_pointer) in gfc_check_assign_symbol()
4585 attr = gfc_expr_attr (rvalue); in gfc_check_assign_symbol()
4589 "must not be ALLOCATABLE", &rvalue->where); in gfc_check_assign_symbol()
4595 "must have the TARGET attribute", &rvalue->where); in gfc_check_assign_symbol()
4599 if (!attr.save && rvalue->expr_type == EXPR_VARIABLE in gfc_check_assign_symbol()
4600 && rvalue->symtree->n.sym->ns->proc_name in gfc_check_assign_symbol()
4601 && rvalue->symtree->n.sym->ns->proc_name->attr.is_main_program) in gfc_check_assign_symbol()
4603 rvalue->symtree->n.sym->ns->proc_name->attr.save = SAVE_IMPLICIT; in gfc_check_assign_symbol()
4610 "must have the SAVE attribute", &rvalue->where); in gfc_check_assign_symbol()
4615 if (proc_pointer && rvalue->expr_type != EXPR_NULL) in gfc_check_assign_symbol()
4618 symbol_attribute attr = gfc_expr_attr (rvalue); in gfc_check_assign_symbol()
4622 "may not be a procedure pointer", &rvalue->where); in gfc_check_assign_symbol()
4629 rvalue->symtree->name, &rvalue->where); in gfc_check_assign_symbol()
4636 rvalue->symtree->name, &rvalue->where); in gfc_check_assign_symbol()