This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch,fortran] Accept noninteger exponents in initialization expressions for Fortran 2003 (PR29962)
- From: Tobias Burnus <burnus at net-b dot de>
- To: "'fortran at gcc dot gnu dot org'" <fortran at gcc dot gnu dot org>, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 27 Nov 2006 11:12:08 +0100
- Subject: [patch,fortran] Accept noninteger exponents in initialization expressions for Fortran 2003 (PR29962)
:ADDPATCH fortran:
Fortran 2003 allows much more in initialization expressions than Fortran
95 (cf. PR29962), some of which are support in STD_GNU.
This patch allows noninteger exponents in initialization expressions.
The relevant parts of the standard are:
"7.1.7 Initialization expression" in Fortran 2003 and in the Section
"7.1.6.1 Constant expression" in Fortran 95.
F95: "An initialization expression is a constant expression in which the
exponentiation operation is
permitted only with an integer power"
In F2003 this clause is gone.
Regression tested on x86_64-unknown-linux-gnu.
Tobias
2006-11-27 Tobias Burnus <burnus@net-b.de>
PR fortran/29962
* expr.c (check_intrinsic_op): Allow noninteger exponents for F2003.
Index: gcc/fortran/expr.c
===================================================================
--- gcc/fortran/expr.c (Revision 119247)
+++ gcc/fortran/expr.c (Arbeitskopie)
@@ -1622,8 +1622,10 @@
if (e->value.op.operator == INTRINSIC_POWER
&& check_function == check_init_expr && et0 (op2) != BT_INTEGER)
{
- gfc_error ("Exponent at %L must be INTEGER for an initialization "
- "expression", &op2->where);
+ if (gfc_notify_std (GFC_STD_F2003,"Fortran 2003: Noninteger "
+ "exponent in an initialization "
+ "expression at %L", &op2->where)
+ == FAILURE)
return FAILURE;
}
break;