On Wed, Feb 4, 2015 at 11:38 AM, Jakub Jelinek <ja...@redhat.com> wrote:
> On Fri, Jan 16, 2015 at 11:45:40AM +0100, Richard Biener wrote:
>> On Thu, Jan 15, 2015 at 7:35 PM, Jeff Law <l...@redhat.com> wrote:
>> > On 11/20/14 05:33, Bernd Schmidt wrote:
>> >>
>> >> Now that I've managed to put together and test all the submitted OpenACC
>> >> patches I found there was one piece missing. The problem is that omp-low
>> >> on the host likes to generate function names like "_main._omp_fn". On
>> >> ptx, the dot is not allowed in identifiers, so we have to rewrite this
>> >> to use a dollar sign.
>> >>
>> >> The patch below does this at the lto-read stage. Bootstrapped on
>> >> x86_64-linux, ok if testing is successful?
>> >
>> > Was expecting Richi or Honza to review this...  They certainly know the LTO
>> > bits far better than I.  Or have you ultimately addressed this issue some
>> > other way?
>>
>> I don't like the validize_symbol_for_target thing - you create proper
>> symbols elsewhere from the start - what's left to fix?  IMHO we should
>> have a single helper somewhere for concatenating with some separator.
>
> The problem is that the host compiler does not and cannot know what
> characters are valid or invalid on the offloading target (and, especially if
> you have multiple of them, as we do now, where some of the .$_ characters
> are valid and others are not).
> The only universally available character is _ I assume, but that one has the
> problem that users can type that in their code and clash with the internal
> symbols.  And, if we do not want to use _ from the beginning, what do you
> suggest otherwise?  Also note that normally the same functions are emitted
> for both host and offloading target, you don't have different symbol names
> for host and different for what you want to stream to the offloading LTO
> sections.
>
> So I think something like Bernd's patch is the way to go.  Another
> alternative is to pick up some completely different character not valid
> in any identifiers, and do two transformations of the names.  When streaming
> offloading LTO from the host compiler, mangle the $ and . characters in
> names to some other character, say %, and then when streaming the offloading
> LTO into the offloading compiler, remap the % (or whatever) character to
> the best internal symbol character there - ., $ or _ (in that order?).
> But Bernd's patch looks simpler than that.

Bernds patch is ok with the unrelated gcc.c hunk removed.

Thanks,
Richard.

>         Jakub

Reply via email to