User Details
- User Since
- Aug 28 2017, 11:01 AM (178 w, 2 d)
Sun, Jan 24
Sat, Jan 23
Thu, Jan 14
I appreciate that you're trying to make this be defined behavior, but I honestly don't know why this is UB. I can't think of or find a platform where the underlying OS "trylock" routine would have UB when called on the same thread that owns the lock already. Can somebody with access to the C++ standard provide any hint to why the standard wants this to be UB?
Wed, Jan 13
The test is just broken. Tests are not allowed to modify the source as they run. I'm sorry but I need to revert this. If you need help testing on a read-only source checkout, please let me know.
Dec 18 2020
Dec 14 2020
Thanks. I just verified that reverting this change fixes the second stage regression and was about to commit the revert.
This change is causing second stage build failures on Fedora 33 (x86-64). I'll probably revert this soon, but in the mean time, here is a snippet of the build output:
FAILED: lib/ExecutionEngine/JITLink/CMakeFiles/LLVMJITLink.dir/JITLinkGeneric.cpp.o /p/tllvm/bin/clang++ -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib/ExecutionEngine/JITLink -I/home/dave/ro_s/lp/llvm/lib/ExecutionEngine/JITLink -Iinclude -I/home/dave/ro_s/lp/llvm/include -Werror=switch -Wno-deprecated-copy -stdlib=libc++ -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -fdiagnostics-color -ffunction-sections -fdata-sections -O2 -march=skylake -fno-vectorize -fno-slp-vectorize -fno-tree-slp-vectorize -fno-exceptions -fno-rtti -UNDEBUG -std=c++14 -MD -MT lib/ExecutionEngine/JITLink/CMakeFiles/LLVMJITLink.dir/JITLinkGeneric.cpp.o -MF lib/ExecutionEngine/JITLink/CMakeFiles/LLVMJITLink.dir/JITLinkGeneric.cpp.o.d -o lib/ExecutionEngine/JITLink/CMakeFiles/LLVMJITLink.dir/JITLinkGeneric.cpp.o -c /home/dave/ro_s/lp/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp In file included from /home/dave/ro_s/lp/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.cpp:13: /home/dave/ro_s/lp/llvm/lib/ExecutionEngine/JITLink/JITLinkGeneric.h:150:18: error: invalid operands to binary expression ('llvm::jitlink::LinkGraph::nested_collection_iterator<llvm::pointee_iterator<std::__wrap_iter<const std::unique_ptr<llvm::jitlink::Section> *>, llvm::jitlink::Section>, llvm::detail::DenseSetImpl<llvm::jitlink::Block *, llvm::DenseMap<llvm::jitlink::Block *, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::jitlink::Block *>, llvm::detail::DenseSetPair<llvm::jitlink::Block *>>, llvm::DenseMapInfo<llvm::jitlink::Block *>>::Iterator, llvm::jitlink::Block *, &llvm::jitlink::LinkGraph::getSectionBlocks>' and 'llvm::jitlink::LinkGraph::nested_collection_iterator<llvm::pointee_iterator<std::__wrap_iter<const std::unique_ptr<llvm::jitlink::Section> *>, llvm::jitlink::Section>, llvm::detail::DenseSetImpl<llvm::jitlink::Block *, llvm::DenseMap<llvm::jitlink::Block *, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::jitlink::Block *>, llvm::detail::DenseSetPair<llvm::jitlink::Block *>>, llvm::DenseMapInfo<llvm::jitlink::Block *>>::Iterator, llvm::jitlink::Block *, &llvm::jitlink::LinkGraph::getSectionBlocks>') for (auto *B : G.blocks()) { ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/APInt.h:2037:13: note: candidate function not viable: no known conversion from 'llvm::jitlink::LinkGraph::nested_collection_iterator<llvm::pointee_iterator<std::__wrap_iter<const std::unique_ptr<llvm::jitlink::Section> *>, llvm::jitlink::Section>, llvm::detail::DenseSetImpl<llvm::jitlink::Block *, llvm::DenseMap<llvm::jitlink::Block *, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::jitlink::Block *>, llvm::detail::DenseSetPair<llvm::jitlink::Block *>>, llvm::DenseMapInfo<llvm::jitlink::Block *>>::Iterator, llvm::jitlink::Block *, &llvm::jitlink::LinkGraph::getSectionBlocks>' to 'uint64_t' (aka 'unsigned long') for 1st argument inline bool operator!=(uint64_t V1, const APInt &V2) { return V2 != V1; } ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/APSInt.h:340:13: note: candidate function not viable: no known conversion from 'llvm::jitlink::LinkGraph::nested_collection_iterator<llvm::pointee_iterator<std::__wrap_iter<const std::unique_ptr<llvm::jitlink::Section> *>, llvm::jitlink::Section>, llvm::detail::DenseSetImpl<llvm::jitlink::Block *, llvm::DenseMap<llvm::jitlink::Block *, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::jitlink::Block *>, llvm::detail::DenseSetPair<llvm::jitlink::Block *>>, llvm::DenseMapInfo<llvm::jitlink::Block *>>::Iterator, llvm::jitlink::Block *, &llvm::jitlink::LinkGraph::getSectionBlocks>' to 'int64_t' (aka 'long') for 1st argument inline bool operator!=(int64_t V1, const APSInt &V2) { return V2 != V1; } ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/StringRef.h:904:15: note: candidate function not viable: no known conversion from 'llvm::jitlink::LinkGraph::nested_collection_iterator<llvm::pointee_iterator<std::__wrap_iter<const std::unique_ptr<llvm::jitlink::Section> *>, llvm::jitlink::Section>, llvm::detail::DenseSetImpl<llvm::jitlink::Block *, llvm::DenseMap<llvm::jitlink::Block *, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::jitlink::Block *>, llvm::detail::DenseSetPair<llvm::jitlink::Block *>>, llvm::DenseMapInfo<llvm::jitlink::Block *>>::Iterator, llvm::jitlink::Block *, &llvm::jitlink::LinkGraph::getSectionBlocks>' to 'llvm::StringRef' for 1st argument inline bool operator!=(StringRef LHS, StringRef RHS) { return !(LHS == RHS); } ^ /p/tllvm/bin/../include/c++/v1/system_error:419:1: note: candidate function not viable: no known conversion from 'llvm::jitlink::LinkGraph::nested_collection_iterator<llvm::pointee_iterator<std::__wrap_iter<const std::unique_ptr<llvm::jitlink::Section> *>, llvm::jitlink::Section>, llvm::detail::DenseSetImpl<llvm::jitlink::Block *, llvm::DenseMap<llvm::jitlink::Block *, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::jitlink::Block *>, llvm::detail::DenseSetPair<llvm::jitlink::Block *>>, llvm::DenseMapInfo<llvm::jitlink::Block *>>::Iterator, llvm::jitlink::Block *, &llvm::jitlink::LinkGraph::getSectionBlocks>' to 'const std::error_code' for 1st argument operator!=(const error_code& __x, const error_code& __y) _NOEXCEPT ^ /p/tllvm/bin/../include/c++/v1/system_error:424:1: note: candidate function not viable: no known conversion from 'llvm::jitlink::LinkGraph::nested_collection_iterator<llvm::pointee_iterator<std::__wrap_iter<const std::unique_ptr<llvm::jitlink::Section> *>, llvm::jitlink::Section>, llvm::detail::DenseSetImpl<llvm::jitlink::Block *, llvm::DenseMap<llvm::jitlink::Block *, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::jitlink::Block *>, llvm::detail::DenseSetPair<llvm::jitlink::Block *>>, llvm::DenseMapInfo<llvm::jitlink::Block *>>::Iterator, llvm::jitlink::Block *, &llvm::jitlink::LinkGraph::getSectionBlocks>' to 'const std::error_code' for 1st argument operator!=(const error_code& __x, const error_condition& __y) _NOEXCEPT ^ /p/tllvm/bin/../include/c++/v1/system_error:429:1: note: candidate function not viable: no known conversion from 'llvm::jitlink::LinkGraph::nested_collection_iterator<llvm::pointee_iterator<std::__wrap_iter<const std::unique_ptr<llvm::jitlink::Section> *>, llvm::jitlink::Section>, llvm::detail::DenseSetImpl<llvm::jitlink::Block *, llvm::DenseMap<llvm::jitlink::Block *, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::jitlink::Block *>, llvm::detail::DenseSetPair<llvm::jitlink::Block *>>, llvm::DenseMapInfo<llvm::jitlink::Block *>>::Iterator, llvm::jitlink::Block *, &llvm::jitlink::LinkGraph::getSectionBlocks>' to 'const std::error_condition' for 1st argument operator!=(const error_condition& __x, const error_code& __y) _NOEXCEPT ^ /p/tllvm/bin/../include/c++/v1/system_error:434:1: note: candidate function not viable: no known conversion from 'llvm::jitlink::LinkGraph::nested_collection_iterator<llvm::pointee_iterator<std::__wrap_iter<const std::unique_ptr<llvm::jitlink::Section> *>, llvm::jitlink::Section>, llvm::detail::DenseSetImpl<llvm::jitlink::Block *, llvm::DenseMap<llvm::jitlink::Block *, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::jitlink::Block *>, llvm::detail::DenseSetPair<llvm::jitlink::Block *>>, llvm::DenseMapInfo<llvm::jitlink::Block *>>::Iterator, llvm::jitlink::Block *, &llvm::jitlink::LinkGraph::getSectionBlocks>' to 'const std::error_condition' for 1st argument operator!=(const error_condition& __x, const error_condition& __y) _NOEXCEPT ^ /home/dave/ro_s/lp/llvm/include/llvm/Support/Alignment.h:262:13: note: candidate function not viable: no known conversion from 'llvm::jitlink::LinkGraph::nested_collection_iterator<llvm::pointee_iterator<std::__wrap_iter<const std::unique_ptr<llvm::jitlink::Section> *>, llvm::jitlink::Section>, llvm::detail::DenseSetImpl<llvm::jitlink::Block *, llvm::DenseMap<llvm::jitlink::Block *, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::jitlink::Block *>, llvm::detail::DenseSetPair<llvm::jitlink::Block *>>, llvm::DenseMapInfo<llvm::jitlink::Block *>>::Iterator, llvm::jitlink::Block *, &llvm::jitlink::LinkGraph::getSectionBlocks>' to 'llvm::Align' for 1st argument inline bool operator!=(Align Lhs, uint64_t Rhs) { ^ /home/dave/ro_s/lp/llvm/include/llvm/Support/Alignment.h:287:13: note: candidate function not viable: no known conversion from 'llvm::jitlink::LinkGraph::nested_collection_iterator<llvm::pointee_iterator<std::__wrap_iter<const std::unique_ptr<llvm::jitlink::Section> *>, llvm::jitlink::Section>, llvm::detail::DenseSetImpl<llvm::jitlink::Block *, llvm::DenseMap<llvm::jitlink::Block *, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::jitlink::Block *>, llvm::detail::DenseSetPair<llvm::jitlink::Block *>>, llvm::DenseMapInfo<llvm::jitlink::Block *>>::Iterator, llvm::jitlink::Block *, &llvm::jitlink::LinkGraph::getSectionBlocks>' to 'llvm::MaybeAlign' for 1st argument inline bool operator!=(MaybeAlign Lhs, uint64_t Rhs) { ^ /home/dave/ro_s/lp/llvm/include/llvm/Support/Alignment.h:295:13: note: candidate function not viable: no known conversion from 'llvm::jitlink::LinkGraph::nested_collection_iterator<llvm::pointee_iterator<std::__wrap_iter<const std::unique_ptr<llvm::jitlink::Section> *>, llvm::jitlink::Section>, llvm::detail::DenseSetImpl<llvm::jitlink::Block *, llvm::DenseMap<llvm::jitlink::Block *, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::jitlink::Block *>, llvm::detail::DenseSetPair<llvm::jitlink::Block *>>, llvm::DenseMapInfo<llvm::jitlink::Block *>>::Iterator, llvm::jitlink::Block *, &llvm::jitlink::LinkGraph::getSectionBlocks>' to 'llvm::Align' for 1st argument inline bool operator!=(Align Lhs, Align Rhs) { ^ /p/tllvm/bin/../include/c++/v1/utility:584:1: note: candidate template ignored: could not match 'pair' against 'nested_collection_iterator' operator!=(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y) ^ /p/tllvm/bin/../include/c++/v1/iterator:818:1: note: candidate template ignored: could not match 'reverse_iterator' against 'nested_collection_iterator' operator!=(const reverse_iterator<_Iter1>& __x, const reverse_iterator<_Iter2>& __y) ^ /p/tllvm/bin/../include/c++/v1/iterator:1040:1: note: candidate template ignored: could not match 'istream_iterator' against 'nested_collection_iterator' operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Distance>& __x, ^ /p/tllvm/bin/../include/c++/v1/iterator:1151:6: note: candidate template ignored: could not match 'istreambuf_iterator' against 'nested_collection_iterator' bool operator!=(const istreambuf_iterator<_CharT,_Traits>& __a, ^ /p/tllvm/bin/../include/c++/v1/iterator:1274:1: note: candidate template ignored: could not match 'move_iterator' against 'nested_collection_iterator' operator!=(const move_iterator<_Iter1>& __x, const move_iterator<_Iter2>& __y) ^ /p/tllvm/bin/../include/c++/v1/iterator:1650:1: note: candidate template ignored: could not match '__wrap_iter' against 'nested_collection_iterator' operator!=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter2>& __y) _NOEXCEPT ^ /p/tllvm/bin/../include/c++/v1/iterator:1682:1: note: candidate template ignored: could not match '__wrap_iter' against 'nested_collection_iterator' operator!=(const __wrap_iter<_Iter1>& __x, const __wrap_iter<_Iter1>& __y) _NOEXCEPT ^ /p/tllvm/bin/../include/c++/v1/tuple:1185:1: note: candidate template ignored: could not match 'tuple' against 'nested_collection_iterator' operator!=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) ^ /p/tllvm/bin/../include/c++/v1/memory:1713:6: note: candidate template ignored: could not match 'allocator' against 'nested_collection_iterator' bool operator!=(const allocator<_Tp>&, const allocator<_Up>&) _NOEXCEPT {return false;} ^ /p/tllvm/bin/../include/c++/v1/memory:2642:1: note: candidate template ignored: could not match 'unique_ptr' against 'nested_collection_iterator' operator!=(const unique_ptr<_T1, _D1>& __x, const unique_ptr<_T2, _D2>& __y) {return !(__x == __y);} ^ /p/tllvm/bin/../include/c++/v1/memory:2689:1: note: candidate template ignored: could not match 'unique_ptr' against 'nested_collection_iterator' operator!=(const unique_ptr<_T1, _D1>& __x, nullptr_t) _NOEXCEPT ^ /p/tllvm/bin/../include/c++/v1/memory:2697:1: note: candidate template ignored: could not match 'unique_ptr' against 'nested_collection_iterator' operator!=(nullptr_t, const unique_ptr<_T1, _D1>& __x) _NOEXCEPT ^ /p/tllvm/bin/../include/c++/v1/memory:4082:1: note: candidate template ignored: could not match 'shared_ptr' against 'nested_collection_iterator' operator!=(const shared_ptr<_Tp>& __x, const shared_ptr<_Up>& __y) _NOEXCEPT ^ /p/tllvm/bin/../include/c++/v1/memory:4144:1: note: candidate template ignored: could not match 'shared_ptr' against 'nested_collection_iterator' operator!=(const shared_ptr<_Tp>& __x, nullptr_t) _NOEXCEPT ^ /p/tllvm/bin/../include/c++/v1/memory:4152:1: note: candidate template ignored: could not match 'shared_ptr' against 'nested_collection_iterator' operator!=(nullptr_t, const shared_ptr<_Tp>& __x) _NOEXCEPT ^ /p/tllvm/bin/../include/c++/v1/functional:2599:1: note: candidate template ignored: could not match 'function' against 'nested_collection_iterator' operator!=(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) _NOEXCEPT {return (bool)__f;} ^ /p/tllvm/bin/../include/c++/v1/functional:2604:1: note: candidate template ignored: could not match 'function' against 'nested_collection_iterator' operator!=(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) _NOEXCEPT {return (bool)__f;} ^ /p/tllvm/bin/../include/c++/v1/string_view:664:6: note: candidate template ignored: could not match 'basic_string_view' against 'nested_collection_iterator' bool operator!=(basic_string_view<_CharT, _Traits> __lhs, basic_string_view<_CharT, _Traits> __rhs) _NOEXCEPT ^ /p/tllvm/bin/../include/c++/v1/string_view:673:6: note: candidate template ignored: could not match 'basic_string_view' against 'nested_collection_iterator' bool operator!=(basic_string_view<_CharT, _Traits> __lhs, ^ /p/tllvm/bin/../include/c++/v1/string_view:683:6: note: candidate template ignored: could not match 'basic_string_view' against 'nested_collection_iterator' bool operator!=(typename common_type<basic_string_view<_CharT, _Traits> >::type __lhs, ^ /p/tllvm/bin/../include/c++/v1/string:571:6: note: candidate template ignored: could not match 'fpos' against 'nested_collection_iterator' bool operator!=(const fpos<_StateT>& __x, const fpos<_StateT>& __y) ^ /p/tllvm/bin/../include/c++/v1/string:4072:1: note: candidate template ignored: could not match 'basic_string' against 'nested_collection_iterator' operator!=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, ^ /p/tllvm/bin/../include/c++/v1/string:4081:1: note: candidate template ignored: could not match 'const _CharT *' against 'llvm::jitlink::LinkGraph::nested_collection_iterator<llvm::pointee_iterator<std::__wrap_iter<const std::unique_ptr<llvm::jitlink::Section> *>, llvm::jitlink::Section>, llvm::detail::DenseSetImpl<llvm::jitlink::Block *, llvm::DenseMap<llvm::jitlink::Block *, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<llvm::jitlink::Block *>, llvm::detail::DenseSetPair<llvm::jitlink::Block *>>, llvm::DenseMapInfo<llvm::jitlink::Block *>>::Iterator, llvm::jitlink::Block *, &llvm::jitlink::LinkGraph::getSectionBlocks>' operator!=(const _CharT* __lhs, ^ /p/tllvm/bin/../include/c++/v1/string:4090:1: note: candidate template ignored: could not match 'basic_string' against 'nested_collection_iterator' operator!=(const basic_string<_CharT, _Traits, _Allocator>& __lhs, ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/Optional.h:315:16: note: candidate template ignored: could not match 'Optional' against 'nested_collection_iterator' constexpr bool operator!=(const Optional<T> &X, const Optional<U> &Y) { ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/Optional.h:352:16: note: candidate template ignored: could not match 'Optional' against 'nested_collection_iterator' constexpr bool operator!=(const Optional<T> &X, NoneType) { ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/Optional.h:357:16: note: candidate template ignored: could not match 'Optional' against 'nested_collection_iterator' constexpr bool operator!=(NoneType, const Optional<T> &X) { ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/Optional.h:408:16: note: candidate template ignored: could not match 'Optional' against 'nested_collection_iterator' constexpr bool operator!=(const Optional<T> &X, const T &Y) { ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/Optional.h:413:16: note: candidate template ignored: could not match 'Optional' against 'nested_collection_iterator' constexpr bool operator!=(const T &X, const Optional<T> &Y) { ^ /p/tllvm/bin/../include/c++/v1/array:381:1: note: candidate template ignored: could not match 'array' against 'nested_collection_iterator' operator!=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y) ^ /p/tllvm/bin/../include/c++/v1/vector:3346:1: note: candidate template ignored: could not match 'vector' against 'nested_collection_iterator' operator!=(const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y) ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/ArrayRef.h:541:15: note: candidate template ignored: could not match 'ArrayRef' against 'nested_collection_iterator' inline bool operator!=(ArrayRef<T> LHS, ArrayRef<T> RHS) { ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/ArrayRef.h:546:15: note: candidate template ignored: could not match 'SmallVectorImpl' against 'nested_collection_iterator' inline bool operator!=(SmallVectorImpl<T> &LHS, ArrayRef<T> RHS) { ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/DenseMap.h:704:6: note: candidate template ignored: could not match 'DenseMapBase' against 'nested_collection_iterator' bool operator!=( ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/DenseSet.h:251:6: note: candidate template ignored: could not match 'DenseSetImpl' against 'nested_collection_iterator' bool operator!=(const DenseSetImpl<ValueT, MapTy, ValueInfoT> &LHS, ^ /p/tllvm/bin/../include/c++/v1/map:1614:1: note: candidate template ignored: could not match 'map' against 'nested_collection_iterator' operator!=(const map<_Key, _Tp, _Compare, _Allocator>& __x, ^ /p/tllvm/bin/../include/c++/v1/map:2199:1: note: candidate template ignored: could not match 'multimap' against 'nested_collection_iterator' operator!=(const multimap<_Key, _Tp, _Compare, _Allocator>& __x, ^ /p/tllvm/bin/../include/c++/v1/set:918:1: note: candidate template ignored: could not match 'set' against 'nested_collection_iterator' operator!=(const set<_Key, _Compare, _Allocator>& __x, ^ /p/tllvm/bin/../include/c++/v1/set:1445:1: note: candidate template ignored: could not match 'multiset' against 'nested_collection_iterator' operator!=(const multiset<_Key, _Compare, _Allocator>& __x, ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/PointerUnion.h:241:6: note: candidate template ignored: could not match 'PointerUnion' against 'nested_collection_iterator' bool operator!=(PointerUnion<PTs...> lhs, PointerUnion<PTs...> rhs) { ^ /home/dave/ro_s/lp/llvm/include/llvm/ADT/iterator.h:145:8: note: candidate function not viable: no known conversion from 'nested_collection_iterator<...>' to 'const nested_collection_iterator<...>' for 1st argument bool operator!=(const DerivedT &RHS) const { ^
Nov 24 2020
This is breaking building on Fedora 33 (x86-64). Can we revert this or get a quick fix?
Nov 13 2020
Nov 9 2020
Fixed the malformed diff/patch.
Removed the comment about x86 bias now that more testing exists.
I've rebased and pre-committed AArch64 and PPC tests. This is still NFC.
Nov 6 2020
Nov 5 2020
Oct 29 2020
Oct 28 2020
Rebase. No change.
Oct 27 2020
Hi @spatel – We can certainly remove the code gen tests that should have been handled by earlier optimization passes. Thanks for working on those. :-)
Oct 23 2020
Hi @craig.topper and @spatel – I'd like to break this patch into two parts. This patch is the first part: the mechanism that enables targets to tune the length of "x & (x - 1)" chains used to emulate unsigned greater-than/less-than comparisons against a CTPOP result.
Oct 22 2020
Thanks. Unless less I missed it, we should also add the upper range for count leading/trailing zero too.
@spatel -- Here is the bug you requested: https://bugs.llvm.org/show_bug.cgi?id=47949
Updated CTPOP emulation cost heuristics and test diffs so people can see the fallout. Overall, I tried to aim for the same or fewer number of instructions as before, which should be a win because chains of "x & (x - 1)" don't require memory loads, unlike actual CTPOP emulation.
FYI -- I'm not sure if it'll change the test impact of this patch, but I did commit a bunch of x86 vector popcnt tests to the repository this morning.
Also, this patch ought to be refined to optimize something like CTPOP(x) > 62 into CTPOP(NOT(x)) <= 2 or a chain of (x | (x + 1)) and a final comparison against a mask value instead of zero (whatever is more efficient).
Oct 21 2020
I think I fixed it. Please verify: 87f6de72bcd346bbbf468e9f9a0e9d1bbf0630a9
A git bisect run blamed this patch for breaking the ability to build with a read-only source tree. Can we revert this or make a quick fix?
Oct 19 2020
The tests I want to add shouldn't be affected by this patch. They're for a subsequent patch that I want to contribute that refines this patch.
Sep 27 2020
Hi Jim, this change broke my Fedora 33 Linux (x86) box. Do you think we can get a quick fix or revert this?
Sep 2 2020
And just to be clear, the source directory in my setup is in the home directory. My cron job / "bot" build just builds in /tmp.
Line 18 fails: %lldb -x -b --replay %t.repro >> %t.txt 2>&1
error: reproducer replay failed: warning: home directory '/home/dave' not in VFS
Sep 1 2020
Hello. I have an auto-bisecting multi-stage bot that has identified this change as breaking release (without assertions) testing on Fedora 33 x86-64. Can we get a quick fix or revert this change for now?
Aug 27 2020
Aug 24 2020
Not fighting with how lit, FileCheck, and shell input/output work would help here:
I have an auto-bisecting cron job that has identified the "reland" as breaking the test suite on Fedora 32 (x86). Is there a quick fix or can we revert the reland?
Aug 20 2020
Why were static "get" methods preferred over simply marking the constructor explicit? For example, if the constructor is marked explicit, then this is what users see:
Aug 18 2020
Aug 11 2020
Jul 31 2020
Hello, I have a twice-daily auto-bisecting multi-stage cron job running on Fedora 32 (x86-64) that has identified this commit as failing my first stage test (release + no asserts). Is this expected? Can we get a quick fix or revert this?
Jul 22 2020
I have a multi-stage, auto-git-bisecting bot that has identifying this commit as the source of a regression on Fedora 32 (x86-64). This commit broke my first stage test (release, no asserts). Might a quick fix happen or do we need to revert this?
Jul 14 2020
Jul 12 2020
Hello. I have an auto-bisecting multi-stage bot that is failing on two after this change. Can we please revert this or commit a quick fix?
Jul 4 2020
What compilers was this tested on? This seems to be failing on clang 10 (Fedora 32 x86-64). Can we revert this or commit a quick fix?
Jul 3 2020
Jun 27 2020
Jun 26 2020
Now that my core concern is addressed (moving clang's default module cache out of /tmp), I don't have the time to push for this deprecation. Sorry.
Jun 23 2020
Moved clang specific changes to: https://reviews.llvm.org/D82362
Jun 22 2020
- Respect Darwin and XDG cache directories.
- Drop atypical reverse DNS in the path.
- Make clang more robust if the default module path cannot be determined.
Sure, we can honor XDG_CACHE_DIR. Maybe as a followup, somebody can wire up Darwin's cache directory (which is retrievable via a BSD specific confstr() API with _CS_DARWIN_USER_CACHE_DIR). I'm not sure about other platforms.
Unless I'm missing something, consolidating this logic into LLVM's CMakeLists.txt will break stand alone builds of sub-projects and external projects that depend on this logic.
Jun 21 2020
“N/300” implies that you’re not building all of llvm, clang, etc otherwise thousands of files would build.
Naive build output is one line per file (plus output).
Jun 20 2020
Jun 3 2020
May 30 2020
May 29 2020
This change breaks building on Fedora 32 with clang-10 (as shipped by Fedora). Can we revert this or commit a quick fix?
May 18 2020
May 16 2020
May 15 2020
I'm going to abandon this change for now. The problem is that the MS extensions are not as pervasive through the language as I wanted. For example, I'd really like them to work on aggregate types. This would allow all of the pointers to said types to not need annotation, unlike the current MS model.
May 14 2020
May 13 2020
May 12 2020
May 10 2020
May 9 2020
May 8 2020
This is failing stage two testing on my Fedora 32 (x86-64) Linux box. Can we please revert this or commit a quick fix?