aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm/include/llvm/IR/Instruction.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/include/llvm/IR/Instruction.h')
-rw-r--r--contrib/llvm/include/llvm/IR/Instruction.h28
1 files changed, 21 insertions, 7 deletions
diff --git a/contrib/llvm/include/llvm/IR/Instruction.h b/contrib/llvm/include/llvm/IR/Instruction.h
index 5e78cb1edf02..6a9a74bd16f0 100644
--- a/contrib/llvm/include/llvm/IR/Instruction.h
+++ b/contrib/llvm/include/llvm/IR/Instruction.h
@@ -1,9 +1,8 @@
//===-- llvm/Instruction.h - Instruction class definition -------*- C++ -*-===//
//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
@@ -136,6 +135,9 @@ public:
bool isExceptionalTerminator() const {
return isExceptionalTerminator(getOpcode());
}
+ bool isIndirectTerminator() const {
+ return isIndirectTerminator(getOpcode());
+ }
static const char* getOpcodeName(unsigned OpCode);
@@ -203,6 +205,17 @@ public:
}
}
+ /// Returns true if the OpCode is a terminator with indirect targets.
+ static inline bool isIndirectTerminator(unsigned OpCode) {
+ switch (OpCode) {
+ case Instruction::IndirectBr:
+ case Instruction::CallBr:
+ return true;
+ default:
+ return false;
+ }
+ }
+
//===--------------------------------------------------------------------===//
// Metadata manipulation.
//===--------------------------------------------------------------------===//
@@ -298,9 +311,6 @@ public:
/// Returns false if no metadata was found.
bool extractProfTotalWeight(uint64_t &TotalVal) const;
- /// Updates branch_weights metadata by scaling it by \p S / \p T.
- void updateProfWeight(uint64_t S, uint64_t T);
-
/// Sets the branch_weights metadata to \p W for CallInst.
void setProfWeight(uint64_t W);
@@ -655,6 +665,10 @@ public:
/// instruction must be a terminator.
void setSuccessor(unsigned Idx, BasicBlock *BB);
+ /// Replace specified successor OldBB to point at the provided block.
+ /// This instruction must be a terminator.
+ void replaceSuccessorWith(BasicBlock *OldBB, BasicBlock *NewBB);
+
/// Methods for support type inquiry through isa, cast, and dyn_cast:
static bool classof(const Value *V) {
return V->getValueID() >= Value::InstructionVal;