[clang] Reset CodeGenOptions fields for clean module/PCH builds (PR #138256)
Ayush Pareek via cfe-commits
cfe-commits at lists.llvm.org
Tue May 6 02:01:47 PDT 2025
ayushpareek2003 wrote:
> I feel `.clear()` should have a similar semantic with `= {};`. It will be confusing for people to understand this. It will be helpful if you can provide a test to show the difference.
I’ve tried to demonstrate the difference between .clear() and = {}, not a formal test case, but just a minimal example to illustrate the behavior clearly. It’s meant to show how these two approaches behave differently, especially when dealing with types like std::optional.
` std::optional<std::string> A = "clang";
auto B = A;
auto C = A;
B->clear(); // empties the string but keeps the optional engaged
C = {}; // fully resets the optional to disengaged (nullopt)
std::cout << "B has value? " << B.has_value() << "\n"; // it will print 1
std::cout << "C has value? " << C.has_value() << "\n"; // it will print 0
`
I hope it helps clarify why = {} can be a safer and more expressive choice in some situations
https://github.com/llvm/llvm-project/pull/138256
More information about the cfe-commits
mailing list