Fix 19990525-0.f
authorburley <burley@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 25 May 1999 16:25:57 +0000 (16:25 +0000)
committerburley <burley@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 25 May 1999 16:25:57 +0000 (16:25 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27145 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/f/ChangeLog
gcc/f/com.c
gcc/testsuite/ChangeLog
gcc/testsuite/g77.f-torture/compile/19990525-0.f [new file with mode: 0644]

index 92de51a..46dcba8 100644 (file)
@@ -1,3 +1,10 @@
+Tue May 25 17:48:34 1999  Craig Burley  <craig@jcb-sc.com>
+
+       Fix 19990525-0.f:
+       * com.c (ffecom_arg_ptr_to_expr): Strip off parens around
+       CHARACTER expression.
+       (ffecom_prepare_expr_): Ditto.
+
 Tue May 18 03:52:04 1999  Craig Burley  <craig@jcb-sc.com>
 
        Support use of back end's improved open-coding of complex divide:
index c04c4a7..bcd029c 100644 (file)
@@ -10600,6 +10600,9 @@ ffecom_arg_ptr_to_expr (ffebld expr, tree *length)
   assert (ffeinfo_kindtype (ffebld_info (expr))
          == FFEINFO_kindtypeCHARACTER1);
 
+  while (ffebld_op (expr) == FFEBLD_opPAREN)
+    expr = ffebld_left (expr);
+
   catlist = ffecom_concat_list_new_ (expr, FFETARGET_charactersizeNONE);
   switch (ffecom_concat_list_count_ (catlist))
     {
@@ -13042,6 +13045,12 @@ ffecom_prepare_expr_ (ffebld expr, ffebld dest UNUSED)
   /* Generate whatever temporaries are needed to represent the result
      of the expression.  */
 
+  if (bt == FFEINFO_basictypeCHARACTER)
+    {
+      while (ffebld_op (expr) == FFEBLD_opPAREN)
+       expr = ffebld_left (expr);
+    }
+
   switch (ffebld_op (expr))
     {
     default:
index 2c6d665..5be358d 100644 (file)
@@ -1,3 +1,7 @@
+1999-05-25  Craig Burley  <craig@jcb-sc.com>
+
+       * g77.f-torture/compile/19990525-0.f: New test.
+
 Tue May 25 01:21:16 1999  Jeffrey A Law  (law@cygnus.com)
 
        * gcc.c-torture/execute/990525-2.c: New test.
diff --git a/gcc/testsuite/g77.f-torture/compile/19990525-0.f b/gcc/testsuite/g77.f-torture/compile/19990525-0.f
new file mode 100644 (file)
index 0000000..5b8d466
--- /dev/null
@@ -0,0 +1,50 @@
+* Mailing-List: contact egcs-bugs-help@egcs.cygnus.com; run by ezmlm
+* Precedence: bulk
+* Sender: owner-egcs-bugs@egcs.cygnus.com
+* From: "Bjorn R. Bjornsson" <brb@halo.hi.is>
+* Subject: g77 char expr. as arg to subroutine bug
+* To: egcs-bugs@egcs.cygnus.com
+* Date: Tue, 25 May 1999 14:45:56 +0000 (GMT)
+* Content-Type: text/plain; charset=US-ASCII
+* X-UIDL: 06000c94269ed6dfe826493e52a818b9
+* 
+* The following bug is in all snapshots starting
+* from April 18.  I have only tested this on Alpha linux,
+* and with FFECOM_FASTER_ARRAY_REFS set to 1.
+* 
+* Run the following through g77:
+* 
+       subroutine      a
+       character*2     string1
+       character*2     string2
+       character*4     string3
+       string1 = 's1'
+       string2 = 's2'
+c
+c the next 2 lines are ok.
+       string3 = (string1 // string2)
+       call b(string1//string2)
+c
+c this line gives gcc/f/com.c:10660: failed assertion `hook'
+       call b((string1//string2))
+       end
+* 
+* the output from:
+* 
+*      /usr/local/egcs-19990418/bin/g77 --verbose -c D.f
+* 
+* is:
+* 
+* on egcs-2.93.19 19990418 (gcc2 ss-980929 experimental) (from FSF-g77 version 0.5.24-19990418)
+* Reading specs from /usr/local/egcs-19990418/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.93.19/specs
+* gcc version egcs-2.93.19 19990418 (gcc2 ss-980929 experimental)
+*  /usr/local/egcs-19990418/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.93.19/f771 D.f -quiet -dumpbase D.f -version -fversion -o /tmp/ccNpaaaa.s
+* GNU F77 version egcs-2.93.19 19990418 (gcc2 ss-980929 experimental) (alphaev56-unknown-linux-gnu) compiled by GNU C version egcs-2.93.19 19990418 (gcc2 ss-980929 experimental).
+* GNU Fortran Front End version 0.5.24-19990418
+* ../../../egcs-19990418/gcc/f/com.c:10351: failed assertion `hook'
+* g77: Internal compiler error: program f771 got fatal signal 6
+* 
+* Yours,
+* 
+* Bjorn R. Bjornsson
+* brb@halo.hi.is