From c33b2e6d0f84125c77fad2fe715f9c4a35ad19de 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. llvm-svn: 342561 --- llvm/utils/TableGen/CodeGenSchedule.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/utils/TableGen/CodeGenSchedule.h b/llvm/utils/TableGen/CodeGenSchedule.h index ef2b32c..3ed753c 100644 --- a/llvm/utils/TableGen/CodeGenSchedule.h +++ b/llvm/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.7.4