summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/usr.bin/gcc/f/ChangeLog18
-rw-r--r--gnu/usr.bin/gcc/f/com.c18
-rw-r--r--gnu/usr.bin/gcc/f/news.texi25
-rw-r--r--gnu/usr.bin/gcc/f/zzz.c2
4 files changed, 57 insertions, 6 deletions
diff --git a/gnu/usr.bin/gcc/f/ChangeLog b/gnu/usr.bin/gcc/f/ChangeLog
index b432f0f3cb7..031133da65e 100644
--- a/gnu/usr.bin/gcc/f/ChangeLog
+++ b/gnu/usr.bin/gcc/f/ChangeLog
@@ -1,3 +1,21 @@
+Sat Feb 1 12:15:09 1997 Craig Burley <burley@gnu.ai.mit.edu>
+
+ * Version 0.5.19.1 released.
+
+ * com.c (ffecom_expr_, ffecom_expr_intrinsic_,
+ ffecom_tree_divide_): FFECOM_gfrtPOW_ZI,
+ FFECOM_gfrtCONJG, FFECOM_gfrtDCONJG,
+ FFECOM_gfrtCCOS, FFECOM_gfrtCDCOS,
+ FFECOM_gfrtCLOG, FFECOM_gfrtCDLOG,
+ FFECOM_gfrtCSIN, FFECOM_gfrtCDSIN,
+ FFECOM_gfrtCSQRT, FFECOM_gfrtCDSQRT,
+ FFECOM_gfrtDIV_CC, FFECOM_gfrtDIV_ZZ: These all require
+ result to _not_ overlap one or more inputs.
+
+Sat Dec 7 07:15:17 1996 Craig Burley <burley@gnu.ai.mit.edu>
+
+ * Version 0.5.19 released.
+
Fri Dec 6 12:23:55 1996 Craig Burley <burley@gnu.ai.mit.edu>
* g77.c: Default to assuming "f77" is in $LANGUAGES, since
diff --git a/gnu/usr.bin/gcc/f/com.c b/gnu/usr.bin/gcc/f/com.c
index 96386eb5bf2..e6661c6b53a 100644
--- a/gnu/usr.bin/gcc/f/com.c
+++ b/gnu/usr.bin/gcc/f/com.c
@@ -2579,14 +2579,17 @@ ffecom_expr_ (ffebld expr, tree dest_tree,
case FFEINFO_basictypeCOMPLEX:
if (ffeinfo_kindtype (ffebld_info (left))
== FFEINFO_kindtypeREAL1)
- code = FFECOM_gfrtPOW_CI;
+ code = FFECOM_gfrtPOW_CI; /* Overlapping result okay. */
else
- code = FFECOM_gfrtPOW_ZI;
+ {
+ code = FFECOM_gfrtPOW_ZI;
+ dest_used = NULL; /* This one doesn't work with overlapping result. */
+ }
break;
default:
assert ("bad pow_*i" == NULL);
- code = FFECOM_gfrtPOW_CI;
+ code = FFECOM_gfrtPOW_CI; /* Overlapping result okay. */
break;
}
if (ffeinfo_kindtype (ffebld_info (left)) != rtkt)
@@ -2633,7 +2636,7 @@ ffecom_expr_ (ffebld expr, tree dest_tree,
FFEINFO_kindtypeREALDOUBLE, 0,
FFETARGET_charactersizeNONE,
FFEEXPR_contextLET);
- code = FFECOM_gfrtPOW_ZZ;
+ code = FFECOM_gfrtPOW_ZZ; /* Overlapping result okay. */
break;
default:
@@ -3360,6 +3363,7 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree,
assert ("bad CONJG kind type" == NULL);
ix = FFECOM_gfrt;
}
+ dest_used = NULL; /* These don't work with overlapping result. */
goto library; /* :::::::::::::::::::: */
case FFEINTRIN_impCOS: /* Plus impCCOS, impCDCOS, impDCOS. */
@@ -3374,6 +3378,7 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree,
assert ("bad COS COMPLEX kind type" == NULL);
ix = FFECOM_gfrt;
}
+ dest_used = NULL; /* These don't work with overlapping result. */
}
else
{
@@ -3438,6 +3443,7 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree,
assert ("bad EXP COMPLEX kind type" == NULL);
ix = FFECOM_gfrt;
}
+ dest_used = NULL; /* These don't work with overlapping result. */
}
else
{
@@ -3513,6 +3519,7 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree,
assert ("bad LOG COMPLEX kind type" == NULL);
ix = FFECOM_gfrt;
}
+ dest_used = NULL; /* These don't work with overlapping result. */
}
else
{
@@ -3666,6 +3673,7 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree,
assert ("bad SIN COMPLEX kind type" == NULL);
ix = FFECOM_gfrt;
}
+ dest_used = NULL; /* These don't work with overlapping result. */
}
else
{
@@ -3705,6 +3713,7 @@ ffecom_expr_intrinsic_ (ffebld expr, tree dest_tree,
assert ("bad SQRT COMPLEX kind type" == NULL);
ix = FFECOM_gfrt;
}
+ dest_used = NULL; /* These don't work with overlapping result. */
}
else
{
@@ -8736,6 +8745,7 @@ ffecom_tree_divide_ (tree tree_type, tree left, tree right,
ix = FFECOM_gfrtDIV_CC;
else
ix = FFECOM_gfrtDIV_ZZ;
+ dest_used = NULL; /* These don't work with overlapping result. */
left = ffecom_1 (ADDR_EXPR,
build_pointer_type (TREE_TYPE (left)),
diff --git a/gnu/usr.bin/gcc/f/news.texi b/gnu/usr.bin/gcc/f/news.texi
index 91b1ef5f54e..f0faa2d7806 100644
--- a/gnu/usr.bin/gcc/f/news.texi
+++ b/gnu/usr.bin/gcc/f/news.texi
@@ -5,7 +5,7 @@
@c The text of this file appears in the file BUGS
@c in the G77 distribution, as well as in the G77 manual.
-@c 1996-12-03
+@c 1996-02-01
@ifclear NEWSONLY
@node News
@@ -20,6 +20,29 @@
@c @samp{libU77} is present and to be built and installed
@c along with the rest of @samp{libf2c}.
+@heading In 0.5.19.1:
+@itemize @bullet
+Code-generation bugs afflicting operations on complex
+data have been fixed.
+
+These bugs occurred when assigning the result of an
+operation to a complex variable (or array element)
+that also served as an input to that operation.
+
+The operations affected by this bug were: @samp{CONJG()},
+@samp{DCONJG()}, @samp{CCOS()}, @samp{CDCOS()},
+@samp{CLOG()}, @samp{CDLOG()}, @samp{CSIN()}, @samp{CDSIN()},
+@samp{CSQRT()}, @samp{CDSQRT()}, complex division, and
+raising a @code{DOUBLE COMPLEX} operand to an @code{INTEGER}
+power.
+(The related generic and @samp{Z}-prefixed intrinsics,
+such as @samp{ZSIN()}, also were affected.)
+
+For example, @samp{C = CSQRT(C)}, @samp{Z = Z/C}, and @samp{Z = Z**I}
+(where @samp{C} is @code{COMPLEX} and @samp{Z} is
+@code{DOUBLE COMPLEX}) have been fixed.
+@end itemize
+
@heading In 0.5.19:
@itemize @bullet
@item
diff --git a/gnu/usr.bin/gcc/f/zzz.c b/gnu/usr.bin/gcc/f/zzz.c
index 55d18a4faca..55ea8226c3f 100644
--- a/gnu/usr.bin/gcc/f/zzz.c
+++ b/gnu/usr.bin/gcc/f/zzz.c
@@ -51,6 +51,6 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#endif /* !defined (__TIME__) */
#endif /* !defined (FFEZZZ_TIME) */
-char *ffezzz_version_string = "0.5.19";
+char *ffezzz_version_string = "0.5.19.1";
char *ffezzz_date = FFEZZZ_DATE;
char *ffezzz_time = FFEZZZ_TIME;