[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2024-05-09 Thread public.melg8 at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

melg melg  changed:

   What|Removed |Added

 CC||public.melg8 at gmail dot com

--- Comment #26 from melg melg  ---
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 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 
#include 
#include 

auto use_vector_of_strings(std::vector 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 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:
: In function 'task string_test_1()':
: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* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set >*))
???:0
0x10f5a63 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set >*))
???:0

[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2023-07-07 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

Richard Biener  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  ---
Fixed in GCC 11+.

[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2023-04-21 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

--- Comment #24 from CVS Commits  ---
The releases/gcc-11 branch has been updated by Jason Merrill
:

https://gcc.gnu.org/g:998e77e55126269b3e67b2f05f0f27a421839673

commit r11-10641-g998e77e55126269b3e67b2f05f0f27a421839673
Author: Jason Merrill 
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.

[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2023-04-18 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

--- Comment #23 from CVS Commits  ---
The releases/gcc-12 branch has been updated by Jason Merrill
:

https://gcc.gnu.org/g:1da2d99c632a90e5af55c8f8db1c11af587bb0a0

commit r12-9434-g1da2d99c632a90e5af55c8f8db1c11af587bb0a0
Author: Jason Merrill 
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.

[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2023-03-15 Thread avi at scylladb dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

--- Comment #22 from Avi Kivity  ---
This is wonderful, thank you.

[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2023-03-15 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

--- Comment #21 from CVS Commits  ---
The trunk branch has been updated by Jason Merrill :

https://gcc.gnu.org/g:ea4dd8f512979db247c54d6b41377bb73699bcd7

commit r13-6702-gea4dd8f512979db247c54d6b41377bb73699bcd7
Author: Jason Merrill 
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.

[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2022-07-05 Thread charles at yubo dot live via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

--- Comment #20 from charles-yubo  ---
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

[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2022-06-28 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

Jakub Jelinek  changed:

   What|Removed |Added

   Target Milestone|10.4|10.5

--- Comment #19 from Jakub Jelinek  ---
GCC 10.4 is being released, retargeting bugs to GCC 10.5.

[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2022-04-18 Thread iains at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

Iain Sandoe  changed:

   What|Removed |Added

 CC||me at xecycle dot info

--- Comment #18 from Iain Sandoe  ---
*** Bug 104020 has been marked as a duplicate of this bug. ***

[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2022-03-20 Thread sks_f at mail dot ru via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

Konstantin  changed:

   What|Removed |Added

 CC||sks_f at mail dot ru

--- Comment #17 from Konstantin  ---
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 });

[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2021-12-06 Thread iains at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

Iain Sandoe  changed:

   What|Removed |Added

 CC||lcw at fb dot com

--- Comment #16 from Iain Sandoe  ---
*** Bug 103580 has been marked as a duplicate of this bug. ***

[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2021-10-25 Thread iains at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

Iain Sandoe  changed:

   What|Removed |Added

 CC||brad.nemanich at amd dot com

--- Comment #15 from Iain Sandoe  ---
*** Bug 102883 has been marked as a duplicate of this bug. ***

[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2021-10-06 Thread iains at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

--- Comment #14 from Iain Sandoe  ---
(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.

[Bug c++/98056] coroutines: ICE tree check: expected record_type or union_type or qual_union_type, have array_type since r11-2183-g0f66b8486cea8668

2021-10-06 Thread avi--- via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98056

--- Comment #13 from Avi Kivity  ---
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