diff options
author | Paolo Carlini <paolo@gcc.gnu.org> | 2017-10-07 16:10:02 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2017-10-07 16:10:02 +0000 |
commit | 53214bd157129d3c2a6e0854479fc4a344523d03 (patch) | |
tree | 37a4be016b811eaa7262b1fe62800135f49f6c78 | |
parent | 5abde510b7e2864c18144c658c4a5d26f8dc12d3 (diff) | |
download | gcc-53214bd157129d3c2a6e0854479fc4a344523d03.zip gcc-53214bd157129d3c2a6e0854479fc4a344523d03.tar.gz gcc-53214bd157129d3c2a6e0854479fc4a344523d03.tar.bz2 |
re PR c++/80805 (ICE in sufficiently complex code with -g (dump_aggr_type))
2017-10-07 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/80805
* g++.dg/cpp0x/pr80805.C: New.
From-SVN: r253510
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/pr80805.C | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr80805.C b/gcc/testsuite/g++.dg/cpp0x/pr80805.C new file mode 100644 index 0000000..a13ee11 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/pr80805.C @@ -0,0 +1,21 @@ +// { dg-do compile { target c++11 } } +// { dg-options "-g" } + +template<class T> struct R { using type = T; }; +template<class F> F r(typename R<F>::type f) { return f; } +template<class F> void s(F) {} +template<bool, class F> void t(F f) { s(r<F>(f)); } +template<bool> struct S {}; +template<class> struct P { constexpr static bool value = false; }; +template<class D> +void g() +{ + constexpr static bool H = P<D>::value; + using X = S<H>; + []() -> X + { + t<false>([]{}); + return X{}; + }(); +} +int main() { g<int>(); } |