summaryrefslogtreecommitdiff
path: root/libgfortran/intrinsics
diff options
context:
space:
mode:
authortobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>2004-12-27 16:43:25 +0000
committertobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>2004-12-27 16:43:25 +0000
commit4d66f715d6193759012f4ee9168084612cf8cdf0 (patch)
treeb88e393afbb9bf77f96b70a52f9243489d970d7c /libgfortran/intrinsics
parent96541ee595d246720eaa4ea8bba72dac843898bb (diff)
downloadgcc-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.c6
-rw-r--r--libgfortran/intrinsics/mvbits.c18
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