diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-02-25 16:01:01 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-02-25 16:01:01 +0100 |
commit | ea229aa8a1bab0770a1fbd65bb577d2dc4925b69 (patch) | |
tree | 6fe6d26fa8226017f5dea638ffa6ff4220dc0f42 | |
parent | b8f412849b4fbc170fcc9cf1053d44cfc4165d48 (diff) | |
download | gcc-ea229aa8a1bab0770a1fbd65bb577d2dc4925b69.zip gcc-ea229aa8a1bab0770a1fbd65bb577d2dc4925b69.tar.gz gcc-ea229aa8a1bab0770a1fbd65bb577d2dc4925b69.tar.bz2 |
re PR c++/89285 (ICE after casting the this pointer in the constructor in C++17 mode)
PR c++/89285
* g++.dg/cpp1y/constexpr-89285-2.C: New test.
From-SVN: r269188
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1y/constexpr-89285-2.C | 20 |
2 files changed, 25 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bbe27aa..70abccc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-02-25 Jakub Jelinek <jakub@redhat.com> + + PR c++/89285 + * g++.dg/cpp1y/constexpr-89285-2.C: New test. + 2019-02-25 Dominique d'Humieres <dominiq@gcc.gnu.org> PR libfortran/89274 diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-89285-2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-89285-2.C new file mode 100644 index 0000000..656bc9c --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-89285-2.C @@ -0,0 +1,20 @@ +// PR c++/89285 +// { dg-do compile { target c++14 } } + +struct A { + int a {}; +}; +struct B { + int b {}; + constexpr B (A *x) { + int *c = &x->a; + while (*c) + c = reinterpret_cast<int *>((reinterpret_cast<char *>(c) + *c)); + *c = reinterpret_cast<char *>(this) - reinterpret_cast<char *>(c); + } +}; +struct C : A { + B bar {this}; +}; + +C foo {}; |