kripken wrote: I am seeing a runtime error after this, when using C++23, which looks like a regression. Testcase: ```cpp // A.hpp #include <iostream> struct MyStruct { double m0{-9999.0}; int m1{-12345}; };
constexpr MyStruct default_val; auto compute_area(double l, const MyStruct &val = default_val) -> double { std::cout << "compute_area : val.m0 : " << val.m0 << "\n"; std::cout << "compute_area : val.m1 : " << val.m1 << " \n"; if (val.m1 != -12345) { return val.m0 * l; } return -9999; } // main.cpp //#include "A.hpp" #include <cassert> #include <iostream> auto main() -> int { MyStruct in_val{.m0 = 2.0, .m1 = 1}; std::cout << "main : in_val.m0 : " << in_val.m0 << "\n"; std::cout << "main : in_val.m1 : " << in_val.m1 << " \n\n"; double val = compute_area(1.0, in_val); std::cout << "result = " << val << std::endl; assert(val == 2.0); return 0; } ``` Before this landed, it runs ok: ``` $ build/bin/clang++ a.cpp -std=c++23 && ./a.out main : in_val.m0 : 2 main : in_val.m1 : 1 compute_area : val.m0 : 2 compute_area : val.m1 : 1 result = 2 ``` After this landed, the assert fails: ``` $ build/bin/clang++ a.cpp -std=c++23 && ./a.out main : in_val.m0 : 2 main : in_val.m1 : 1 compute_area : val.m0 : 2 compute_area : val.m1 : -12345 result = -9999 a.out: a.cpp:30: int main(): Assertion `val == 2.0' failed. Aborted (core dumped) ``` (original report: https://github.com/emscripten-core/emscripten/issues/24325) https://github.com/llvm/llvm-project/pull/95474 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits