aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2007-08-24 21:26:42 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2007-08-24 21:26:42 +0200
commitef7e861a0f89bce417b38c31b74c29ad88073548 (patch)
treede2a5e9510c4894d4515481deec390f55e15921b
parent3101faab4620ad49753a2ec8a33e08ee9f8c0bcb (diff)
downloadgcc-ef7e861a0f89bce417b38c31b74c29ad88073548.zip
gcc-ef7e861a0f89bce417b38c31b74c29ad88073548.tar.gz
gcc-ef7e861a0f89bce417b38c31b74c29ad88073548.tar.bz2
re PR fortran/33178 (-std=f95: SIGN with integer arguments rejected as initialization expression)
2007-08-24 Tobias Burnus <burnus@net-b.de> PR fortran/33178 * intrinsic.c (gfc_intrinsic_func_interface): Fix initialization expression check. 2007-08-24 Tobias Burnus <burnus@net-b.de> PR fortran/33178 * gfortran.dg/initialization_4.f90: Update dg-error. * gfortran.dg/initialization_13.f90: New. From-SVN: r127786
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/intrinsic.c10
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/initialization_13.f9012
-rw-r--r--gcc/testsuite/gfortran.dg/initialization_4.f902
5 files changed, 29 insertions, 7 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 7ab6c1e..95726ff 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2007-08-24 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/33178
+ * intrinsic.c (gfc_intrinsic_func_interface): Fix initialization
+ expression check.
+
2007-08-24 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/32972
diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
index 3f999b4..4128e44 100644
--- a/gcc/fortran/intrinsic.c
+++ b/gcc/fortran/intrinsic.c
@@ -3409,12 +3409,10 @@ got_specific:
(4) A reference to an elemental standard intrinsic function,
where each argument is an initialization expression */
- if (gfc_init_expr
- && isym->elemental
- && (expr->ts.type != BT_INTEGER || expr->ts.type != BT_CHARACTER)
- && gfc_notify_std (GFC_STD_F2003, "Extension: Evaluation of "
- "nonstandard initialization expression at %L",
- &expr->where) == FAILURE)
+ if (gfc_init_expr && isym->elemental && flag
+ && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Elemental function "
+ "as initialization expression with non-integer/non-"
+ "character arguments at %L", &expr->where) == FAILURE)
return MATCH_ERROR;
return MATCH_YES;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 54da80e..11f3338 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2007-08-24 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/33178
+ * gfortran.dg/initialization_4.f90: Update dg-error.
+ * gfortran.dg/initialization_13.f90: New.
+
2007-08-24 Richard Guenther <rguenther@suse.de>
PR middle-end/33166
diff --git a/gcc/testsuite/gfortran.dg/initialization_13.f90 b/gcc/testsuite/gfortran.dg/initialization_13.f90
new file mode 100644
index 0000000..0cd6fa6
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/initialization_13.f90
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! { dg-options "-std=f95" }
+!
+! PR fortran/33178
+!
+! Initialization expressions:
+! Fortran 95: Elemental functions w/ integer/character arguments
+! Fortran 2003: restriction lifted
+!
+integer :: a = sign(1,1) ! Ok F95
+real :: b = sign(1.,1.) ! { dg-error "Fortran 2003: Elemental function as initialization expression" }
+end
diff --git a/gcc/testsuite/gfortran.dg/initialization_4.f90 b/gcc/testsuite/gfortran.dg/initialization_4.f90
index 552a01f..24ccf9c 100644
--- a/gcc/testsuite/gfortran.dg/initialization_4.f90
+++ b/gcc/testsuite/gfortran.dg/initialization_4.f90
@@ -2,6 +2,6 @@
! initialization expression, even if -std=f95 was used
! { dg-do compile }
! { dg-options "-std=f95" }
-real, parameter :: pi = 4.0*Atan(1.0) ! { dg-error "Evaluation of nonstandard initialization expression" }
+real, parameter :: pi = 4.0*Atan(1.0) ! { dg-error "Fortran 2003: Elemental function as initialization expression" }
real, parameter :: three = 27.0**(1.0/3.0) ! { dg-error "Noninteger exponent in an initialization expression" }
end