https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102656
Bug ID: 102656 Summary: ICE on coroutines on -fsanitize=address -O1 Product: gcc Version: 11.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: dprokoptsev at gmail dot com Target Milestone: --- Here's the minimal example I've been able to come up with: // ICEs on -fcoroutines -O1 -fsanitize=address, on any gcc version between 10.2 and trunk (does compile though on 10.1), checked on godbolt. #include <coroutine> /* 2*/ class promise; /* 3*/ /* 4*/ struct future { /* 5*/ using promise_type = promise; /* 6*/ future() = default; /* 7*/ int x = 0; // commenting out this line resolves the ICE /* 8*/ }; /* 9*/ /*10*/ class promise { /*11*/ public: /*12*/ future get_return_object() noexcept { return {}; } /*13*/ auto initial_suspend() noexcept { return std::suspend_never{}; } /*14*/ auto final_suspend() noexcept { return std::suspend_never{}; } /*15*/ /*16*/ void return_void() noexcept {} /*17*/ void unhandled_exception() {} /*18*/}; /*19*/ /*20*/ future func() { co_return; } gcc-10.2 [x86-64] yields <source>:20:28: internal compiler error: in expand_expr_addr_expr_1, at expr.c:8075 20 | future func() { co_return; }