aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/fortran/trans.c')
-rw-r--r--gcc/fortran/trans.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index 4bd4f3b..e266be8 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -1093,7 +1093,7 @@ trans_code (gfc_code * code, tree cond)
case EXEC_ASSIGN:
if (code->expr1->ts.type == BT_CLASS)
- res = gfc_trans_class_assign (code);
+ res = gfc_trans_class_assign (code->expr1, code->expr2, code->op);
else
res = gfc_trans_assign (code);
break;
@@ -1104,14 +1104,14 @@ trans_code (gfc_code * code, tree cond)
case EXEC_POINTER_ASSIGN:
if (code->expr1->ts.type == BT_CLASS)
- res = gfc_trans_class_assign (code);
+ res = gfc_trans_class_assign (code->expr1, code->expr2, code->op);
else
res = gfc_trans_pointer_assign (code);
break;
case EXEC_INIT_ASSIGN:
if (code->expr1->ts.type == BT_CLASS)
- res = gfc_trans_class_assign (code);
+ res = gfc_trans_class_init_assign (code);
else
res = gfc_trans_init_assign (code);
break;
@@ -1157,8 +1157,12 @@ trans_code (gfc_code * code, tree cond)
if (code->resolved_isym
&& code->resolved_isym->id == GFC_ISYM_MVBITS)
is_mvbits = true;
- res = gfc_trans_call (code, is_mvbits, NULL_TREE,
- NULL_TREE, false);
+ if (code->resolved_isym
+ && code->resolved_isym->id == GFC_ISYM_MOVE_ALLOC)
+ res = gfc_conv_intrinsic_move_alloc (code);
+ else
+ res = gfc_trans_call (code, is_mvbits, NULL_TREE,
+ NULL_TREE, false);
}
break;