https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102876
Bug ID: 102876 Summary: GCC fails to use constant initialization even when it knows the value to initialize Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: redbeard0531 at gmail dot com Target Milestone: --- See: https://godbolt.org/z/KnKv9j8b9 #include <chrono> using namespace std::literals; /*not constexpr*/ inline std::chrono::sys_days compute_days() { return 1776y/7/4; } std::chrono::sys_days BURN_IN_TO_BINARY = compute_days(); Clang and MSVC both correctly burn BURN_IN_TO_BINARY into the binary image with the correct value. Even with -O3, gcc zero-initializes it then uses a dynamic initializer to complete the initialization. Both are valid implementation strategies according to https://eel.is/c++draft/basic.start.static#3, however, I think the strategy used by clang and MSVC is clearly superior QoI here.