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:
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.
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.
ADDR_EXPRbut with extra information on the fact that the item pointed to won't be modified (a la
Probably the best solution for now, but not quite trivial to implement in the general case.