X-Git-Url: https://git.tld-linux.org/?p=packages%2Fgcc.git;a=blobdiff_plain;f=pr88419-revert.patch;fp=pr88419-revert.patch;h=a8a06006240a24ede81b0af22734a8d2a1e0dc05;hp=0000000000000000000000000000000000000000;hb=0d32e377ad6998611b46f221e6d0af9a743c7e67;hpb=cc00f70d950469f68a7cbc44826b890e3f1635af diff --git a/pr88419-revert.patch b/pr88419-revert.patch new file mode 100644 index 0000000..a8a0600 --- /dev/null +++ b/pr88419-revert.patch @@ -0,0 +1,47 @@ +# DP: Revert the fix for PC c++/88419, causing PR c++/89906. + +2019-03-08 Jason Merrill + + PR c++/88419 - C++17 ICE with class template arg deduction. + * pt.c (make_template_placeholder): Set TYPE_CANONICAL after + CLASS_PLACEHOLDER_TEMPLATE. + +--- a/gcc/cp/pt.c ++++ b/gcc/cp/pt.c +@@ -26002,10 +26002,8 @@ + tree + make_template_placeholder (tree tmpl) + { +- tree t = make_auto_1 (DECL_NAME (tmpl), false); ++ tree t = make_auto_1 (DECL_NAME (tmpl), true); + CLASS_PLACEHOLDER_TEMPLATE (t) = tmpl; +- /* Our canonical type depends on the placeholder. */ +- TYPE_CANONICAL (t) = canonical_type_parameter (t); + return t; + } + +--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction62.C ++++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction62.C +@@ -1,22 +0,0 @@ +-// PR c++/88419 +-// { dg-do compile { target c++17 } } +- +-template struct ref_view { +- template ref_view(T&&); +-}; +- +-template ref_view(R&) -> ref_view; +- +-struct ref_fn { +- template auto operator()(R r) const +- noexcept(noexcept(ref_view{r})); +-}; +- +-template struct indirect_view { +- indirect_view(R); +-}; +- +-struct indirect_fn { +- template auto operator()(R r) const +- noexcept(noexcept(indirect_view{r})); +-};