re PR fortran/58749 (PACK(ADJUSTL([" a"," b"]), [.TRUE.,.FALSE.]) causes an internal...
authorThomas Koenig <tkoenig@netcologne.de>
Thu, 4 Jun 2015 18:55:29 +0000 (18:55 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Thu, 4 Jun 2015 18:55:29 +0000 (18:55 +0000)
2015-06-04  Thomas Koenig  <tkoenig@netcologne.de>

PR fortran/58749
* iresolve.c (gfc_resolve_adjustl):  If string has a charlen,
copy it to the function.
(gfc_resolve_adjustr):  Likewise.

2015-06-04  Thomas Koenig  <tkoenig@netcologne.de>

PR fortran/58749
* gfortran.dg/adjustl_1.f90:  New test.

From-SVN: r224137

gcc/fortran/ChangeLog
gcc/fortran/iresolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/adjustl_1.f90 [new file with mode: 0644]

index 33cdf8f91dfd41f59967f1b305bc3bd3b8e6c1da..b446e90122c861c12bb673e7dc2c64a625d5b36b 100644 (file)
@@ -1,3 +1,10 @@
+2015-06-04  Thomas Koenig  <tkoenig@netcologne.de>
+
+       PR fortran/58749
+       * iresolve.c (gfc_resolve_adjustl):  If string has a charlen,
+       copy it to the function.
+       (gfc_resolve_adjustr):  Likewise.
+
 2015-06-04  Andrew MacLeod  <amacleod@redhat.com>
 
        * convert.c: Adjust includes for restructured coretypes.h.
index 735dcc766e9dd99476c5342911efdab91ad2518d..b6b0fc1cc4699ee49d983995aee3fa5d922f8ef6 100644 (file)
@@ -215,6 +215,9 @@ gfc_resolve_adjustl (gfc_expr *f, gfc_expr *string)
 {
   f->ts.type = BT_CHARACTER;
   f->ts.kind = string->ts.kind;
+  if (string->ts.u.cl)
+    f->ts.u.cl = gfc_new_charlen (gfc_current_ns, string->ts.u.cl);
+
   f->value.function.name = gfc_get_string ("__adjustl_s%d", f->ts.kind);
 }
 
@@ -224,6 +227,9 @@ gfc_resolve_adjustr (gfc_expr *f, gfc_expr *string)
 {
   f->ts.type = BT_CHARACTER;
   f->ts.kind = string->ts.kind;
+  if (string->ts.u.cl)
+    f->ts.u.cl = gfc_new_charlen (gfc_current_ns, string->ts.u.cl);
+
   f->value.function.name = gfc_get_string ("__adjustr_s%d", f->ts.kind);
 }
 
index a64729a648fa8e0ba37436a2087cf2746be514af..4b35e727f3f4252ec352824e15d5a3e84c833c70 100644 (file)
@@ -1,3 +1,8 @@
+2015-06-04  Thomas Koenig  <tkoenig@netcologne.de>
+
+       PR fortran/58749
+       * gfortran.dg/adjustl_1.f90:  New test.
+
 2015-06-04  Jan Hubicka  <hubicka@ucw.cz>
 
        * gcc.dg/lto/c-compatible-types_0.c: New testcase.
diff --git a/gcc/testsuite/gfortran.dg/adjustl_1.f90 b/gcc/testsuite/gfortran.dg/adjustl_1.f90
new file mode 100644 (file)
index 0000000..1238da8
--- /dev/null
@@ -0,0 +1,8 @@
+! { dg-do  run }
+! PR 52749 - this used to ICE.
+! Original test case by Stefan Mauerberger.
+PROGRAM test
+  character(len=10) :: u
+  WRITE(unit=u,fmt='(3A)') PACK(ADJUSTL([" a", " b"]), [.TRUE., .FALSE.])
+  if (u .ne. 'a    ') call abort
+END PROGRAM test