mirror of git://gcc.gnu.org/git/gcc.git
Add testcase from PR71959
libgomp/ PR lto/71959 * testsuite/libgomp.oacc-c++/pr71959-aux.cc: New. * testsuite/libgomp.oacc-c++/pr71959.C: New. Co-Authored-By: Julian Brown <julian@codesourcery.com> From-SVN: r267806
This commit is contained in:
parent
ae8792cb3b
commit
e222497dcb
|
|
@ -1,3 +1,10 @@
|
||||||
|
2019-01-10 Nathan Sidwell <nathan@acm.org>
|
||||||
|
Julian Brown <julian@codesourcery.com>
|
||||||
|
|
||||||
|
PR lto/71959
|
||||||
|
* testsuite/libgomp.oacc-c++/pr71959-aux.cc: New.
|
||||||
|
* testsuite/libgomp.oacc-c++/pr71959.C: New.
|
||||||
|
|
||||||
2019-01-09 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
2019-01-09 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
* config/rtems/bar.c: Include "../linux/bar.c" and delete copy
|
* config/rtems/bar.c: Include "../linux/bar.c" and delete copy
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
// { dg-do compile }
|
||||||
|
|
||||||
|
#define STR1(X) #X
|
||||||
|
#define STR2(X) STR1(X)
|
||||||
|
#define LABEL(X) STR2(__USER_LABEL_PREFIX__) X
|
||||||
|
|
||||||
|
struct Iter
|
||||||
|
{
|
||||||
|
int *cursor;
|
||||||
|
|
||||||
|
void ctor (int *cursor_) asm (LABEL ("_ZN4IterC1EPi"));
|
||||||
|
int *point () const asm (LABEL ("_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 (LABEL ("_ZN5Apply5applyEPFivE4Iter"));
|
||||||
|
|
||||||
|
#pragma acc routine
|
||||||
|
void apply (int (*fn)(), struct Iter out)
|
||||||
|
{ *out.point() = fn (); }
|
||||||
|
|
||||||
|
extern "C" void __gxx_personality_v0 ()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
// { dg-additional-sources "pr71959-aux.cc" }
|
||||||
|
|
||||||
|
// 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;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue