Copyright (C) 2000-2012 |
GNU Info (g77-295.info)Better WarningsBetter Warnings --------------- Because of how `g77' generates code via the back end, it doesn't always provide warnings the user wants. Consider: PROGRAM X PRINT *, A END Currently, the above is not flagged as a case of using an uninitialized variable, because `g77' generates a run-time library call that looks, to the GBE, like it might actually *modify* `A' at run time. (And, in fact, depending on the previous run-time library call, it would!) Fixing this requires one of the following: * Switch to new library, `libg77', that provides a more "clean" interface, vis-a-vis input, output, and modified arguments, so the GBE can tell what's going on. This would provide a pretty big performance improvement, at least theoretically, and, ultimately, in practice, for some types of code. * Have `g77' pass a pointer to a temporary containing a copy of `A', instead of to `A' itself. The GBE would then complain about the copy operation involving a potentially uninitialized variable. This might also provide a performance boost for some code, because `A' might then end up living in a register, which could help with inner loops. * Have `g77' use a GBE construct similar to `ADDR_EXPR' but with extra information on the fact that the item pointed to won't be modified (a la `const' in C). Probably the best solution for now, but not quite trivial to implement in the general case. Worth considering after `g77' 0.6 is considered pretty solid. automatically generated by info2www version 1.2.2.9 |