From 47d98fa268b4dd24dd89ae58cd0489910e1fd721 Mon Sep 17 00:00:00 2001 From: Craig Burley Date: Tue, 25 May 1999 16:25:57 +0000 Subject: [PATCH] Fix 19990525-0.f From-SVN: r27145 --- gcc/f/ChangeLog | 7 +++ gcc/f/com.c | 9 ++++ gcc/testsuite/ChangeLog | 4 ++ .../g77.f-torture/compile/19990525-0.f | 50 +++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 gcc/testsuite/g77.f-torture/compile/19990525-0.f diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 92de51ab922..46dcba86db9 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,10 @@ +Tue May 25 17:48:34 1999 Craig Burley + + 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 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 c04c4a77089..bcd029cbd08 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 2c6d66573c9..5be358dc772 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +1999-05-25 Craig Burley + + * 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 00000000000..5b8d466e40d --- /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" +* 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