diff options
author | tobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-12-27 16:43:25 +0000 |
---|---|---|
committer | tobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-12-27 16:43:25 +0000 |
commit | 4d66f715d6193759012f4ee9168084612cf8cdf0 (patch) | |
tree | b88e393afbb9bf77f96b70a52f9243489d970d7c /libgfortran/intrinsics | |
parent | 96541ee595d246720eaa4ea8bba72dac843898bb (diff) | |
download | gcc-4d66f715d6193759012f4ee9168084612cf8cdf0.tar.gz |
gcc/fortran/
* trans-intrinsic.c (gfc_conv_intrinsic_ishft): Change to
logicalshift. Call fold. Remove 0-bit shift shortcut.
(gfc_conv_intrinsic_ishftc): Convert first argument to at least
4 bytes bits. Convert 2nd and 3rd argument to 4 bytes. Convert
result if width(arg 1) < 4 bytes. Call fold.
libgfortran/
* libgfortran/libgfortran.h (GFC_UINTEGER_1, GFC_UINTEGER_2):
Define.
* intrinsics/ishftc.c: Update copyright years.
(ishftc8): Change 'shift' and 'size' to GFC_INTEGER_4.
* intrinsics/mvbits.c: Correcty non-ASCII character in my name.
Add implementations for GFC_INTEGER_1 and GFC_INTEGER_2.
gcc/testsuite/
* gfortran.dg/g77/f90-intrinsic-bit.f: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92642 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran/intrinsics')
-rw-r--r-- | libgfortran/intrinsics/ishftc.c | 6 | ||||
-rw-r--r-- | libgfortran/intrinsics/mvbits.c | 18 |
2 files changed, 20 insertions, 4 deletions
diff --git a/libgfortran/intrinsics/ishftc.c b/libgfortran/intrinsics/ishftc.c index 7d5767c9144..896faac06f7 100644 --- a/libgfortran/intrinsics/ishftc.c +++ b/libgfortran/intrinsics/ishftc.c @@ -1,5 +1,5 @@ /* Implementation of ishftc intrinsic. - Copyright 2002 Free Software Foundation, Inc. + Copyright 2002, 2004 Free Software Foundation, Inc. Contributed by Paul Brook <paul@nowt.org> This file is part of the GNU Fortran 95 runtime library (libgfor). @@ -41,11 +41,11 @@ ishftc4 (GFC_INTEGER_4 i, GFC_INTEGER_4 shift, GFC_INTEGER_4 size) return (i & mask) | (bits >> (size - shift)) | ((i << shift) & ~mask); } -extern GFC_INTEGER_8 ishftc8 (GFC_INTEGER_8, GFC_INTEGER_8, GFC_INTEGER_8); +extern GFC_INTEGER_8 ishftc8 (GFC_INTEGER_8, GFC_INTEGER_4, GFC_INTEGER_4); export_proto(ishftc8); GFC_INTEGER_8 -ishftc8 (GFC_INTEGER_8 i, GFC_INTEGER_8 shift, GFC_INTEGER_8 size) +ishftc8 (GFC_INTEGER_8 i, GFC_INTEGER_4 shift, GFC_INTEGER_4 size) { GFC_INTEGER_8 mask; GFC_UINTEGER_8 bits; diff --git a/libgfortran/intrinsics/mvbits.c b/libgfortran/intrinsics/mvbits.c index 140547bf482..e1e3e40313c 100644 --- a/libgfortran/intrinsics/mvbits.c +++ b/libgfortran/intrinsics/mvbits.c @@ -1,6 +1,6 @@ /* Implementation of the MVBITS intrinsic Copyright (C) 2004 Free Software Foundation, Inc. - Contributed by Tobias Schlüter + Contributed by Tobias Schlüter This file is part of the GNU Fortran 95 runtime library (libgfortran). @@ -48,6 +48,22 @@ SUB_NAME (const TYPE *from, const GFC_INTEGER_4 *frompos, #endif #ifndef SUB_NAME +# define TYPE GFC_INTEGER_1 +# define UTYPE GFC_UINTEGER_1 +# define SUB_NAME mvbits_i1 +# include "mvbits.c" +# undef SUB_NAME +# undef TYPE +# undef UTYPE + +# define TYPE GFC_INTEGER_2 +# define UTYPE GFC_UINTEGER_2 +# define SUB_NAME mvbits_i2 +# include "mvbits.c" +# undef SUB_NAME +# undef TYPE +# undef UTYPE + # define TYPE GFC_INTEGER_4 # define UTYPE GFC_UINTEGER_4 # define SUB_NAME mvbits_i4 |