On Tue, Nov 04, 2014 at 07:41:42AM -0800, Steve Kargl wrote: > On Tue, Nov 04, 2014 at 03:34:43PM +0100, Bernd Schmidt wrote: > > The ptx port by its nature is lacking features that are expected on > > "normal" machines, such as alloca and indirect jumps. We have a subset > > of the C library which contains functions that can be implemented on the > > target (excluding things like file I/O other than printf which is a ptx > > builtin). > > > > It would be good to be able to also build as much of libgfortran as > > possible, and the following patch is what I've been using so far. It > > recognizes the target at configure time and restricts the list of > > compiled files, as well as providing a LIBGFOR_MINIMAL define for #ifdef > > tests. There's also a new file minimal.c which contains alternative > > implementations of some functionality (using printf to write error > > messages rather than fprintf and such). Constructors are currently > > unimplemented on ptx and therefore the init function is commented out. > > > > Comments on the approach, do the Fortran maintainers have a preference > > how this should look? The whole thing is good enough to substantially > > reduce the number of failures when trying to run the Fortran testsuites > > on nvptx (although many remain). > > > > It is unclear to me from reading the diff whether this patch > cause gfortran on ptx to knowingly violate the fortran standard. > If the answer is "yes, this patch causes gfortran on ptx to > violate the standard", then the patch is IMHO unacceptable.
The point is, if the target can implement just a subset of the Fortran (or C or C++) standards, then ideally if you use anything that is not supported would just cause always host fallback, the code will still work, but will not be offloaded. So even supporting a subset of the standard is worthwhile, usually one will just offload the most performance critical parts of his code. Jakub