f77 0.5.19.1.
authordownsj <downsj@openbsd.org>
Wed, 19 Feb 1997 10:36:36 +0000 (10:36 +0000)
committerdownsj <downsj@openbsd.org>
Wed, 19 Feb 1997 10:36:36 +0000 (10:36 +0000)
gnu/usr.bin/gcc/f/ChangeLog
gnu/usr.bin/gcc/f/com.c
gnu/usr.bin/gcc/f/news.texi
gnu/usr.bin/gcc/f/zzz.c

index b432f0f..031133d 100644 (file)
@@ -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
index 96386eb..e6661c6 100644 (file)
@@ -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)),
index 91b1ef5..f0faa2d 100644 (file)
@@ -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
 @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
index 55d18a4..55ea822 100644 (file)
@@ -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;