<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/141858>141858</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            bad compilation with default arguments in clang 20
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          rockwotj
      </td>
    </tr>
</table>

<pre>
    https://godbolt.org/z/5s4GazKEP

```
#include <print>
#include <numeric>
#include <vector>
#include <string>

struct foo {std::string bar;};

const std::vector<foo> foos = {{"1"}, {"2"}, {"3"}};

size_t count(const std::vector<foo>& input = foos) {
  size_t c = 0;
  for (const foo& f : input) {
    c += f.bar.size();
  }
  return c;
}

int main() {
    std::print("answer 1: {}\n", count());
 std::print("answer 2: {}\n", count({{"1"}, {"2"}}));
 std::print("answer 3: {}\n", count());
}
```

When compiled in clang 20 we get 3 printed 3 times, while in clang 19 we get 3, 2, 3 printed. I suspect some kind of over-aggressive optimization is assuming the input to this function is always `foos`.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMlM-OozgQxp_GXEodmTL_cuBAJ53Vai972-PKgAHPgB3Z5UTTT78yoZlodtQzkhWkqvLv-1zlWHqvR6NUzfJXlp8TGWiyrna2-3q39CVpbf-tnoiunomG4YXhZbR9a2c6WDcyvLwzvOQ--0O-__X2N-NNXAXfFm8YCm26OfQKmDhdnTbExNv_EiYsyunuZ6mb6si6n2U8OW3GLcMbTy50BIO1wMpXT310LJpHFbTSMfHKynP8Xes7azzBXvehcxqsZeItcjwwcY6wuBBThhgBeIJHAH8MiC3wpOL1u_qXoLPBEMPqc1GGBWhzDbQKRwcMjyubNwAfqDXJHwoAg3WwgyMGCxiAieZBegZA3IuvK_vQSneIRIYVw-MHLVqPX6coOAPddo41ynijDcEitXlsegLvJ3qMOKZRGn9XDtLoZW3imeUnE1uEp70hUXuX_4SCn1N-OaMY-z0l8dt-t7Y8X3fe_DMpA51drnpWPWgD3SzNCMjhrmBUBAJWTdWDANKL8hF_n_Ssvlenx706ZlcH-74D_Ak--KvqCLxdFHzVpgc7gL0p9yLH0Snv9U2BvZJe9LskbQ1oD9L7sMQ_A01qu2dkgSbtYQim28vmu_zmgRV8vYEFPyR9LfqjOMpE1WmZVVlRlFgmU62KKh_KdigHXg6iwLzsZV6lFcqMix6zRNfIMec5VpimyMsDIk87nrZV3_Kh7HOWcbVIPR_m-bbENyXR3gdVp1la5VUyy1bNfn2dENfexHnk58TVccNLG0bPMj5rT_47gjTNqm5lvw3i0YG7pgl6NcgwE0g3hkUZ8s8jSoKbf3ztNE2hPXR2YXiJAtvn5ersF9URw8tq2DO8bJ5vNf4XAAD__28Uju0">