IMPORTANT: After applying this patch, you must rebuild the Info documentation derived from the Texinfo files in the g77 distribution, as this patch does not include patches to any derived files (to keep the size of the patch file down). Use the following command sequence after applying this patch: cd g77-0.5.19.1; make -k srcdir=. -f f/Make-lang.in f77.rebuilt If that fails due to `makeinfo' not being installed, obtain texinfo-3.9.tar.gz from a GNU distribution site, unpack, build, and install it, and try the above command sequence again. Alternately, instead of using this patch, obtain the full g77 distribution named g77-0.5.19.1.tar.gz. This distribution contains the derived Info documentation. diff -rcp2N g77-0.5.19/f/ChangeLog g77-0.5.19.1/f/ChangeLog *** g77-0.5.19/f/ChangeLog Fri Dec 6 12:48:42 1996 --- g77-0.5.19.1/f/ChangeLog Sat Feb 1 12:10:56 1997 *************** *** 1,2 **** --- 1,20 ---- + Sat Feb 1 12:15:09 1997 Craig Burley + + * 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 + + * Version 0.5.19 released. + Fri Dec 6 12:23:55 1996 Craig Burley diff -rcp2N g77-0.5.19/f/com.c g77-0.5.19.1/f/com.c *** g77-0.5.19/f/com.c Mon Dec 2 00:46:34 1996 --- g77-0.5.19.1/f/com.c Sat Feb 1 12:07:39 1997 *************** ffecom_expr_ (ffebld expr, tree dest_tre *** 2580,2591 **** if (ffeinfo_kindtype (ffebld_info (left)) == FFEINFO_kindtypeREAL1) ! code = FFECOM_gfrtPOW_CI; else ! code = FFECOM_gfrtPOW_ZI; break; default: assert ("bad pow_*i" == NULL); ! code = FFECOM_gfrtPOW_CI; break; } --- 2580,2594 ---- if (ffeinfo_kindtype (ffebld_info (left)) == FFEINFO_kindtypeREAL1) ! code = FFECOM_gfrtPOW_CI; /* Overlapping result okay. */ else ! { ! 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; /* Overlapping result okay. */ break; } *************** ffecom_expr_ (ffebld expr, tree dest_tre *** 2634,2638 **** FFETARGET_charactersizeNONE, FFEEXPR_contextLET); ! code = FFECOM_gfrtPOW_ZZ; break; --- 2637,2641 ---- FFETARGET_charactersizeNONE, FFEEXPR_contextLET); ! code = FFECOM_gfrtPOW_ZZ; /* Overlapping result okay. */ break; *************** ffecom_expr_intrinsic_ (ffebld expr, tre *** 3361,3364 **** --- 3364,3368 ---- ix = FFECOM_gfrt; } + dest_used = NULL; /* These don't work with overlapping result. */ goto library; /* :::::::::::::::::::: */ *************** ffecom_expr_intrinsic_ (ffebld expr, tre *** 3375,3378 **** --- 3379,3383 ---- ix = FFECOM_gfrt; } + dest_used = NULL; /* These don't work with overlapping result. */ } else *************** ffecom_expr_intrinsic_ (ffebld expr, tre *** 3439,3442 **** --- 3444,3448 ---- ix = FFECOM_gfrt; } + dest_used = NULL; /* These don't work with overlapping result. */ } else *************** ffecom_expr_intrinsic_ (ffebld expr, tre *** 3514,3517 **** --- 3520,3524 ---- ix = FFECOM_gfrt; } + dest_used = NULL; /* These don't work with overlapping result. */ } else *************** ffecom_expr_intrinsic_ (ffebld expr, tre *** 3667,3670 **** --- 3674,3678 ---- ix = FFECOM_gfrt; } + dest_used = NULL; /* These don't work with overlapping result. */ } else *************** ffecom_expr_intrinsic_ (ffebld expr, tre *** 3706,3709 **** --- 3714,3718 ---- ix = FFECOM_gfrt; } + dest_used = NULL; /* These don't work with overlapping result. */ } else *************** ffecom_tree_divide_ (tree tree_type, tre *** 8737,8740 **** --- 8746,8750 ---- else ix = FFECOM_gfrtDIV_ZZ; + dest_used = NULL; /* These don't work with overlapping result. */ left = ffecom_1 (ADDR_EXPR, diff -rcp2N g77-0.5.19/f/news.texi g77-0.5.19.1/f/news.texi *** g77-0.5.19/f/news.texi Tue Dec 3 12:28:13 1996 --- g77-0.5.19.1/f/news.texi Sat Feb 1 12:09:38 1997 *************** *** 6,10 **** @c in the G77 distribution, as well as in the G77 manual. ! @c 1996-12-03 @ifclear NEWSONLY --- 6,10 ---- @c in the G77 distribution, as well as in the G77 manual. ! @c 1996-02-01 @ifclear NEWSONLY *************** *** 20,23 **** --- 20,46 ---- @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: diff -rcp2N g77-0.5.19/f/zzz.c g77-0.5.19.1/f/zzz.c *** g77-0.5.19/f/zzz.c Sat Dec 7 05:57:23 1996 --- g77-0.5.19.1/f/zzz.c Sat Feb 1 12:09:43 1997 *************** the Free Software Foundation, 59 Temple *** 52,56 **** #endif /* !defined (FFEZZZ_TIME) */ ! char *ffezzz_version_string = "0.5.19"; char *ffezzz_date = FFEZZZ_DATE; char *ffezzz_time = FFEZZZ_TIME; --- 52,56 ---- #endif /* !defined (FFEZZZ_TIME) */ ! char *ffezzz_version_string = "0.5.19.1"; char *ffezzz_date = FFEZZZ_DATE; char *ffezzz_time = FFEZZZ_TIME;