Hi!

Given that several users have run into this, is this (trunk r256891) OK
to commit to open release branches, too?

On Fri, 19 Jan 2018 09:42:08 +0100, Tom de Vries <tom_devr...@mentor.com> wrote:
> On 01/19/2018 01:59 AM, Cesar Philippidis wrote:
> > Here's the updated patch with the changes that you requested. There are
> > no new regressions in trunk. I tested it on my desktop running driver
> > 387.34 on a Pascal GPU.
> > 
> > Is this OK for trunk?
> 
> OK with 'PR target/83790' added to the changelog entry.
> 
> Thanks,
> - Tom
> 
> > 
> > trunk-cuda9.diff
> > 
> > 
> > 2018-01-18  Cesar Philippidis  <ce...@codesourcery.com>
> > 
> >     gcc/
> >     * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
> >     spaces for function labels.
> > 
> >     gcc/testsuite/
> >     * gcc.target/nvptx/indirect_call.c: New test.
> > 
> > diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c
> > index 86fc13f4fc0..4cb87c8ad07 100644
> > --- a/gcc/config/nvptx/nvptx.c
> > +++ b/gcc/config/nvptx/nvptx.c
> > @@ -1899,9 +1899,15 @@ output_init_frag (rtx sym)
> >     
> >     if (sym)
> >       {
> > -      fprintf (asm_out_file, "generic(");
> > +      bool function = (SYMBOL_REF_DECL (sym)
> > +                  && (TREE_CODE (SYMBOL_REF_DECL (sym)) == FUNCTION_DECL));
> > +      if (!function)
> > +   fprintf (asm_out_file, "generic(");
> >         output_address (VOIDmode, sym);
> > -      fprintf (asm_out_file, val ? ") + " : ")");
> > +      if (!function)
> > +   fprintf (asm_out_file, ")");
> > +      if (val)
> > +   fprintf (asm_out_file, " + ");
> >       }
> >   
> >     if (!sym || val)
> > diff --git a/gcc/testsuite/gcc.target/nvptx/indirect_call.c 
> > b/gcc/testsuite/gcc.target/nvptx/indirect_call.c
> > new file mode 100644
> > index 00000000000..39992a7137b
> > --- /dev/null
> > +++ b/gcc/testsuite/gcc.target/nvptx/indirect_call.c
> > @@ -0,0 +1,19 @@
> > +/* { dg-options "-O2 -msoft-stack" } */
> > +/* { dg-do run } */
> > +
> > +int
> > +f1 (int a)
> > +{
> > +  return a + 1;
> > +}
> > +
> > +int (*f2)(int) = f1;
> > +
> > +int
> > +main ()
> > +{
> > +  if (f2 (100) != 101)
> > +    __builtin_abort();
> > +
> > +  return 0;
> > +}


Grüße
 Thomas

Reply via email to