📄 changelog.0
字号:
* bad.def (FFEBAD_FILEWIDE_NARGS, FFEBAD_FILEWIDE_NARGS_W, FFEBAD_FILEWIDE_ARG, FFEBAD_FILEWIDE_ARG_W): New diagnostics. * expr.c (ffebad_fulfill_call_): Provide info on each argument to ffeglobal. * global.c, global.h (ffeglobal_proc_def_arg, ffeglobal_proc_def_nargs, ffeglobal_proc_ref_arg, ffeglobal_proc_ref_args): New functions. (ffeglobalArgSummary, ffeglobalArgInfo_): New types.Tue Apr 29 18:35:41 1997 Craig Burley <burley@gnu.ai.mit.edu> More changes to support better tracking of (filewide) globals: * expr.c (ffeexpr_fulfill_call_): New function. (ffeexpr_token_name_lhs_): Call after building procedure reference expression. Also leave info field for ANY-ized expression alone. (ffeexpr_token_arguments_): Ditto.Mon Apr 28 20:04:18 1997 Craig Burley <burley@gnu.ai.mit.edu> Changes to support better tracking of (filewide) globals, mainly to avoid crashes due to inlining: * bad.def: Go back to quoting intrinsic names, (FFEBAD_FILEWIDE_DISAGREEMENT, FFEBAD_FILEWIDE_TIFF, FFEBAD_FILEWIDE_TYPE_MISMATCH): New diagnostics. (FFEBAD_INTRINSIC_EXPIMP, FFEBAD_INTRINSIC_GLOBAL): Reword for clarity. * com.c (ffecom_do_entry_, ffecom_start_progunit_, ffecom_sym_transform_): Accommodate new FFEGLOBAL_typeEXT possibility. * expr.c (ffeexpr_sym_lhs_call_, ffeexpr_sym_lhs_extfunc_, ffeexpr_sym_rhs_actualarg_, ffeexpr_declare_parenthesized_, ffeexpr_paren_rhs_let_, ffeexpr_token_funsubstr_): Fill in real kind info instead of leaving NONE where appropriate. Register references to intrinsics and globals with ffesymbol using new ffesymbol_reference function instead of ffesymbol_globalize. * global.c (ffeglobal_type_string_): New array for new diagnostics. * global.h, global.c: Replace ->init mechanism with ->tick mechanism. Move other common-related members into a substructure of a union, so the proc substructure can be introduced to include members related to externals other than commons. Don't complain about ANY-ized globals; ANY-ize globals once they're complained about, in any case where code generation could become a problem. Handle global entries that have NONE type (seen as intrinsics), EXT type (seen as EXTERNAL), and so on. Keep track of kind and type of externals, both via definition and via reference. Diagnose disagreements about kind or type of externals (such as functions). (ffeglobal_ref_intrinsic, ffeglobal_ref_progunit_): New functions. * stc.c (ffestc_R1207_item, ffestc_R1208_item, ffestc_R1219, ffestc_R1226): Call ffesymbol_reference, not ffesymbol_globalize. * stu.c (ffestu_sym_end_transition, ffestu_sym_exec_transition): Call ffesymbol_reference, not ffesymbol_globalize. * symbol.c (ffesymbol_globalize): Removed... (ffesymbol_reference): ...to this new function, which more generally registers references to symbols, globalizes globals, and calls on the ffeglobal module to check globals filewide. * global.h, global.c: Rename some macros and functions to more clearly distinguish common from other globals. All callers changed. * com.c (ffecom_sym_transform_): Trees describing filewide globals must be allocated on permanent obstack. * expr.c (ffeexpr_token_name_lhs_): Don't generate gratuitous diagnostics for FFEINFO_whereANY case.Thu Apr 17 03:27:18 1997 Craig Burley <burley@gnu.ai.mit.edu> * global.c: Add support for flagging intrinsic/global confusion via warnings. * bad.def (FFEBAD_INTRINSIC_EXPIMP, FFEBAD_INTRINSIC_GLOBAL): New diagnostics. * expr.c (ffeexpr_token_funsubstr_): Ditto. (ffeexpr_sym_lhs_call_): Ditto. (ffeexpr_paren_rhs_let_): Ditto. * stc.c (ffestc_R1208_item): Ditto.Wed Apr 16 22:40:56 1997 Craig Burley <burley@gnu.ai.mit.edu> * expr.c (ffeexpr_declare_parenthesized_): INCLUDE context can't be an intrinsic invocation either.Fri Mar 28 10:43:28 1997 Craig Burley <burley@gnu.ai.mit.edu> * expr.c (ffeexpr_token_arguments_): Make sure top of exprstack is operand before dereferencing operand field. * lex.c (ffelex_prepare_eos_): Fill up truncated hollerith token, so crash on null ->text field doesn't happen later. * stb.c (ffestb_R10014_): If NAMES isn't recognized (or the recognized part is followed in the token by a non-digit), don't try and collect digits, as there might be more than FFEWHERE_indexMAX letters to skip past to do so -- and the code is diagnosed anyway.Thu Mar 27 00:02:48 1997 Craig Burley <burley@gnu.ai.mit.edu> * com.c (ffecom_sym_transform_): Force local adjustable array onto stack. * stc.c (ffestc_R547_item_object): Don't actually put the symbol in COMMON if the symbol has already been EQUIVALENCE'd to a different COMMON area. * equiv.c (ffeequiv_add): Don't actually do anything if there's a disagreement over which COMMON area is involved.Tue Mar 25 03:35:19 1997 Craig Burley <burley@gnu.ai.mit.edu> * com.c (ffecom_transform_common_): If no explicit init of COMMON area, don't actually init it even though storage area suggests it.Mon Mar 24 12:10:08 1997 Craig Burley <burley@gnu.ai.mit.edu> * lex.c (ffelex_image_char_): Avoid overflowing the column counter itself, as well as the card image. * where.c (ffewhere_line_new): Cast ffelex_line_length() to (size_t) so 255 doesn't overflow to 0! * stc.c (ffestc_labeldef_notloop_begin_): Don't gratuitously terminate loop before processing statement, so block doesn't disappear out from under EXIT/CYCLE processing. (ffestc_labeldef_notloop_): Has old code from above function, instead of just calling it. * expr.c (ffeexpr_cb_comma_i_4_): Don't skip over arbitrary token (such as EOS). * com.c (ffecom_init_zero_): Handle RECORD_TYPE and UNION_TYPE so -fno-zeros works with -femulated-complex.1997-03-12 Dave Love <d.love@dl.ac.uk> * intrin.def: New intrinsics INT2, INT8, CPU_TIME. Fix AND, OR, XOR. [Integrated by burley, AND/OR/XOR already fixed, INT8 implementation changed/fixed.]Wed Mar 12 10:40:08 1997 Craig Burley <burley@gnu.ai.mit.edu> * Make-lang.in ($(srcdir)/f/intdoc.texi): Simplify rules so building f/intdoc is not always necessary; remove f/intdoc after running it if it is built.Tue Mar 11 23:42:00 1997 Craig Burley <burley@gnu.ai.mit.edu> * intrin.def (FFEINTRIN_impAND, FFEINTRIN_impOR, FFEINTRIN_impXOR): Use the IAND, IOR, and IEOR implementations of these, instead of crashing in ffecom_expr_intrinsic_ or adding case labels there.Mon Mar 10 22:51:23 1997 Craig Burley <burley@gnu.ai.mit.edu> * intdoc.c: Fix so any C compiler can compile this.Fri Feb 28 13:16:50 1997 Craig Burley <burley@gnu.ai.mit.edu> * Version 0.5.20 released.Fri Feb 28 01:45:25 1997 Craig Burley <burley@gnu.ai.mit.edu> * Make-lang.in (RUNTIMESTAGESTUFF, LIBU77STAGESTUFF): Move some files incorrectly in the former to the latter, and add another file or two to the latter. New meanings for (KIND=n), and new denotations in the little language describing intrinsics: * com.c (ffecom_init_0): Assign new meanings. * intdoc.c: Document new meanings. Support the new denotations. * intrin.c: Employ new meanings, mapping them to internal values (which are the same as they ever were for now). Support the new denotations. * intrin.def: Switch DEFIMP table to the new denotations. * intrin.c (ffeintrin_check_): Fix bug that was leaving LOC() and %LOC() returning INTEGER*4 on systems where it should return INTEGER*8. * type.c: Canonicalize function definitions, for etags and such.Wed Feb 26 20:43:03 1997 Craig Burley <burley@gnu.ai.mit.edu> * com.c (ffecom_init_0): Choose INTEGER(KIND=n) types, where n is 2, 3, and 4, according to the new docs instead of according to the old C correspondences (which seem less useful at this point). * equiv.c (ffeequiv_destroy_): New function. (ffeequiv_layout_local_): Use this new function whenever the laying out of a local equivalence chain is aborted for any reason. Otherwise ensure that symbols no longer reference the stale ffeequiv entries that result when they are killed off in this procedure. Also, the rooted symbol is one that has storage, it really is irrelevant whether it has an equiv entry at this point (though the code to remove the equiv entry was put in at the end, just in case). (ffeequiv_kill): When doing internal checks, make sure the victim isn't named by any symbols it points to. Not as complete a check as looking through the entire symbol table (which does matter, since some code in equiv.c used to remove symbols from the lists for an ffeequiv victim but not remove that victim as the symbol's equiv info), but this check did find some real bugs in the code (that were fixed).Mon Feb 24 16:42:13 1997 Craig Burley <burley@gnu.ai.mit.edu> * com.c (ffecom_expr_intrinsic_): Fix a couple of warnings about uninitialized variables. * intrin.c (ffeintrin_check_): Ditto, but there were a couple of _real_ uninitialized-variable _bugs_ here! (ffeintrin_fulfill_specific): Ditto, no real bug here.Sun Feb 23 15:01:20 1997 Craig Burley <burley@gnu.ai.mit.edu> Clean up diagnostics (especially about intrinsics): * bad.def (FFEBAD_UNIMPL_STMT): Remove. (FFEBAD_INTRINSIC_*, FFEBAD_NEED_INTRINSIC): Clean these up so they're friendlier. (FFEBAD_INTRINSIC_CMPAMBIG): New. * intrin.c (ffeintrin_fulfill_generic, ffeintrin_fulfill_specific, ffeintrin_is_intrinsic): Always choose generic or specific name text (which is for doc purposes anyway) over implementation name text (which is for internal use). * intrin.def: Use more descriptive name texts for generics and specifics in cases where the names themselves are not enough (e.g. IDATE, which has two forms). Fix some intrinsic mappings: * intrin.def (FFEINTRIN_specIDINT, FFEINTRIN_specAND, FFEINTRIN_specDFLOAT, FFEINTRIN_specDREAL, FFEINTRIN_specOR, FFEINTRIN_specXOR): Now have their own implementations, instead of borrowing from others. (FFEINTRIN_specAJMAX0, FFEINTRIN_specAJMIN0, FFEINTRIN_specBJTEST, FFEINTRIN_specDFLOTJ, FFEINTRIN_specFLOATJ, FFEINTRIN_specJIABS, FFEINTRIN_specJIAND, FFEINTRIN_specJIBCLR, FFEINTRIN_specJIBITS, FFEINTRIN_specJIBSET, FFEINTRIN_specJIDIM, FFEINTRIN_specJIDINT, FFEINTRIN_specJIDNNT, FFEINTRIN_specJIEOR, FFEINTRIN_specJIFIX, FFEINTRIN_specJINT, FFEINTRIN_specJIOR, FFEINTRIN_specJISHFT, FFEINTRIN_specJISHFTC, FFEINTRIN_specJISIN, FFEINTRIN_specJMAX0, FFEINTRIN_specJMAX1, FFEINTRIN_specJMIN0, FFEINTRIN_specJMIN1, FFEINTRIN_specJMOD, FFEINTRIN_specJNINT, FFEINTRIN_specJNOT,): Turn these implementations off, since it's not clear just what types they expect in the context of portable Fortran. (DFLOAT): Now in FVZ family, since f2c supports them Support intrinsic inquiry functions (BIT_SIZE, LEN): * intrin.c: Allow `i' in <arg_extra>. * intrin.def (FFEINTRIN_impBIT_SIZE, FFEINTRIN_impLEN): Mark args with `i'.Sat Feb 22 13:34:09 1997 Craig Burley <burley@gnu.ai.mit.edu> Only warn, don't error, for reference to unimplemented intrinsic: * bad.def (FFEBAD_INTRINSIC_UNIMPLW): Warning version of _UNIMPL. * intrin.c (ffeintrin_is_intrinsic): Use new warning version of _UNIMPL (FFEBAD_INTRINSIC_UNIMPLW). Complain about REAL(Z) and AIMAG(Z) (Z is DOUBLE COMPLEX): * bad.def (FFEBAD_INTRINSIC_CMPAMBIG): New diagnostic. * expr.c: Needed #include "intrin.h" anyway. (ffeexpr_token_intrincheck_): New function handles delayed diagnostic for "REAL(REAL(expr)" if next token isn't ")". (ffeexpr_token_arguments_): Do most of the actual checking here. * intrin.h, intrin.c (ffeintrin_fulfill_specific): New argument, check_intrin, to tell caller that intrin is REAL(Z) or AIMAG(Z). All callers updated, mostly to pass NULL in for this. (ffeintrin_check_): Also has new arg check_intrin for same purpose. All callers updated the same way. * intrin.def (FFEINTRIN_impAIMAG): Change return type from "R0" to "RC", to accommodate f2c (and perhaps other non-F90 F77 compilers). * top.h, top.c: New option -fugly-complex. New GNU intrinsics REALPART, IMAGPART, and COMPLEX: * com.c (ffecom_expr_intrinsic_): Implement impCOMPLEX and impREALPART here. (specIMAGPART => specAIMAG.) * intrin.def: Add the intrinsics here. Rename implementations of VXTIDATE and VXTTIME to IDATEVXT and TIMEVXT, so they sort more consistently: * com.c (ffecom_expr_intrinsic_): * intrin.def: Delete intrinsic group `dcp', add `gnu', etc.: * intrin.c (ffeintrin_state_family): FFEINTRIN_familyGNU replaces FFEINTRIN_familyDCP, and gets state from `gnu' group. Get rid of FFEINTRIN_familyF2Z, nobody needs it. Move FFEINTRIN_specDCMPLX from DCP family to FVZ family, as f2c has it. Move FFEINTRIN_specDFLOAT from F2C family to FVZ family. (FFEINTRIN_specZABS, FFEINTRIN_specZCOS, FFEINTRIN_specZEXP, FFEINTRIN_specZLOG, FFEINTRIN_specZSIN, FFEINTRIN_specZSQRT): Move these from F2Z family to F2C family. * intrin.h (FFEINTRIN_familyF2Z, FFEINTRIN_familyDCP): Remove. (FFEINTRIN_familyGNU): Add. * top.h, top.c: Replace `dcp' with `gnu'. * com.c (ffecom_expr_intrinsic_): Clean up by collecting simple conversions into one nice, conceptual place. Fix up some intrinsic subroutines (MVBITS, KILL, UMASK) to properly push and pop call temps, to avoid wasting temp registers. * g77.c (doit): Toon says variables should be defined before being referenced. Spoilsport. * intrin.c (ffeintrin_check_): Now Dave's worried about warnings about uninitialized variables. Okay, so for basic return values 'g' and 's', they _were_ uninitialized -- is determinism really _that_ useful? * intrin.def (FFEINTRIN_impFGETC): Fix STATUS argument so that it is INTENT(OUT) instead of INTENT(IN).1997-02-21 Dave Love <d.love@dl.ac.uk> * intrin.def, com.c: Support Sun-type `short' and `long' intrinsics. Perhaps should also do Microcruft-style `int2'.Thu Feb 20 15:16:53 1997 Craig Burley <burley@gnu.ai.mit.edu> * com.c (ffecom_expr_intrinsic_): Clean up indentation. Support SECONDSUBR intrinsic implementation. Rename SECOND to SECONDFUNC for direct support via library. * g77.c: Fix to return proper status value to shell, by obtaining it from processes it spawns. * intdoc.c: Fix minor typo. * intrin.def: Turn SECOND into generic that maps into function and subroutine forms. * intrin.def: Make FLOAT and SNGL into specific intrinsics. * intrin.def, intrin.h: Change the way DEFGEN and DEFSPEC macros work, to save on verbage.Mon Feb 17 02:08:04 1997 Craig Burley <burley@gnu.ai.mit.edu> New subsystem to automatically generate documentation on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -