]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgfortran/intrinsics/move_alloc.c
Update copyright years in libgfortran.
[thirdparty/gcc.git] / libgfortran / intrinsics / move_alloc.c
CommitLineData
5046aff5 1/* Generic implementation of the MOVE_ALLOC intrinsic
e3c063ce 2 Copyright (C) 2006-2013 Free Software Foundation, Inc.
5046aff5
PT
3 Contributed by Paul Thomas
4
74544378 5This file is part of the GNU Fortran runtime library (libgfortran).
5046aff5
PT
6
7Libgfortran is free software; you can redistribute it and/or
8modify it under the terms of the GNU General Public
9License as published by the Free Software Foundation; either
748086b7 10version 3 of the License, or (at your option) any later version.
5046aff5
PT
11
12Ligbfortran is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
748086b7
JJ
17Under Section 7 of GPL version 3, you are granted additional
18permissions described in the GCC Runtime Library Exception, version
193.1, as published by the Free Software Foundation.
20
21You should have received a copy of the GNU General Public License and
22a copy of the GCC Runtime Library Exception along with this program;
23see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
24<http://www.gnu.org/licenses/>. */
5046aff5
PT
25
26#include "libgfortran.h"
1529b8d9 27#include <stdlib.h>
74544378 28
1529b8d9 29
5046aff5
PT
30extern void move_alloc (gfc_array_char *, gfc_array_char *);
31export_proto(move_alloc);
32
33void
34move_alloc (gfc_array_char * from, gfc_array_char * to)
35{
36 int i;
37
21d1335b 38 free (to->base_addr);
5046aff5
PT
39
40 for (i = 0; i < GFC_DESCRIPTOR_RANK (from); i++)
41 {
dfb55fdc
TK
42 GFC_DIMENSION_SET(to->dim[i],GFC_DESCRIPTOR_LBOUND(from,i),
43 GFC_DESCRIPTOR_UBOUND(from,i),
44 GFC_DESCRIPTOR_STRIDE(from,i));
45 GFC_DIMENSION_SET(from->dim[i],GFC_DESCRIPTOR_LBOUND(from,i),
46 GFC_DESCRIPTOR_LBOUND(from,i), 0);
5046aff5
PT
47 }
48
49 to->offset = from->offset;
50 to->dtype = from->dtype;
21d1335b
TB
51 to->base_addr = from->base_addr;
52 from->base_addr = NULL;
5046aff5
PT
53}
54
55extern void move_alloc_c (gfc_array_char *, GFC_INTEGER_4,
56 gfc_array_char *, GFC_INTEGER_4);
57export_proto(move_alloc_c);
58
59void
1529b8d9
FXC
60move_alloc_c (gfc_array_char * from,
61 GFC_INTEGER_4 from_length __attribute__((unused)),
62 gfc_array_char * to,
63 GFC_INTEGER_4 to_length __attribute__((unused)))
5046aff5
PT
64{
65 move_alloc (from, to);
66}