On Wed, Feb 4, 2015 at 12:38 PM, Jakub Jelinek <ja...@redhat.com> wrote: > On Sat, Nov 01, 2014 at 12:57:45PM +0100, Bernd Schmidt wrote: >> This is not against current trunk; it applies to gomp-4_0-branch where it is >> one of the necessary parts to make offloading x86->nvptx work. The issue is >> that the LTO file format depends on the machine_modes enum, it needs to >> match between host and offload target. The easiest way to do this is to just >> use the host-modes.def when compiling an offload compiler. >> >> Ports that want to be hosts for offloading may need to modify their >> modes.def. The patch below contains changes to i386-modes.def which modifies >> XFmode depending on a target switch. I'm not actually entirely sure what to >> do about this. Do we want to make this flag an error when offloading is >> enabled? Or maybe add float format support to the -foffload-abi option? >> >> Thoughts? Ok for the first part of the patch once the other offloading >> patches have gone in (bootstrapped and tested on x86_64-linux)? > > I don't like this at all. > > IMHO instead we should stream in the offloading LTO sections some kind of mode > description table (perhaps limited to the modes actually ever streamed), > and when reading back the offloading LTO sections, let the offloading > compiler remap the modes to its own modes where there is a mapping in > between the two, choose some other mapping (e.g. map various vector modes > the host has but offloading target does not to say BLKmode), or give up > otherwise with offloading (say if you attempt to stream floating point modes > the offloading target doesn't support etc.). > > So perhaps stream for each used mode the mode value, corresponding mode > class, size, precision, inner mode, nunits, and for floating point modes > supposedly somehow encode the real_format (perhaps just add a name <-> > struct real_format mapping for the real.c modes, and map anything else > to "unknown").
I think (also communicated that on IRC) we should instead try not streaming machine-modes at all but generating them at stream-in time via layout_type or layout_decl. Richard. > Jakub