aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Burley <craig@jcb-sc.com>1999-05-25 16:25:57 +0000
committerCraig Burley <burley@gcc.gnu.org>1999-05-25 12:25:57 -0400
commit47d98fa268b4dd24dd89ae58cd0489910e1fd721 (patch)
tree7ba89122ea968a9abfd741929edc28db5fb19755
parent3ebc5c52e85c509f8f5a167b1eda51e0bbb01507 (diff)
downloadgcc-47d98fa268b4dd24dd89ae58cd0489910e1fd721.zip
gcc-47d98fa268b4dd24dd89ae58cd0489910e1fd721.tar.gz
gcc-47d98fa268b4dd24dd89ae58cd0489910e1fd721.tar.bz2
Fix 19990525-0.f
From-SVN: r27145
-rw-r--r--gcc/f/ChangeLog7
-rw-r--r--gcc/f/com.c9
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g77.f-torture/compile/19990525-0.f50
4 files changed, 70 insertions, 0 deletions
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog
index 92de51a..46dcba8 100644
--- a/gcc/f/ChangeLog
+++ b/gcc/f/ChangeLog
@@ -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:
diff --git a/gcc/f/com.c b/gcc/f/com.c
index c04c4a7..bcd029c 100644
--- a/gcc/f/com.c
+++ b/gcc/f/com.c
@@ -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:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2c6d665..5be358d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..5b8d466
--- /dev/null
+++ b/gcc/testsuite/g77.f-torture/compile/19990525-0.f
@@ -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