- User Since
- Jul 15 2015, 7:49 AM (401 w, 2 d)
Wed, Mar 22
Rebase. Fix negative number handling.
Tue, Mar 21
Clean up includes
Handle negative numbers WIP. Add integration tests.
Mon, Mar 20
Sat, Mar 18
Do not calculate sizes in non-debug builds
Fri, Mar 17
@aprantl This seems to me like a host compiler bug. I came up with a workaround: https://reviews.llvm.org/D146340.
I've just tried on my mac and can reproduce it with clang from xcode
$ clang --version Apple clang version 14.0.0 (clang-1400.0.29.202) Target: arm64-apple-darwin22.3.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin
Edit: Ah no, now I see that only one range is passed to the enumerate in ExplainOutputStyle.cpp. In that case we have exactly one type passed to the initialized list so I don't see how that'd fail. Checking other things...
Thu, Mar 16
Use adl_size to simplify the implementation and reduce branching.
Wed, Mar 15
Fix outdated usage in AArch64PerfectShuffle
Rebase. Update existing uses of enumerate with non-const lvalue refs.
Replace some enumerate(zip* patterns with n-ary enumerate.
Tue, Mar 14
Update test to check that .contains(x) is preferred over .find(x) when both are available.
Use std::find instead of llvm::find to make the behavior as clear as possible.
FYI, by a quick scan through the patch, it seems like a likely pessimization. Currently, llvm::is_contained performs a linear scan to find the element, while .find(x) is typically O(1) or O(log n). Related discussion on this topic: https://reviews.llvm.org/D146061
Here's an example that landed minutes ago in the tree: https://reviews.llvm.org/D145464
Fix a typo
Delegate to .find when .contains is not available. Improve function documentation.
Fix test failures. Add a regression test.
I discovered I skipped some existing tests, this doesn't always work. Working on a fix.
This is also consistent with how new C++ range functions are defined, e.g., https://en.cppreference.com/w/cpp/ranges/size that calls member .size when available and does iterator subtraction otherwise.
Mon, Mar 13
Update lambda signature
Also include clang/ since there's only one function to update
My plan is to land a series of clean-up commits removing lvalue references to enumerate elements and once these are in land this patch (probably end of this week or beginning of the next week).
Rebase. Add comments clarifying iterator reference_type requirments.
Also rename the test
Rebase. Rename populate function (emulation -> lowering). Do not rely on temporary array refs.
Separately, it would be cool if we could make llvm::is_contained use the contains member when available, instead of doing a linear scan. It seems like a bit of a foot gun to me to have 2 functions with almost identical names but vastly different performance characteristics.