[llvm] r342561 - Attempt to unbreak buidlbot lld-x86_64-darwin13 after r342555.
Andrea Di Biagio via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 19 10:54:01 PDT 2018
Author: adibiagio
Date: Wed Sep 19 10:54:01 2018
New Revision: 342561
URL: http://llvm.org/viewvc/llvm-project?rev=342561&view=rev
Log:
Attempt to unbreak buidlbot lld-x86_64-darwin13 after r342555.
The reason why build #25777 might have failed is because the SmallVector move
constructor is _not_ noexcept, and the stl implementation used by that buildbot
calls _VSTD::move_if_noexcept() (according to the backtrace).
OpcodeInfo has a default move constructor, and the copy constructor is deleted.
However, as far as I can see, SmallVector doesn't declare a noexcept move
constructor. So, what I believe it is happening here is that,
_VSTD::move_if_noexcept() returns an lvalue reference and not an rvalue
reference.
This eventually triggers a copy that fails to compile.
Hopefully, using a std::vector instead of SmallVector (as it was originally
suggested by Simon in the code review) should be enough to unbreak the buildbot.
Modified:
llvm/trunk/utils/TableGen/CodeGenSchedule.h
Modified: llvm/trunk/utils/TableGen/CodeGenSchedule.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenSchedule.h?rev=342561&r1=342560&r2=342561&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenSchedule.h (original)
+++ llvm/trunk/utils/TableGen/CodeGenSchedule.h Wed Sep 19 10:54:01 2018
@@ -322,7 +322,7 @@ struct PredicateInfo {
/// There is at least one OpcodeInfo object for every opcode specified by a
/// TIPredicate definition.
class OpcodeInfo {
- llvm::SmallVector<PredicateInfo, 8> Predicates;
+ std::vector<PredicateInfo> Predicates;
OpcodeInfo(const OpcodeInfo &Other) = delete;
OpcodeInfo &operator=(const OpcodeInfo &Other) = delete;
More information about the llvm-commits
mailing list