From: Andrea Di Biagio Date: Wed, 19 Sep 2018 17:54:01 +0000 (+0000) Subject: Attempt to unbreak buidlbot lld-x86_64-darwin13 after r342555. X-Git-Tag: llvmorg-8.0.0-rc1~8405 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c33b2e6d0f84125c77fad2fe715f9c4a35ad19de;p=platform%2Fupstream%2Fllvm.git 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 --- 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;