Index: include/llvm/IR/Instructions.h =================================================================== --- include/llvm/IR/Instructions.h +++ include/llvm/IR/Instructions.h @@ -1247,6 +1247,8 @@ /// vectors of floating point values. The operands must be identical types. /// \brief Represents a floating point comparison operator. class FCmpInst: public CmpInst { + void anchor() override; + protected: // Note: Instruction needs to be a friend here to call cloneImpl. friend class Instruction; @@ -2188,6 +2190,8 @@ class ExtractValueInst : public UnaryInstruction { SmallVector Indices; + void anchor() override; + ExtractValueInst(const ExtractValueInst &EVI); void init(ArrayRef Idxs, const Twine &NameStr); @@ -2297,6 +2301,8 @@ class InsertValueInst : public Instruction { SmallVector Indices; + void anchor() override; + void *operator new(size_t, unsigned) = delete; InsertValueInst(const InsertValueInst &IVI); void init(Value *Agg, Value *Val, ArrayRef Idxs, Index: lib/IR/Instructions.cpp =================================================================== --- lib/IR/Instructions.cpp +++ lib/IR/Instructions.cpp @@ -1820,6 +1820,8 @@ // InsertValueInst Class //===----------------------------------------------------------------------===// +void InsertValueInst::anchor() {} + void InsertValueInst::init(Value *Agg, Value *Val, ArrayRef Idxs, const Twine &Name) { assert(getNumOperands() == 2 && "NumOperands not initialized?"); @@ -1852,6 +1854,8 @@ // ExtractValueInst Class //===----------------------------------------------------------------------===// +void ExtractValueInst::anchor() {} + void ExtractValueInst::init(ArrayRef Idxs, const Twine &Name) { assert(getNumOperands() == 1 && "NumOperands not initialized?"); @@ -3577,6 +3581,8 @@ } } +void FCmpInst::anchor() {} + //===----------------------------------------------------------------------===// // SwitchInst Implementation