[Bug middle-end/119423] New: ICE in expand_expr_real_1
geoff.ramseyer at cs dot stanford.edu
gcc-bugzilla@gcc.gnu.org
Fri Mar 21 21:29:27 GMT 2025
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119423
Bug ID: 119423
Summary: ICE in expand_expr_real_1
Product: gcc
Version: 14.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: geoff.ramseyer at cs dot stanford.edu
Target Milestone: ---
Created attachment 60850
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=60850&action=edit
Output of building with -fbug-report
Internal compile found when building the following snippet on gcc 14.2.0 (the
homebrew distribution) on macos 15.3.2
The error seems to disappear if the definition of Reader::read() is moved from
event.cc into event.h (full bugreport attached).
// async.h
#pragma once
#include <coroutine>
#include <source_location>
template<typename R> class AwaitableImpl {
public:
using resume_type = R;
AwaitableImpl(AwaitableImpl &&) = delete;
std::suspend_never initial_suspend() const noexcept { return {}; }
void unhandled_exception() {}
struct TailCoro {
bool await_ready() const noexcept { return false; }
std::coroutine_handle<> await_suspend(std::coroutine_handle<>) const
noexcept;
void await_resume() const noexcept;
};
TailCoro final_suspend() noexcept;
bool await_ready() noexcept;
void await_suspend(std::coroutine_handle<> h, std::source_location loc =
std::source_location::current()) noexcept
{}
R await_resume();
protected:
AwaitableImpl() noexcept = default;
~AwaitableImpl();
private:
R result_;
};
template<typename R> struct [[nodiscard]] Async {
struct promise_type : AwaitableImpl<R> {
promise_type(const auto &...args)
{}
Async get_return_object();
void return_value(auto&& r) {}
};
[[nodiscard]] Async(Async &&other) noexcept
{}
promise_type operator co_await();
};
// event.h
#pragma once
#include <source_location>
#include <x23/async.h>
class Reader {
public:
Async<int> f();
Async<int> read(std::source_location sloc = std::source_location::current());
};
// event.cc
#include "x23/async.h"
#include <source_location>
#include "x23/event.h"
Async<int>
Reader::read(std::source_location sloc)
{
co_return co_await f();
}
Build configuration:
Apple M3 system with MacOS Sequoia 15.3.2
gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/homebrew/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/aarch64-apple-darwin24/14/lto-wrapper
Target: aarch64-apple-darwin24
Configured with: ../configure --prefix=/opt/homebrew/opt/gcc
--libdir=/opt/homebrew/opt/gcc/lib/gcc/current --disable-nls
--enable-checking=release --with-gcc-major-version-only
--enable-languages=c,c++,objc,obj-c++,fortran,m2 --program-suffix=-14
--with-gmp=/opt/homebrew/opt/gmp --with-mpfr=/opt/homebrew/opt/mpfr
--with-mpc=/opt/homebrew/opt/libmpc --with-isl=/opt/homebrew/opt/isl
--with-zstd=/opt/homebrew/opt/zstd --with-pkgversion='Homebrew GCC 14.2.0_1'
--with-bugurl=https://github.com/Homebrew/homebrew-core/issues
--with-system-zlib --build=aarch64-apple-darwin24
--with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 14.2.0 (Homebrew GCC 14.2.0_1)
// Target: aarch64-apple-darwin24
// Configured with: ../configure --prefix=/opt/homebrew/opt/gcc
--libdir=/opt/homebrew/opt/gcc/lib/gcc/current --disable-nls
--enable-checking=release --with-gcc-major-version-only
--enable-languages=c,c++,objc,obj-c++,fortran,m2 --program-suffix=-14
--with-gmp=/opt/homebrew/opt/gmp --with-mpfr=/opt/homebrew/opt/mpfr
--with-mpc=/opt/homebrew/opt/libmpc --with-isl=/opt/homebrew/opt/isl
--with-zstd=/opt/homebrew/opt/zstd --with-pkgversion='Homebrew GCC 14.2.0_1'
--with-bugurl=https://github.com/Homebrew/homebrew-core/issues
--with-system-zlib --build=aarch64-apple-darwin24
--with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk
// Thread model: posix
// Supported LTO compression algorithms: zlib zstd
// gcc version 14.2.0 (Homebrew GCC 14.2.0_1)
//
// /Users/geoff/groundhog/hogd/x23/x23/event.cc: In member function 'Async<int>
Reader::read(std::source_location)':
// /Users/geoff/groundhog/hogd/x23/x23/event.cc:7:35: warning: unused parameter
'sloc' [-Wunused-parameter]
// 7 | Reader::read(std::source_location sloc)
// | ~~~~~~~~~~~~~~~~~~~~~^~~~
// In file included from /Users/geoff/groundhog/hogd/x23/x23/event.cc:2:
// /Users/geoff/groundhog/hogd/x23/x23/async.h: In instantiation of 'void
AwaitableImpl<R>::await_suspend(std::__n4861::coroutine_handle<void>,
std::source_location) [with R = int]':
// /Users/geoff/groundhog/hogd/x23/x23/event.cc:9:24: required from here
// 9 | co_return co_await f();
// | ^
// /Users/geoff/groundhog/hogd/x23/x23/async.h:25:46: warning: unused parameter
'h' [-Wunused-parameter]
// 25 | void await_suspend(std::coroutine_handle<> h, std::source_location
loc = std::source_location::current()) noexcept
// | ~~~~~~~~~~~~~~~~~~~~~~~~^
// /Users/geoff/groundhog/hogd/x23/x23/async.h:25:70: warning: unused parameter
'loc' [-Wunused-parameter]
// 25 | void await_suspend(std::coroutine_handle<> h, std::source_location
loc = std::source_location::current()) noexcept
// |
~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// /Users/geoff/groundhog/hogd/x23/x23/async.h: In instantiation of 'void
Async<R>::promise_type::return_value(auto:2&&) [with auto:2 = int; R = int]':
// /Users/geoff/groundhog/hogd/x23/x23/event.cc:9:24: required from here
// 9 | co_return co_await f();
// | ^
// /Users/geoff/groundhog/hogd/x23/x23/async.h:45:30: warning: unused parameter
'r' [-Wunused-parameter]
// 45 | void return_value(auto&& r) {}
// | ~~~~~~~^
// /Users/geoff/groundhog/hogd/x23/x23/async.h: In instantiation of
'Async<R>::promise_type::promise_type(const auto:1& ...) [with auto:1 =
{Reader, std::source_location}; R = int]':
// /Users/geoff/groundhog/hogd/x23/x23/event.cc:10:1: required from here
// 10 | }
// | ^
// /Users/geoff/groundhog/hogd/x23/x23/async.h:42:30: warning: unused parameter
'args#0' [-Wunused-parameter]
// 42 | promise_type(const auto &...args)
// | ~~~~~~~~~~~~^~~~~~~
// /Users/geoff/groundhog/hogd/x23/x23/async.h:42:30: warning: unused parameter
'args#1' [-Wunused-parameter]
// during RTL pass: expand
// /Users/geoff/groundhog/hogd/x23/x23/event.cc:10:1: internal compiler error:
in expand_expr_real_1, at expr.cc:11376
// 10 | }
// | ^
// Please submit a full bug report, with preprocessed source.
// See <https://github.com/Homebrew/homebrew-core/issues> for instructions.
//
/opt/homebrew/Cellar/gcc/14.2.0_1/bin/../libexec/gcc/aarch64-apple-darwin24/14/cc1plus
-quiet -I /Users/geoff/groundhog/hogd/gcc_build/built_headers -I
/Users/geoff/groundhog/hogd/external/wasm3/source -I
/Users/geoff/groundhog/hogd/gcc_build/libsodium_build-prefix/src/libsodium_build-build/src/libsodium/include
-I /Users/geoff/groundhog/hogd/external/libsodium/src/libsodium/include -I
/Users/geoff/groundhog/hogd/external/libsodium/src/libsodium/include/sodium -I
/Users/geoff/groundhog/hogd/x23 -I /Users/geoff/groundhog/hogd/gcc_build/x23
-iprefix
/opt/homebrew/Cellar/gcc/14.2.0_1/bin/../lib/gcc/current/gcc/aarch64-apple-darwin24/14/
-MD CMakeFiles/x23.dir/event.cc.d -MF CMakeFiles/x23.dir/event.cc.o.d -MT
x23/x23/CMakeFiles/x23.dir/event.cc.o -D__DYNAMIC__ -D DEBUG
/Users/geoff/groundhog/hogd/x23/x23/event.cc -fPIC -quiet -dumpdir
CMakeFiles/x23.dir/ -dumpbase event.cc.cc -dumpbase-ext .cc
-mmacosx-version-min=15.0.0 -mlittle-endian -mabi=lp64 -mcpu=apple-m3 -g -O0
-Wextra -Wall -Wno-interference-size -std=c++23 -freport-bug -o -
-frandom-seed=0 -fdump-noaddr
More information about the Gcc-bugs
mailing list