diff options
author | Tobias Burnus <burnus@net-b.de> | 2011-05-31 22:04:09 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2011-05-31 22:04:09 +0200 |
commit | da661a58be64d71f95def0309a692fc4a8cd2684 (patch) | |
tree | f09811acccca40393f12028c87bd9199a9ee86cd /gcc/fortran/trans.c | |
parent | ead7c399bc1b0c62bacaf845628ab72024838085 (diff) | |
download | gcc-da661a58be64d71f95def0309a692fc4a8cd2684.zip gcc-da661a58be64d71f95def0309a692fc4a8cd2684.tar.gz gcc-da661a58be64d71f95def0309a692fc4a8cd2684.tar.bz2 |
re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
2011-05-31 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
* intrinsic.c (klass): Add CLASS_ATOMIC.
(add_subroutines): Add atomic_ref/atomic_define.
* intrinsic.texi (ATOMIC_REF, ATOMIC_DEFINE): Document.
* intrinsic.h (gfc_check_atomic_def, gfc_check_atomic_ref,
gfc_resolve_atomic_def, gfc_resolve_atomic_ref): New prototypes.
* gfortran.h (gfc_isym_id): Add GFC_ISYM_ATOMIC_DEF
and GFC_ISYM_ATOMIC_REF.
(gfc_atomic_int_kind, gfc_atomic_logical_kind): New global vars.
* iresolve.c (gfc_resolve_atomic_def, gfc_resolve_atomic_ref):
* New
functions.
* check.c (gfc_check_atomic, gfc_check_atomic_def,
gfc_check_atomic_ref): New functions.
* iso-fortran-env.def (ISOFORTRANENV_FILE_ATOMIC_INT_KIND,
ISOFORTRANENV_FILE_ATOMIC_LOGICAL_KIND): Change kind value.
* trans-intrinsic.c (conv_intrinsic_atomic_def,
conv_intrinsic_atomic_ref, gfc_conv_intrinsic_subroutine): New
functions.
(conv_intrinsic_move_alloc) Renamed from
gfc_conv_intrinsic_move_alloc - and made static.
* trans.h (gfc_conv_intrinsic_move_alloc): Remove.
(gfc_conv_intrinsic_subroutine) Add prototype.
* trans.c (trans_code): Call gfc_conv_intrinsic_subroutine.
From-SVN: r174510
Diffstat (limited to 'gcc/fortran/trans.c')
-rw-r--r-- | gcc/fortran/trans.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c index 0ab4637..f2f1352 100644 --- a/gcc/fortran/trans.c +++ b/gcc/fortran/trans.c @@ -1245,15 +1245,20 @@ trans_code (gfc_code * code, tree cond) dependency check, too. */ { bool is_mvbits = false; + + if (code->resolved_isym) + { + res = gfc_conv_intrinsic_subroutine (code); + if (res != NULL_TREE) + break; + } + if (code->resolved_isym && code->resolved_isym->id == GFC_ISYM_MVBITS) is_mvbits = true; - 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); + + res = gfc_trans_call (code, is_mvbits, NULL_TREE, + NULL_TREE, false); } break; |