[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 Manuel López-Ibáñez changed: What|Removed |Added Status|NEW |RESOLVED CC||manu at gcc dot gnu.org Known to work||6.0 Resolution|--- |FIXED --- Comment #17 from Manuel López-Ibáñez --- (In reply to fiesh from comment #9) > Ever so little simplified: All three reduced testcases are working in GCC 6.0. I'm closing this as FIXED. Feel free to reopen it if required.
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added Target Milestone|4.8.5 |---
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 Jason Merrill jason at gcc dot gnu.org changed: What|Removed |Added Status|WAITING |NEW --- Comment #16 from Jason Merrill jason at gcc dot gnu.org --- Taking this bug out of WAITING; I don't know why it was there.
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 --- Comment #15 from fiesh at zefix dot tv --- Boost 1.58.0 has a workaround by making one function explicit. (https://github.com/boostorg/polygon/commit/634aa3de29d63dcf02a478ca2b5045c5e9ccb7e0) Since this means the bug becomes irrelevant for me, I suppose the number of people who do find the bug relevant has decreased to zero. ;)
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 --- Comment #14 from fiesh at zefix dot tv --- Bounty: EUR 150 I'd like to try something new and place a bounty on this issue. In order to collect it, you have to provide a patch that is accepted into 4.9 and 5. You also need to be able to write a bill with explicit VAT (we are based in Germany). Alternatively, I'll donate the money to any charitable use of your choice, again subject to requiring a receipt from the charity receiving it.
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 --- Comment #13 from fiesh at zefix dot tv --- Are there any news on this bug? At least for us, this keeps production code from being able to work with any boost 1.55, which is becoming an increasingly bigger issue.
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Target Milestone|4.8.4 |4.8.5 --- Comment #12 from Jakub Jelinek jakub at gcc dot gnu.org --- GCC 4.8.4 has been released.
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 Markus Trippelsdorf trippels at gcc dot gnu.org changed: What|Removed |Added Summary|[4.8/4.9/5 Regression] |Compilation failure where |Compilation failure where |clang does not have |clang does not have |problems |problems| --- Comment #11 from Markus Trippelsdorf trippels at gcc dot gnu.org --- (In reply to Richard Biener from comment #10) What version of GCC works? That is, how is this a regression? You're right it isn't.
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 Markus Trippelsdorf trippels at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |WAITING Last reconfirmed||2014-09-24 CC||trippels at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org --- I cannot reproduce the issue. Please attach a per-processed testcase.
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 --- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org --- You should have read https://gcc.gnu.org/bugs/ and attached preprocessed code anyway, not everyone has Boost 1.56 already installed.
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 --- Comment #3 from fiesh at zefix dot tv --- I wanted to, but the problem is that the ii file is 2.7MB, more than the maximum allowed file size of 1000KB. Should I upload it to a different site? Also I just realized that the problem only occurs with -std=c++11. (Clang works with or without.)
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 --- Comment #4 from Markus Trippelsdorf trippels at gcc dot gnu.org --- (In reply to fiesh from comment #3) I wanted to, but the problem is that the ii file is 2.7MB, more than the maximum allowed file size of 1000KB. Should I upload it to a different site? Also I just realized that the problem only occurs with -std=c++11. (Clang works with or without.) You can use compression. But no need, because I can now reproduce the issue with -std=c++11.
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 --- Comment #5 from Markus Trippelsdorf trippels at gcc dot gnu.org --- Created attachment 33545 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33545action=edit preprocessed testcase Here's the unreduced testcase. I cannot reduce it, because clang doesn't handle all the __builtin_ia32_bsrsi, etc. intrinsics.
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 --- Comment #6 from Markus Trippelsdorf trippels at gcc dot gnu.org --- This is what C-reduce came up with: markus@x4 ~ % cat boost.ii template typename _Tp struct integral_constant { static constexpr _Tp value = 0; }; template typename... struct __and_; template typename _B1 struct __and__B1 : _B1 {}; template typename _Tp _Tp declval(); template typename _From, typename _To struct __is_convertible_helper { template typename _From1, typename _To1, typename = decltype(_To1(declval_From1())) static integral_constantint __test(int); typedef decltype(__test_From, _To(0)) type; }; template typename _From, typename _To struct is_convertible : __is_convertible_helper_From, _To::type {}; template int struct Trans_NS_std_enable_if {}; template class _T1, class struct pair { _T1 first; template class _U1, class _U2, class = typename Trans_NS_std_enable_if __and_is_convertible_U1, _T1::value::type pair(pair_U1, _U2); template class _U2 pair(_T1 __x, _U2) : first(__x) {} }; class point_data; class vector { public: void push_back(pairpairpairpoint_data, point_data, int, int *); }; template typename _Key class map {}; class point_data { public: template typename PointType point_data(PointType); mapint processEvent__iter; vector processEvent__counts_from_scanline; template class cT, class iT void processEvent_(cT, iT, iT) { processEvent__counts_from_scanline.push_back( pairpairpairpoint_data, point_data, int, int *( pairpairpoint_data, point_data, int( pairpoint_data, point_data(0, 0), processEvent__iter), 0)); } void get_dispatch() { get_fracture(0, 0, 0); } template typename output_container, typename concept_type void get_fracture(output_container, int, concept_type) { processEvent_(0, 0, 0); } }; markus@x4 ~ % icpc -std=c++11 -c boost.ii markus@x4 ~ % clang++ -std=c++11 -c boost.ii markus@x4 ~ % g++ -std=c++11 -c boost.ii boost.ii: In instantiation of ‘struct __is_convertible_helperpairpairpoint_data, point_data, int, pairpoint_data, point_data ’: boost.ii:19:8: required from ‘struct is_convertiblepairpairpoint_data, point_data, int, pairpoint_data, point_data ’ boost.ii:8:8: required from ‘struct __and_is_convertiblepairpairpoint_data, point_data, int, pairpoint_data, point_data ’ boost.ii:52:15: recursively required by substitution of ‘templateclass _U2 pair_T1, template-parameter-1-2 ::pair(_T1, _U2) [with _U2 = missing]’ boost.ii:52:15: required from ‘void point_data::processEvent_(cT, iT, iT) [with cT = int; iT = int]’ boost.ii:57:26: required from ‘void point_data::get_fracture(output_container, int, concept_type) [with output_container = int; concept_type = int]’ boost.ii:54:45: required from here boost.ii:16:26: error: no matching function for call to ‘__is_convertible_helperpairpairpoint_data, point_data, int, pairpoint_data, point_data ::__test(int)’ typedef decltype(__test_From, _To(0)) type; ^ boost.ii:16:26: note: candidate is: boost.ii:15:33: note: templateclass _From1, class _To1, class static integral_constantint __is_convertible_helper_From, _To::__test(int) [with _From1 = _From1; _To1 = _To1; template-parameter-2-3 = template-parameter-1-3; _From = pairpairpoint_data, point_data, int; _To = pairpoint_data, point_data] static integral_constantint __test(int); ^ boost.ii:15:33: note: template argument deduction/substitution failed: boost.ii:14:13: error: no matching function for call to ‘pairpoint_data, point_data::pair(pairpairpoint_data, point_data, int)’ typename = decltype(_To1(declval_From1())) ^ boost.ii:14:13: note: candidates are: boost.ii:30:3: note: templateclass _U2 pair_T1, template-parameter-1-2 ::pair(_T1, _U2) pair(_T1 __x, _U2) ^ boost.ii:30:3: note: template argument deduction/substitution failed: boost.ii:14:13: note: candidate expects 2 arguments, 1 provided typename = decltype(_To1(declval_From1())) ^ boost.ii:28:3: note: templateclass _U1, class _U2, class pair_T1, template-parameter-1-2 ::pair(pair_U1, _U2) pair(pair_U1, _U2); ^ boost.ii:28:3: note: template argument deduction/substitution failed: boost.ii:26:13: error: no type named ‘type’ in ‘struct Trans_NS_std_enable_if0’ class = typename Trans_NS_std_enable_if ^ boost.ii:23:8: note: constexpr pairpoint_data, point_data::pair(const pairpoint_data, point_data) struct pair { ^ boost.ii:23:8: note: no known conversion for argument 1 from ‘pairpairpoint_data, point_data, int’ to ‘const pairpoint_data, point_data’ boost.ii:23:8: note: constexpr pairpoint_data, point_data::pair(pairpoint_data, point_data) boost.ii:23:8: note: no known conversion for argument 1 from ‘pairpairpoint_data, point_data, int’ to ‘pairpoint_data, point_data’ boost.ii: In
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 --- Comment #7 from Markus Trippelsdorf trippels at gcc dot gnu.org --- Or a bit more compact and obfuscated: template typename _Tp struct A { static constexpr _Tp value = 0; }; template typename... struct B; template typename _B1 struct B_B1 : _B1 {}; template typename _Tp _Tp declval(); template typename _From, typename _To struct C { template typename _From1, typename _To1, typename = decltype(_To1(declval_From1())) static Aint __test(int); typedef decltype(__test_From, _To(0)) type; }; template typename _From, typename _To struct I : C_From, _To::type {}; template int struct D {}; template class _T1, class struct F { _T1 first; template class _U1, class _U2, class = typename DBI_U1, _T1::value::type F(F_U1, _U2); template class _U2 F(_T1 p1, _U2) : first(p1) {} }; class G; class H { public: void push_back(FFFG, G, int, int *); }; class G { public: template typename PointType G(PointType); H processEvent__counts_from_scanline; template class cT, class iT void processEvent_(cT, iT, iT) { processEvent__counts_from_scanline.push_back( FFFG, G, int, int *(FFG, G, int(FG, G(0, 0), 0), 0)); } void get_dispatch() { get_fracture(0, 0, 0); } template typename output_container, typename concept_type void get_fracture(output_container, int, concept_type) { processEvent_(0, 0, 0); } };
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 --- Comment #8 from Markus Trippelsdorf trippels at gcc dot gnu.org --- template typename _Tp struct A { static constexpr _Tp value = 0; }; template typename... struct B; template typename _B1 struct B_B1 : _B1 {}; template typename _Tp _Tp declval(); template typename _From, typename _To struct C { template typename _From1, typename _To1, typename = decltype(_To1(declval_From1())) static Aint __test(int); typedef decltype(__test_From, _To(0)) type; }; template typename _From, typename _To struct I : C_From, _To::type {}; template int struct D {}; template class _T1, class struct F { _T1 first; template class _U1, class _U2, class = typename DBI_U1, _T1::value::type F(F_U1, _U2); template class _U2 F(_T1 p1, _U2) : first(p1) {} }; class G; class H { public: void push_back(FFFG, G, int, int *); }; class G { public: template typename PointType G(PointType); H processEvent__counts_from_scanline; void processEvent_() { processEvent__counts_from_scanline.push_back( FFFG, G, int, int *(FFG, G, int(FG, G(0, 0), 0), 0)); } };
[Bug c++/63356] Compilation failure where clang does not have problems
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63356 --- Comment #9 from fiesh at zefix dot tv --- Ever so little simplified: struct A {}; template typename _B1 struct B : _B1 {}; template typename _Tp _Tp declval(); template typename _From, typename _To struct C { template typename _From1, typename _To1, typename = decltype(_To1(declval_From1())) static A __test(int); typedef decltype(__test_From, _To(0)) type; }; template typename _From, typename _To struct I : C_From, _To::type {}; template int struct D {}; template class _T1, class struct F { _T1 first; template class _U1, class _U2, class = typename DBI_U1, _T1::value::type F(F_U1, _U2); template class _U2 F(_T1 p1, _U2) : first(p1) {} }; class G; class H { public: void push_back(FFFG, G, int, int *); }; class G { public: template typename PointType G(PointType); H processEvent__counts_from_scanline; void processEvent_() { processEvent__counts_from_scanline.push_back( FFFG, G, int, int *(FFG, G, int(FG, G(0, 0), 0), 0)); } };