aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog4
-rw-r--r--gcc/fortran/decl.c18
-rw-r--r--gcc/testsuite/ChangeLog11
-rw-r--r--gcc/testsuite/gfortran.dg/byte_1.f9022
-rw-r--r--gcc/testsuite/gfortran.dg/byte_2.f9022
5 files changed, 74 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index af15594..567248a 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,7 @@
+2005-10-23 Asher Langton <langton2@llnl.gov>
+
+ * decl.c (match_type_spec): Add a BYTE type as an extension.
+
2005-10-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/18022
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index 7a605d6..48cb920 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -1386,6 +1386,24 @@ match_type_spec (gfc_typespec * ts, int implicit_flag)
gfc_clear_ts (ts);
+ if (gfc_match (" byte") == MATCH_YES)
+ {
+ if (gfc_notify_std(GFC_STD_GNU, "Extension: BYTE type at %C")
+ == FAILURE)
+ return MATCH_ERROR;
+
+ if (gfc_validate_kind (BT_INTEGER, 1, true) < 0)
+ {
+ gfc_error ("BYTE type used at %C "
+ "is not available on the target machine");
+ return MATCH_ERROR;
+ }
+
+ ts->type = BT_INTEGER;
+ ts->kind = 1;
+ return MATCH_YES;
+ }
+
if (gfc_match (" integer") == MATCH_YES)
{
ts->type = BT_INTEGER;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1b3522d..5cfc2e8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-10-23 Asher Langton <langton2@llnl.gov>
+
+ * gfortran.dg/byte_1.f90: New test.
+ * gfortran.dg/byte_2.f90: New test.
+
2005-10-23 David Edelsohn <edelsohn@gnu.org>
* gcc.dg/attr-alias-3.c: XFAIL on AIX.
@@ -5,13 +10,13 @@
2005-10-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/18022
- gfortran.dg/assign_func_dtcomp_1.f90: New test.
+ * gfortran.dg/assign_func_dtcomp_1.f90: New test.
PR fortran/24311
- gfortran.dg/merge_char_const.f90: New test.
+ * gfortran.dg/merge_char_const.f90: New test.
PR fortran/24384
- gfortran.dg/spread_scalar_source.f90: New test.
+ * gfortran.dg/spread_scalar_source.f90: New test.
2005-10-22 Hans-Peter Nilsson <hp@axis.com>
diff --git a/gcc/testsuite/gfortran.dg/byte_1.f90 b/gcc/testsuite/gfortran.dg/byte_1.f90
new file mode 100644
index 0000000..a9e239e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/byte_1.f90
@@ -0,0 +1,22 @@
+! { dg-do compile }
+! { dg-options "-std=f95" }
+program testbyte
+ integer(1) :: ii = 7
+ call foo(ii)
+end program testbyte
+
+subroutine foo(ii)
+ integer(1) ii
+ byte b ! { dg-error "BYTE type" }
+ b = ii
+ call bar(ii,b)
+end subroutine foo
+
+subroutine bar(ii,b)
+ integer (1) ii
+ byte b ! { dg-error "BYTE type" }
+ if (b.ne.ii) then
+! print *,"Failed"
+ call abort
+ end if
+end subroutine bar
diff --git a/gcc/testsuite/gfortran.dg/byte_2.f90 b/gcc/testsuite/gfortran.dg/byte_2.f90
new file mode 100644
index 0000000..a410055
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/byte_2.f90
@@ -0,0 +1,22 @@
+! { dg-do run }
+! { dg-options "-std=gnu" }
+program testbyte
+ integer(1) :: ii = 7
+ call foo(ii)
+end program testbyte
+
+subroutine foo(ii)
+ integer(1) ii
+ byte b
+ b = ii
+ call bar(ii,b)
+end subroutine foo
+
+subroutine bar(ii,b)
+ integer (1) ii
+ byte b
+ if (b.ne.ii) then
+! print *,"Failed"
+ call abort
+ end if
+end subroutine bar