Add ASAN CI build workflow#2914
Conversation
612ba4c to
ca8d2a4
Compare
ca8d2a4 to
1857804
Compare
Merging this PR will not alter performance
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | xshape_initializer[std\:\:array<std\:\:size_t, 4>] |
151.7 ns | 180.8 ns | -16.13% |
| ❌ | Simulation | xexpression_cube[256] |
608.7 µs | 709 µs | -14.15% |
| ❌ | Simulation | xexpression_cube[64] |
41.6 µs | 48.1 µs | -13.4% |
| ❌ | Simulation | xexpression_cube[32] |
13.2 µs | 15 µs | -11.64% |
| ⚡ | Simulation | xshape_access[std\:\:array<std\:\:size_t, 4>] |
154.4 ns | 125.3 ns | +23.28% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing Alex-PLACET:add_asan_ci_build (34032e5) with master (aa2b3ef)
| static std::remove_reference_t<reference> sentinel{}; | ||
| return sentinel; | ||
| } | ||
| } |
There was a problem hiding this comment.
I don't think we should add this check here, since it severely hurts performance. Besides, this class is a "private" tool used for implementing iterators, not a public API, so we can guarantee in out code that we never call this operator when m_it is null. Besides, this behavior is consistent with the implementation of standard iterators:
using vector_type = std::vector<int>;
vector_type::iterator it;
std::cout << *it << std::endl; // Segfault
Description
Add ASAN tests and fix ASAN errors