WHAT: To make predefined handles extern to pointers instead of an
address of an extern to a structure.
WHY: To make OMPI more backwards compatible in regards to changes to
structures that define predefined handles.
WHERE: In the trunk. ompi/include/mpi.h.in and places in ompi that
directly use the predefined handles.
The point of this change is to improve the odds that an MPI application
does not have to recompile when changes are made to the OMPI library.
In this case specifically the predefined handles that use the structures
for communicators, groups, ops, datatypes, error handlers, win, file,
An example of the changes for the communicator predefined handles can be
found in the hg tmp workspace at
Note, the one downfall that Jeff and I could think of by doing this is
you potentially add one level of indirection but I believe that will be
a small overhead and if you use one of the predefined handles
repetitively (like in a loop) that the address will probably be stored
in a register once and no additional over should be seen due to this change.