aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorFrancois-Xavier Coudert <fxcoudert@gcc.gnu.org>2007-05-06 22:56:52 +0000
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2007-05-06 22:56:52 +0000
commit22aef73f17b09c1805aee5bb4a64f1e012bec49d (patch)
tree2927bdf1c5e6166302a007c1ab8e0e1105334d9b /gcc
parent28fe1c4032687045633a19b9a7746c4bc9f5474f (diff)
downloadgcc-22aef73f17b09c1805aee5bb4a64f1e012bec49d.zip
gcc-22aef73f17b09c1805aee5bb4a64f1e012bec49d.tar.gz
gcc-22aef73f17b09c1805aee5bb4a64f1e012bec49d.tar.bz2
re PR fortran/31764 (NEW_LINE with array argument)
PR fortran/31764 * simplify.c (gfc_simplify_new_line): NEW_LINE can be simplified even for non constant arguments. * gfortran.dg/new_line.f90: Add new checks. From-SVN: r124482
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/simplify.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/new_line.f9017
4 files changed, 26 insertions, 7 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 8d15bf2..04220ab 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2007-05-07 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR fortran/31764
+ * simplify.c (gfc_simplify_new_line): NEW_LINE can be simplified
+ even for non constant arguments.
+
2007-05-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index 9df2e81..ed62ee3 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -2641,13 +2641,8 @@ gfc_simplify_new_line (gfc_expr *e)
{
gfc_expr *result;
- if (e->expr_type != EXPR_CONSTANT)
- return NULL;
-
result = gfc_constant_result (BT_CHARACTER, e->ts.kind, &e->where);
-
result->value.character.string = gfc_getmem (2);
-
result->value.character.length = 1;
result->value.character.string[0] = '\n';
result->value.character.string[1] = '\0'; /* For debugger */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 36cec0d..da85bb5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-05-07 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR fortran/31764
+ * gfortran.dg/new_line.f90: Add new checks.
+
2007-05-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/31201
diff --git a/gcc/testsuite/gfortran.dg/new_line.f90 b/gcc/testsuite/gfortran.dg/new_line.f90
index 355ca30..aacabc6 100644
--- a/gcc/testsuite/gfortran.dg/new_line.f90
+++ b/gcc/testsuite/gfortran.dg/new_line.f90
@@ -2,6 +2,19 @@
! Checks Fortran 2003's new_line intrinsic function
! PR fortran/28585
program new_line_check
- implicit none
- if(achar(10) /= new_line('a')) call abort()
+ implicit none
+ character(len=10) :: a1
+ character(len=10) :: a2(2)
+ character(len=10), parameter :: a3 = "1234567890"
+ character(len=10), parameter :: a4(2) = "1234567890"
+ character(len=10), parameter :: a5(2) = repeat("1234567890",2)
+
+ if(achar(10) /= new_line('a')) call abort
+
+ if (iachar(new_line(a1)) /= 10) call abort
+ if (iachar(new_line(a2)) /= 10) call abort
+ if (iachar(new_line(a3)) /= 10) call abort
+ if (iachar(new_line(a4)) /= 10) call abort
+ if (iachar(new_line(a5)) /= 10) call abort
+
end program new_line_check