<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/98843>98843</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
ASAN and/or UBSAN missing cases depending on optimization level
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
janwilmans
</td>
</tr>
</table>
<pre>
https://cppcoach.godbolt.org/z/34TPh8vPh
```
#include <vector>
char example(const std::vector<char> v)
{
return v[2];
}
int main()
{
std::vector<char> values;
values.resize(10);
values.resize(1);
example(values);
}
```
observations:
- gcc14 catches this case with `-fsanitize=address,undefined` at all levels (just as an aside)
- gcc14 misses this case with just `-fsanitize=address` at all levels above -O0 (just as an aside)
- clang18 catches this case with `-fsanitize=address` at -O0
- clang18 misses this case with `-fsanitize=address` at -O1 or higher, and adding `-fsanitize=address,undefined` makes no difference.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVN1yszYQfRpxs2OPkLCNL7jwT7hsMtP2AYS0BqVC8mgFafP0HWySuHGa7_tmGMHO7p5z9iBJEdnWI1ZstWerY6aG1IVYPSv_Yl2vPGVNMP9UXUpnYnLHRM1Erc9nHZTulm0wTXBpGWLLRP3KRC2LP566cnzqGD8yvpvXNZ-fayik9doNBoHJw4g6hcjkw22H7lQE_Fv1Z4dMlDp4SkDJTBLk7q3lMJUx-QAjE9u5fbO_fgAARExD9DCy1V6w1ZHJ_VvR8ZbM-gS9sp6J8mucb4iVG5Deged4GZHs6yQ85xOivMG6q_hPwcfIM_JN8kP1Jzsva2gI46iSDX76UXCbW0CrdV6AVkl3SJA6S6AVIbzY1AFb88WJlLdpkiSPypiIREwcBm_wZD0atuagEijnwOGIjgCYKJ8HSqAIlAdF1uC7e2-EvSW657u0_R_pHZFqwoiweOTfMs7zwgK0U77Ny18d9sq7eOR3QF8P8SOcHEKEzrYdRiYOoLwBZYz17c_a3au_kMAHMPZ0wohe43LWlplKmq3cqgyrfCNyzrnIZdZVpxVKrramNCdRrsR6zRuVl3wj8i1uuSgyWwkuCr7JCyHleiWXelNqbuS6wdzkp7xhBcdeWbd0buync51ZogGrbVkWMnOqQUeXu0IIjy9wSTIxna4sVlPPohlaYgV3lhJ9oCSbHFa733e_TVYwUYcIf-6ncLJ3smWylsDgGf3FpuAhnJPt7etlU1-3QzZE9-kyam3qhmapQ89EPfHNr8U5hmfUiYn6opKYqK9TjJX4NwAA__8wHoQ2">