Next: Gracefully Handle Sensible Bad Code, Previous: Enabling Debug Lines, Up: Missing Features
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_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.