* [Bug c++/98056] internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
@ 2020-11-29 20:17 ` lemourin at gmail dot com
2020-11-30 8:38 ` marxin at gcc dot gnu.org
` (24 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: lemourin at gmail dot com @ 2020-11-29 20:17 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
--- Comment #1 from Paweł Wegner <lemourin at gmail dot com> ---
Created attachment 49648
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49648&action=edit
error log
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
2020-11-29 20:17 ` [Bug c++/98056] " lemourin at gmail dot com
@ 2020-11-30 8:38 ` marxin at gcc dot gnu.org
2020-11-30 10:09 ` [Bug c++/98056] ICE tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 since r11-2183-g0f66b8486cea8668 marxin at gcc dot gnu.org
` (23 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: marxin at gcc dot gnu.org @ 2020-11-30 8:38 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2020-11-30
CC| |marxin at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
Confirmed, I'm reducing that..
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] ICE tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
2020-11-29 20:17 ` [Bug c++/98056] " lemourin at gmail dot com
2020-11-30 8:38 ` marxin at gcc dot gnu.org
@ 2020-11-30 10:09 ` marxin at gcc dot gnu.org
2021-03-06 9:52 ` nilsgladitz at gmail dot com
` (22 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: marxin at gcc dot gnu.org @ 2020-11-30 10:09 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |10.3
Summary|internal compiler error: |ICE tree check: expected
|tree check: expected |record_type or union_type
|record_type or union_type |or qual_union_type, have
|or qual_union_type, have |array_type in
|array_type in |build_special_member_call,
|build_special_member_call, |at cp/call.c:9862 since
|at cp/call.c:9862 |r11-2183-g0f66b8486cea8668
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> ---
Before r11-2183-g0f66b8486cea8668 it was rejected.
Reduced test-case:
$ cat cloudstorage.cc.ii
namespace std {
template <typename _Result, typename...> struct coroutine_traits : _Result {};
template <typename = void> struct coroutine_handle {
operator coroutine_handle<>();
};
struct suspend_never {
void await_ready();
void await_suspend(coroutine_handle<>);
void await_resume();
};
} // namespace std
namespace std_ns = std;
namespace coro::stdx {
template <typename...> using coroutine_handle = std_ns::coroutine_handle<>;
}
namespace std {
struct pair {
template <typename _U1, typename _U2> pair(_U1, _U2);
};
template <class> class initializer_list {
int *_M_array;
unsigned long _M_len;
};
int typedef string;
} // namespace std
namespace coro::stdx {
class stop_token {};
} // namespace coro::stdx
namespace coro {
class Task {
public:
void await_ready();
void await_suspend(stdx::coroutine_handle<>);
void await_resume();
struct promise_type {
struct final_awaitable {
void await_ready();
template <typename V> void await_suspend(V);
void await_resume();
};
std::suspend_never initial_suspend();
final_awaitable final_suspend();
void unhandled_exception();
};
};
} // namespace coro
namespace std {
class optional {
public:
template <typename _Up> optional(_Up);
};
} // namespace std
namespace coro::http {
struct Request {
std::optional body;
};
template <typename> concept HttpClient = requires { stdx::stop_token(); };
} // namespace coro::http
namespace coro::cloudstorage {
template <typename T> concept CloudProviderImpl = requires(T stop_token) {
stop_token;
};
template <CloudProviderImpl Impl> class CloudProvider : Impl {
public:
Impl::Impl;
template <http::HttpClient HttpClient>
void RefreshAccessToken(HttpClient http, int refresh_token,
stdx::stop_token stop_token = stdx::stop_token()) {
Impl::RefreshAccessToken(http, refresh_token, stop_token);
}
};
} // namespace coro::cloudstorage
namespace coro::util {
template <typename RequestType>
Task FetchJson(auto, RequestType, stdx::stop_token);
}
namespace coro::http {
template <typename List = std::initializer_list<std::pair>>
int FormDataToString(List);
}
namespace coro::cloudstorage {
class GoogleDrive {
public:
GoogleDrive(int);
template <http::HttpClient HttpClient>
Task RefreshAccessToken(HttpClient http, int refresh_token,
stdx::stop_token stop_token) {
co_await util::FetchJson(
http, http::Request{http::FormDataToString({{"", refresh_token}})},
stop_token);
}
};
} // namespace coro::cloudstorage
using coro::cloudstorage::CloudProvider;
using coro::cloudstorage::GoogleDrive;
int GetGoogleDriveAuthData();
template <coro::http::HttpClient HttpClient>
void GetAccessToken(int *, HttpClient http) {
CloudProvider<GoogleDrive>(GetGoogleDriveAuthData())
.RefreshAccessToken(http, std::string());
}
void CoMain() {
int *event_loop;
void http();
GetAccessToken(event_loop, http);
}
$ g++ cloudstorage.cc.ii -c -fcoroutines -std=gnu++2a
cloudstorage.cc.ii:65:3: warning: access declarations are deprecated in favour
of using-declarations; suggestion: add the ‘using’ keyword [-Wdeprecated]
65 | Impl::Impl;
| ^~~~
cloudstorage.cc.ii: In instantiation of ‘coro::Task
coro::cloudstorage::GoogleDrive::RefreshAccessToken(HttpClient, int,
coro::stdx::stop_token) [with HttpClient = void (*)()]’:
cloudstorage.cc.ii:69:29: required from ‘void
coro::cloudstorage::CloudProvider<Impl>::RefreshAccessToken(HttpClient, int,
coro::stdx::stop_token) [with HttpClient = void (*)(); Impl =
coro::cloudstorage::GoogleDrive]’
cloudstorage.cc.ii:100:26: required from ‘void GetAccessToken(int*,
HttpClient) [with HttpClient = void (*)()]’
cloudstorage.cc.ii:105:34: required from here
cloudstorage.cc.ii:91:3: internal compiler error: tree check: expected
record_type or union_type or qual_union_type, have array_type in
build_special_member_call, at cp/call.c:9862
91 | }
| ^
0x80d3ef tree_check_failed(tree_node const*, char const*, int, char const*,
...)
/home/marxin/Programming/gcc/gcc/tree.c:9810
0x62a1ea tree_check3(tree_node*, char const*, int, char const*, tree_code,
tree_code, tree_code)
/home/marxin/Programming/gcc/gcc/tree.h:3371
0x62a1ea build_special_member_call(tree_node*, tree_node*, vec<tree_node*,
va_gc, vl_embed>**, tree_node*, int, int)
/home/marxin/Programming/gcc/gcc/cp/call.c:9862
0x92c1a4 flatten_await_stmt
/home/marxin/Programming/gcc/gcc/cp/coroutines.cc:2871
0x92bd96 flatten_await_stmt
/home/marxin/Programming/gcc/gcc/cp/coroutines.cc:2889
0x92bd96 flatten_await_stmt
/home/marxin/Programming/gcc/gcc/cp/coroutines.cc:2889
0x92bd96 flatten_await_stmt
/home/marxin/Programming/gcc/gcc/cp/coroutines.cc:2889
0x92bd96 flatten_await_stmt
/home/marxin/Programming/gcc/gcc/cp/coroutines.cc:2889
0x92d5fb maybe_promote_temps
/home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3074
0x92d5fb await_statement_walker
/home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3579
0x132093a walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
/home/marxin/Programming/gcc/gcc/tree.c:12089
0x92d100 await_statement_walker
/home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3339
0x132093a walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
/home/marxin/Programming/gcc/gcc/tree.c:12089
0x1320ade walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
/home/marxin/Programming/gcc/gcc/tree.c:12425
0x92d100 await_statement_walker
/home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3339
0x132093a walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
/home/marxin/Programming/gcc/gcc/tree.c:12089
0x92d7de await_statement_walker
/home/marxin/Programming/gcc/gcc/cp/coroutines.cc:3327
0x132093a walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
/home/marxin/Programming/gcc/gcc/tree.c:12089
0x928abc morph_fn_to_coro(tree_node*, tree_node**, tree_node**)
/home/marxin/Programming/gcc/gcc/cp/coroutines.cc:4166
0x973e71 finish_function(bool)
/home/marxin/Programming/gcc/gcc/cp/decl.c:16982
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] ICE tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (2 preceding siblings ...)
2020-11-30 10:09 ` [Bug c++/98056] ICE tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 since r11-2183-g0f66b8486cea8668 marxin at gcc dot gnu.org
@ 2021-03-06 9:52 ` nilsgladitz at gmail dot com
2021-03-06 10:04 ` iains at gcc dot gnu.org
` (21 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: nilsgladitz at gmail dot com @ 2021-03-06 9:52 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
--- Comment #4 from Nils Gladitz <nilsgladitz at gmail dot com> ---
Not sure if this is helpful at all but I think I ran into the same issue and
reduced it to the following which is slightly shorter but also keeps the
standard C++ includes intact (manually reintroduced them after reduction):
#include <coroutine>
#include <initializer_list>
struct a {
a();
};
struct task {
struct promise_type {
std::suspend_always initial_suspend();
std::suspend_always final_suspend() noexcept;
void unhandled_exception();
task get_return_object();
};
std::suspend_always c(a);
a bar(std::initializer_list<a>);
task e() {
co_await c(bar({a{}}));
}
};
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] ICE tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (3 preceding siblings ...)
2021-03-06 9:52 ` nilsgladitz at gmail dot com
@ 2021-03-06 10:04 ` iains at gcc dot gnu.org
2021-03-30 13:13 ` iains at gcc dot gnu.org
` (20 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: iains at gcc dot gnu.org @ 2021-03-06 10:04 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
--- Comment #5 from Iain Sandoe <iains at gcc dot gnu.org> ---
thanks for the reports (I have some idea about where the issue is coming from,
but not fixed yet).
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] ICE tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (4 preceding siblings ...)
2021-03-06 10:04 ` iains at gcc dot gnu.org
@ 2021-03-30 13:13 ` iains at gcc dot gnu.org
2021-04-08 12:02 ` rguenth at gcc dot gnu.org
` (19 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: iains at gcc dot gnu.org @ 2021-03-30 13:13 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Iain Sandoe <iains at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |inf17092 at lehre dot dhbw-stuttga
| |rt.de
--- Comment #6 from Iain Sandoe <iains at gcc dot gnu.org> ---
*** Bug 99827 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] ICE tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (5 preceding siblings ...)
2021-03-30 13:13 ` iains at gcc dot gnu.org
@ 2021-04-08 12:02 ` rguenth at gcc dot gnu.org
2021-04-23 15:47 ` jakub at gcc dot gnu.org
` (18 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: rguenth at gcc dot gnu.org @ 2021-04-08 12:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|10.3 |10.4
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
GCC 10.3 is being released, retargeting bugs to GCC 10.4.
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] ICE tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (6 preceding siblings ...)
2021-04-08 12:02 ` rguenth at gcc dot gnu.org
@ 2021-04-23 15:47 ` jakub at gcc dot gnu.org
2021-06-19 11:21 ` iains at gcc dot gnu.org
` (17 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: jakub at gcc dot gnu.org @ 2021-04-23 15:47 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
*** Bug 100234 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] ICE tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (7 preceding siblings ...)
2021-04-23 15:47 ` jakub at gcc dot gnu.org
@ 2021-06-19 11:21 ` iains at gcc dot gnu.org
2021-07-12 9:01 ` iains at gcc dot gnu.org
` (16 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: iains at gcc dot gnu.org @ 2021-06-19 11:21 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Iain Sandoe <iains at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |greed at ispsystem dot com
--- Comment #9 from Iain Sandoe <iains at gcc dot gnu.org> ---
*** Bug 100901 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] ICE tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (8 preceding siblings ...)
2021-06-19 11:21 ` iains at gcc dot gnu.org
@ 2021-07-12 9:01 ` iains at gcc dot gnu.org
2021-08-16 8:11 ` iains at gcc dot gnu.org
` (15 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: iains at gcc dot gnu.org @ 2021-07-12 9:01 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
--- Comment #10 from Iain Sandoe <iains at gcc dot gnu.org> ---
*** Bug 101420 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] ICE tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (9 preceding siblings ...)
2021-07-12 9:01 ` iains at gcc dot gnu.org
@ 2021-08-16 8:11 ` iains at gcc dot gnu.org
2021-09-30 20:18 ` iains at gcc dot gnu.org
` (14 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: iains at gcc dot gnu.org @ 2021-08-16 8:11 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Iain Sandoe <iains at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rcopley at gmail dot com
--- Comment #11 from Iain Sandoe <iains at gcc dot gnu.org> ---
*** Bug 101907 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] ICE tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (10 preceding siblings ...)
2021-08-16 8:11 ` iains at gcc dot gnu.org
@ 2021-09-30 20:18 ` iains at gcc dot gnu.org
2021-10-06 10:56 ` [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type " avi@cloudius-systems.com
` (13 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: iains at gcc dot gnu.org @ 2021-09-30 20:18 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Iain Sandoe <iains at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |victor.burckel at gmail dot com
--- Comment #12 from Iain Sandoe <iains at gcc dot gnu.org> ---
*** Bug 101144 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (11 preceding siblings ...)
2021-09-30 20:18 ` iains at gcc dot gnu.org
@ 2021-10-06 10:56 ` avi@cloudius-systems.com
2021-10-06 11:48 ` iains at gcc dot gnu.org
` (12 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: avi@cloudius-systems.com @ 2021-10-06 10:56 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
--- Comment #13 from Avi Kivity <avi@cloudius-systems.com> ---
In current master (90c3a62272313bb08cd5d9a948ff2d71af73b294), we don't ICE, but
instead get this error:
coroutine-initializer-list.cc: In member function ‘task task::e()’:
coroutine-initializer-list.cc:23:3: error: array used as initializer
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (12 preceding siblings ...)
2021-10-06 10:56 ` [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type " avi@cloudius-systems.com
@ 2021-10-06 11:48 ` iains at gcc dot gnu.org
2021-10-25 11:41 ` iains at gcc dot gnu.org
` (11 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: iains at gcc dot gnu.org @ 2021-10-06 11:48 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
--- Comment #14 from Iain Sandoe <iains at gcc dot gnu.org> ---
(In reply to Avi Kivity from comment #13)
> In current master (90c3a62272313bb08cd5d9a948ff2d71af73b294), we don't ICE,
> but instead get this error:
>
> coroutine-initializer-list.cc: In member function ‘task task::e()’:
> coroutine-initializer-list.cc:23:3: error: array used as initializer
I have a draft patch for this bug (actually covers several bugs), but it's not
quite ready to post yet - so, I wouldn't expect it to be fixed.
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (13 preceding siblings ...)
2021-10-06 11:48 ` iains at gcc dot gnu.org
@ 2021-10-25 11:41 ` iains at gcc dot gnu.org
2021-12-06 14:56 ` iains at gcc dot gnu.org
` (10 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: iains at gcc dot gnu.org @ 2021-10-25 11:41 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Iain Sandoe <iains at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |brad.nemanich at amd dot com
--- Comment #15 from Iain Sandoe <iains at gcc dot gnu.org> ---
*** Bug 102883 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (14 preceding siblings ...)
2021-10-25 11:41 ` iains at gcc dot gnu.org
@ 2021-12-06 14:56 ` iains at gcc dot gnu.org
2022-03-20 12:25 ` sks_f at mail dot ru
` (9 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: iains at gcc dot gnu.org @ 2021-12-06 14:56 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Iain Sandoe <iains at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |lcw at fb dot com
--- Comment #16 from Iain Sandoe <iains at gcc dot gnu.org> ---
*** Bug 103580 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (15 preceding siblings ...)
2021-12-06 14:56 ` iains at gcc dot gnu.org
@ 2022-03-20 12:25 ` sks_f at mail dot ru
2022-04-18 19:05 ` iains at gcc dot gnu.org
` (8 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: sks_f at mail dot ru @ 2022-03-20 12:25 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Konstantin <sks_f at mail dot ru> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |sks_f at mail dot ru
--- Comment #17 from Konstantin <sks_f at mail dot ru> ---
Bug still exist in 11.2.1:
/ClientHandshake.cpp:64:1: error: array used as initializer
compiler fails on line:
co_await writer().all({ AS_BYTE(m_sessionType), id });
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (16 preceding siblings ...)
2022-03-20 12:25 ` sks_f at mail dot ru
@ 2022-04-18 19:05 ` iains at gcc dot gnu.org
2022-06-28 10:42 ` jakub at gcc dot gnu.org
` (7 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: iains at gcc dot gnu.org @ 2022-04-18 19:05 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Iain Sandoe <iains at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |me at xecycle dot info
--- Comment #18 from Iain Sandoe <iains at gcc dot gnu.org> ---
*** Bug 104020 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (17 preceding siblings ...)
2022-04-18 19:05 ` iains at gcc dot gnu.org
@ 2022-06-28 10:42 ` jakub at gcc dot gnu.org
2022-07-05 11:36 ` charles at yubo dot live
` (6 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: jakub at gcc dot gnu.org @ 2022-06-28 10:42 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|10.4 |10.5
--- Comment #19 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
GCC 10.4 is being released, retargeting bugs to GCC 10.5.
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (18 preceding siblings ...)
2022-06-28 10:42 ` jakub at gcc dot gnu.org
@ 2022-07-05 11:36 ` charles at yubo dot live
2023-03-15 22:29 ` cvs-commit at gcc dot gnu.org
` (5 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: charles at yubo dot live @ 2022-07-05 11:36 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
--- Comment #20 from charles-yubo <charles at yubo dot live> ---
As seen in godbolt, https://godbolt.org/z/qKGdPv94r , it exists in 11.3 and
12.1 with new following message :
error: array used as initializer
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (19 preceding siblings ...)
2022-07-05 11:36 ` charles at yubo dot live
@ 2023-03-15 22:29 ` cvs-commit at gcc dot gnu.org
2023-03-15 23:03 ` avi at scylladb dot com
` (4 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-03-15 22:29 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
--- Comment #21 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Jason Merrill <jason@gcc.gnu.org>:
https://gcc.gnu.org/g:ea4dd8f512979db247c54d6b41377bb73699bcd7
commit r13-6702-gea4dd8f512979db247c54d6b41377bb73699bcd7
Author: Jason Merrill <jason@redhat.com>
Date: Wed Mar 15 16:33:37 2023 -0400
c++: co_await and initializer_list [PR103871]
When flatten_await_stmt processes the backing array for an
initializer_list,
we call cp_build_modify_expr to initialize the promoted variable from the
TARGET_EXPR; that needs to be accepted.
PR c++/103871
PR c++/98056
gcc/cp/ChangeLog:
* typeck.cc (cp_build_modify_expr): Allow array initialization of
DECL_ARTIFICIAL variable.
gcc/testsuite/ChangeLog:
* g++.dg/coroutines/co-await-initlist1.C: New test.
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (20 preceding siblings ...)
2023-03-15 22:29 ` cvs-commit at gcc dot gnu.org
@ 2023-03-15 23:03 ` avi at scylladb dot com
2023-04-18 20:45 ` cvs-commit at gcc dot gnu.org
` (3 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: avi at scylladb dot com @ 2023-03-15 23:03 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
--- Comment #22 from Avi Kivity <avi at scylladb dot com> ---
This is wonderful, thank you.
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (21 preceding siblings ...)
2023-03-15 23:03 ` avi at scylladb dot com
@ 2023-04-18 20:45 ` cvs-commit at gcc dot gnu.org
2023-04-22 0:22 ` cvs-commit at gcc dot gnu.org
` (2 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-04-18 20:45 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
--- Comment #23 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-12 branch has been updated by Jason Merrill
<jason@gcc.gnu.org>:
https://gcc.gnu.org/g:1da2d99c632a90e5af55c8f8db1c11af587bb0a0
commit r12-9434-g1da2d99c632a90e5af55c8f8db1c11af587bb0a0
Author: Jason Merrill <jason@redhat.com>
Date: Wed Mar 15 16:33:37 2023 -0400
c++: co_await and initializer_list [PR103871]
When flatten_await_stmt processes the backing array for an
initializer_list,
we call cp_build_modify_expr to initialize the promoted variable from the
TARGET_EXPR; that needs to be accepted.
PR c++/103871
PR c++/98056
gcc/cp/ChangeLog:
* typeck.cc (cp_build_modify_expr): Allow array initialization of
DECL_ARTIFICIAL variable.
gcc/testsuite/ChangeLog:
* g++.dg/coroutines/co-await-initlist1.C: New test.
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (22 preceding siblings ...)
2023-04-18 20:45 ` cvs-commit at gcc dot gnu.org
@ 2023-04-22 0:22 ` cvs-commit at gcc dot gnu.org
2023-07-07 9:14 ` rguenth at gcc dot gnu.org
2024-05-09 21:01 ` public.melg8 at gmail dot com
25 siblings, 0 replies; 27+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-04-22 0:22 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
--- Comment #24 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Jason Merrill
<jason@gcc.gnu.org>:
https://gcc.gnu.org/g:998e77e55126269b3e67b2f05f0f27a421839673
commit r11-10641-g998e77e55126269b3e67b2f05f0f27a421839673
Author: Jason Merrill <jason@redhat.com>
Date: Wed Mar 15 16:33:37 2023 -0400
c++: co_await and initializer_list [PR103871]
When flatten_await_stmt processes the backing array for an
initializer_list,
we call cp_build_modify_expr to initialize the promoted variable from the
TARGET_EXPR; that needs to be accepted.
PR c++/103871
PR c++/98056
gcc/cp/ChangeLog:
* typeck.c (cp_build_modify_expr): Allow array initialization of
DECL_ARTIFICIAL variable.
gcc/testsuite/ChangeLog:
* g++.dg/coroutines/co-await-initlist1.C: New test.
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (23 preceding siblings ...)
2023-04-22 0:22 ` cvs-commit at gcc dot gnu.org
@ 2023-07-07 9:14 ` rguenth at gcc dot gnu.org
2024-05-09 21:01 ` public.melg8 at gmail dot com
25 siblings, 0 replies; 27+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-07-07 9:14 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Known to work| |11.4.0
Known to fail| |10.5.0
Target Milestone|10.5 |11.4
Resolution|--- |FIXED
--- Comment #25 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed in GCC 11+.
^ permalink raw reply [flat|nested] 27+ messages in thread
* [Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668
2020-11-29 20:15 [Bug c++/98056] New: internal compiler error: tree check: expected record_type or union_type or qual_union_type, have array_type in build_special_member_call, at cp/call.c:9862 lemourin at gmail dot com
` (24 preceding siblings ...)
2023-07-07 9:14 ` rguenth at gcc dot gnu.org
@ 2024-05-09 21:01 ` public.melg8 at gmail dot com
25 siblings, 0 replies; 27+ messages in thread
From: public.melg8 at gmail dot com @ 2024-05-09 21:01 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056
melg melg <public.melg8 at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |public.melg8 at gmail dot com
--- Comment #26 from melg melg <public.melg8 at gmail dot com> ---
I think i found regression of this bug. Or maybe similar type of bug, but with
slightly different reproducible. Using std::vector as container and std::string
as elements of vector, when you take std::vector<std::string> as argument by
value to the coroutine and on call side initialize that argument with single
std::string value using initializer list - you get ICE.
Affected versions (tested on godbolt.org):
x86-64 gcc:
- 11.1, 11.2, 11.4
- 12.3
- 13.1, 13.2
Luckily 14.1 version of gcc doesn't have this error.
Minimal reproducer online: https://godbolt.org/z/drnf3PWsY
Compilation flags: "-std=c++20"
Minimal reproducer source code:
#include <coroutine>
#include <vector>
#include <string>
auto use_vector_of_strings(std::vector<std::string> values) {
struct awaitable {
bool await_ready() { return false; }
void await_suspend(std::coroutine_handle<> h) {
h.resume();
}
void await_resume() {}
};
return awaitable{};
}
struct task {
struct promise_type {
task get_return_object() { return {}; }
std::suspend_never initial_suspend() { return {}; }
std::suspend_never final_suspend() noexcept { return {}; }
void return_void() {}
void unhandled_exception() {}
};
};
task string_test_1() {
std::string test = "hello";
co_await use_vector_of_strings({test}); // ICE here.
}
task string_test_2() {
std::string test = "hello";
std::vector<std::string> container{test}; // No problem here.
co_await use_vector_of_strings(container); // No problem here.
}
int main() {
string_test_1();
string_test_2();
}
ICE error message:
<source>: In function 'task string_test_1()':
<source>:29:1: internal compiler error: in build_special_member_call, at
cp/call.cc:11093
29 | }
| ^
0x1ce62bc internal_error(char const*, ...)
???:0
0x71ee4d fancy_abort(char const*, int, char const*)
???:0
0x10f5a63 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
???:0
0x10f5a63 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
???:0
^ permalink raw reply [flat|nested] 27+ messages in thread