From eb2ecf38ab4da54127ef867c03efd4d4103dbb20 Mon Sep 17 00:00:00 2001 From: Andrea Di Biagio Date: Wed, 19 Sep 2018 17:54:01 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342561 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/CodeGenSchedule.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/TableGen/CodeGenSchedule.h b/utils/TableGen/CodeGenSchedule.h index ef2b32c37c4..3ed753c8ffe 100644 --- a/utils/TableGen/CodeGenSchedule.h +++ b/utils/TableGen/CodeGenSchedule.h @@ -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 Predicates; + std::vector Predicates; OpcodeInfo(const OpcodeInfo &Other) = delete; OpcodeInfo &operator=(const OpcodeInfo &Other) = delete; -- 2.11.0