This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch,openacc] Fix PR71959: lto dump of callee counts
- From: Julian Brown <julian at codesourcery dot com>
- To: Martin Jambor <mjambor at suse dot cz>
- Cc: Cesar Philippidis <cesar at codesourcery dot com>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, Thomas Schwinge <thomas at codesourcery dot com>
- Date: Fri, 21 Dec 2018 13:23:03 +0000
- Subject: Re: [patch,openacc] Fix PR71959: lto dump of callee counts
- References: <319b3ebd-c601-449b-718c-963b68414224@codesourcery.com> <ri6in2thgwp.fsf@suse.cz> <20181221025636.3f9b377c@squid.athome>
On Fri, 21 Dec 2018 02:56:36 +0000
Julian Brown <julian@codesourcery.com> wrote:
> On Tue, 25 Sep 2018 14:59:18 +0200
> Martin Jambor <mjambor@suse.cz> wrote:
>
> > Hi,
> >
> > I have noticed a few things...
> >
> > On Thu, Sep 20 2018, Cesar Philippidis wrote:
> > > This is another old gomp4 patch that demotes an ICE in PR71959 to
> > > a linker warning. One problem here is that it is not clear if
> > > OpenACC allows individual member functions in C++ classes to be
> > > marked as acc routines. There's another issue accessing member
> > > data inside offloaded regions. We'll add some support for member
> > > data OpenACC 2.6, but some of the OpenACC C++ semantics are still
> > > unclear.
> > >
> > > Is this OK for trunk? I bootstrapped and regtested it for x86_64
> > > Linux with nvptx offloading.
> > [...]
>
> The testcase associated with this bug appears to be fixed by the
> following patch:
>
> https://gcc.gnu.org/ml/gcc-patches/2018-12/msg01167.html
>
> So, it's unclear if there's anything left to do here, and this patch
> can probably be withdrawn.
...or actually, maybe we should keep the new testcase in case of future
regressions. This patch contains just that.
OK to apply?
Thanks,
Julian
ChangeLog
2018-xx-yy Nathan Sidwell <nathan@acm.org>
PR lto/71959
libgomp/
* testsuite/libgomp.oacc-c++/pr71959-a.C: New.
* testsuite/libgomp.oacc-c++/pr71959.C: New.
commit c69dce8ba0ecd7ff620f4f1b8dacc94c61984107
Author: Julian Brown <julian@codesourcery.com>
Date: Wed Dec 19 05:01:58 2018 -0800
Add testcase from PR71959
libgomp/
* testsuite/libgomp.oacc-c++/pr71959-a.C: New.
* testsuite/libgomp.oacc-c++/pr71959.C: New.
diff --git a/libgomp/testsuite/libgomp.oacc-c++/pr71959-a.C b/libgomp/testsuite/libgomp.oacc-c++/pr71959-a.C
new file mode 100644
index 0000000..ec4b14a
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c++/pr71959-a.C
@@ -0,0 +1,31 @@
+// { dg-do compile }
+
+struct Iter
+{
+ int *cursor;
+
+ void ctor (int *cursor_) asm("_ZN4IterC1EPi");
+ int *point () const asm("_ZNK4Iter5pointEv");
+};
+
+#pragma acc routine
+void Iter::ctor (int *cursor_)
+{
+ cursor = cursor_;
+}
+
+#pragma acc routine
+int *Iter::point () const
+{
+ return cursor;
+}
+
+void apply (int (*fn)(), Iter out) asm ("_ZN5Apply5applyEPFivE4Iter");
+
+#pragma acc routine
+void apply (int (*fn)(), struct Iter out)
+{ *out.point() = fn (); }
+
+extern "C" void __gxx_personality_v0 ()
+{
+}
diff --git a/libgomp/testsuite/libgomp.oacc-c++/pr71959.C b/libgomp/testsuite/libgomp.oacc-c++/pr71959.C
new file mode 100644
index 0000000..8508c17
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c++/pr71959.C
@@ -0,0 +1,31 @@
+// { dg-additional-sources "pr71959-a.C" }
+
+// pr lto/71959 ICEd LTO due to mismatch between writing & reading behaviour
+
+struct Iter
+{
+ int *cursor;
+
+ Iter(int *cursor_) : cursor(cursor_) {}
+
+ int *point() const { return cursor; }
+};
+
+#pragma acc routine seq
+int one () { return 1; }
+
+struct Apply
+{
+ static void apply (int (*fn)(), Iter out)
+ { *out.point() = fn (); }
+};
+
+int main ()
+{
+ int x;
+
+#pragma acc parallel copyout(x)
+ Apply::apply (one, Iter (&x));
+
+ return x != 1;
+}