5.3 Proposed Extensions
Here's a list of proposed extensions for gfortran, in no particular
order. Most of these are necessary to be fully compatible with
existing Fortran compilers, but they are not part of the official
J3 Fortran 95 standard.
5.3.1 Compiler extensions:
- Flag for defining the kind number for default logicals.
- User-specified alignment rules for structures.
- Flag to generate
- Automatically extend single precision constants to double.
- Compile code that conserves memory by dynamically allocating common and
module storage either on stack or heap.
- Flag to cause the compiler to distinguish between upper and lower case
names. The Fortran 95 standard does not distinguish them.
- Compile flag to generate code for array conformance checking (suggest -CC).
- User control of symbol names (underscores, etc).
- Compile setting for maximum size of stack frame size before spilling
parts to static or heap.
- Flag to force local variables into static space.
- Flag to force local variables onto stack.
- Flag to compile lines beginning with “D”.
- Flag to ignore lines beginning with “D”.
- Flag for maximum errors before ending compile.
- Generate code to check for null pointer dereferences – prints locus of
dereference instead of segfaulting. There was some discussion about this
option in the g95 development mailing list.
- Allow setting the default unit number.
- Option to initialize otherwise uninitialized integer and floating
- Support for OpenMP directives. This also requires support from the runtime
library and the rest of the compiler.
- Support for Fortran 200x. This includes several new features including
floating point exceptions, extended use of allocatable arrays, C
interoperability, Parameterizer data types and function pointers.
5.3.2 Environment Options
- Pluggable library modules for random numbers, linear algebra.
LA should use BLAS calling conventions.
- Environment variables controlling actions on arithmetic exceptions like
overflow, underflow, precision loss – Generate NaN, abort, default.
- Set precision for fp units that support it (i387).
- Variable for setting fp rounding mode.
- Variable to fill uninitialized variables with a user-defined bit
- Environment variable controlling filename that is opened for that unit
- Environment variable to clear/trash memory being freed.
- Environment variable to control tracing of allocations and frees.
- Environment variable to display allocated memory at normal program end.
- Environment variable for filename for * IO-unit.
- Environment variable for temporary file directory.
- Environment variable forcing standard output to be line buffered (unix).