[llvm] ddc7c2d - [IR][Instruction] Annotate more methods with LLVM_READONLY
Alexander Shaposhnikov via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 31 22:56:03 PDT 2022
Author: Alexander Shaposhnikov
Date: 2022-11-01T05:55:28Z
New Revision: ddc7c2d18982d3bbef9dbcdddc4e996d61bbb99e
URL: https://github.com/llvm/llvm-project/commit/ddc7c2d18982d3bbef9dbcdddc4e996d61bbb99e
DIFF: https://github.com/llvm/llvm-project/commit/ddc7c2d18982d3bbef9dbcdddc4e996d61bbb99e.diff
LOG: [IR][Instruction] Annotate more methods with LLVM_READONLY
This diff annotates more methods of the class Instruction with
LLVM_READONLY (similarly to isAssociative/isCommutative).
Test plan: ninja check-all
Differential revision: https://reviews.llvm.org/D137053
Added:
Modified:
llvm/include/llvm/IR/Instruction.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/IR/Instruction.h b/llvm/include/llvm/IR/Instruction.h
index adcfee5db03a5..f85fcb93068fa 100644
--- a/llvm/include/llvm/IR/Instruction.h
+++ b/llvm/include/llvm/IR/Instruction.h
@@ -366,14 +366,14 @@ class Instruction : public User,
void setIsExact(bool b = true);
/// Determine whether the no unsigned wrap flag is set.
- bool hasNoUnsignedWrap() const;
+ bool hasNoUnsignedWrap() const LLVM_READONLY;
/// Determine whether the no signed wrap flag is set.
- bool hasNoSignedWrap() const;
+ bool hasNoSignedWrap() const LLVM_READONLY;
/// Return true if this operator has flags which may cause this instruction
/// to evaluate to poison despite having non-poison inputs.
- bool hasPoisonGeneratingFlags() const;
+ bool hasPoisonGeneratingFlags() const LLVM_READONLY;
/// Drops flags that may cause this instruction to evaluate to poison despite
/// having non-poison inputs.
@@ -387,7 +387,7 @@ class Instruction : public User,
dropUndefImplyingAttrsAndUnknownMetadata(ArrayRef<unsigned> KnownIDs = {});
/// Determine whether the exact flag is set.
- bool isExact() const;
+ bool isExact() const LLVM_READONLY;
/// Set or clear all fast-math-flags on this instruction, which must be an
/// operator which supports this flag. See LangRef.html for the meaning of
@@ -440,33 +440,33 @@ class Instruction : public User,
void copyFastMathFlags(FastMathFlags FMF);
/// Determine whether all fast-math-flags are set.
- bool isFast() const;
+ bool isFast() const LLVM_READONLY;
/// Determine whether the allow-reassociation flag is set.
- bool hasAllowReassoc() const;
+ bool hasAllowReassoc() const LLVM_READONLY;
/// Determine whether the no-NaNs flag is set.
- bool hasNoNaNs() const;
+ bool hasNoNaNs() const LLVM_READONLY;
/// Determine whether the no-infs flag is set.
- bool hasNoInfs() const;
+ bool hasNoInfs() const LLVM_READONLY;
/// Determine whether the no-signed-zeros flag is set.
- bool hasNoSignedZeros() const;
+ bool hasNoSignedZeros() const LLVM_READONLY;
/// Determine whether the allow-reciprocal flag is set.
- bool hasAllowReciprocal() const;
+ bool hasAllowReciprocal() const LLVM_READONLY;
/// Determine whether the allow-contract flag is set.
- bool hasAllowContract() const;
+ bool hasAllowContract() const LLVM_READONLY;
/// Determine whether the approximate-math-functions flag is set.
- bool hasApproxFunc() const;
+ bool hasApproxFunc() const LLVM_READONLY;
/// Convenience function for getting all the fast-math flags, which must be an
/// operator which supports these flags. See LangRef.html for the meaning of
/// these flags.
- FastMathFlags getFastMathFlags() const;
+ FastMathFlags getFastMathFlags() const LLVM_READONLY;
/// Copy I's fast-math flags
void copyFastMathFlags(const Instruction *I);
@@ -577,10 +577,10 @@ class Instruction : public User,
}
/// Return true if this instruction may modify memory.
- bool mayWriteToMemory() const;
+ bool mayWriteToMemory() const LLVM_READONLY;
/// Return true if this instruction may read memory.
- bool mayReadFromMemory() const;
+ bool mayReadFromMemory() const LLVM_READONLY;
/// Return true if this instruction may read or write memory.
bool mayReadOrWriteMemory() const {
@@ -589,19 +589,19 @@ class Instruction : public User,
/// Return true if this instruction has an AtomicOrdering of unordered or
/// higher.
- bool isAtomic() const;
+ bool isAtomic() const LLVM_READONLY;
/// Return true if this atomic instruction loads from memory.
- bool hasAtomicLoad() const;
+ bool hasAtomicLoad() const LLVM_READONLY;
/// Return true if this atomic instruction stores to memory.
- bool hasAtomicStore() const;
+ bool hasAtomicStore() const LLVM_READONLY;
/// Return true if this instruction has a volatile memory access.
- bool isVolatile() const;
+ bool isVolatile() const LLVM_READONLY;
/// Return true if this instruction may throw an exception.
- bool mayThrow() const;
+ bool mayThrow() const LLVM_READONLY;
/// Return true if this instruction behaves like a memory fence: it can load
/// or store to memory location without being given a memory location.
@@ -631,7 +631,7 @@ class Instruction : public User,
/// effects because the newly allocated memory is completely invisible to
/// instructions which don't use the returned value. For cases where this
/// matters, isSafeToSpeculativelyExecute may be more appropriate.
- bool mayHaveSideEffects() const;
+ bool mayHaveSideEffects() const LLVM_READONLY;
/// Return true if the instruction can be removed if the result is unused.
///
@@ -639,11 +639,11 @@ class Instruction : public User,
/// results are unused. Specifically terminator instructions and calls that
/// may have side effects cannot be removed without semantically changing the
/// generated program.
- bool isSafeToRemove() const;
+ bool isSafeToRemove() const LLVM_READONLY;
/// Return true if the instruction will return (unwinding is considered as
/// a form of returning control flow here).
- bool willReturn() const;
+ bool willReturn() const LLVM_READONLY;
/// Return true if the instruction is a variety of EH-block.
bool isEHPad() const {
@@ -660,14 +660,14 @@ class Instruction : public User,
/// Return true if the instruction is a llvm.lifetime.start or
/// llvm.lifetime.end marker.
- bool isLifetimeStartOrEnd() const;
+ bool isLifetimeStartOrEnd() const LLVM_READONLY;
/// Return true if the instruction is a llvm.launder.invariant.group or
/// llvm.strip.invariant.group.
- bool isLaunderOrStripInvariantGroup() const;
+ bool isLaunderOrStripInvariantGroup() const LLVM_READONLY;
/// Return true if the instruction is a DbgInfoIntrinsic or PseudoProbeInst.
- bool isDebugOrPseudoInst() const;
+ bool isDebugOrPseudoInst() const LLVM_READONLY;
/// Return a pointer to the next non-debug instruction in the same basic
/// block as 'this', or nullptr if no such instruction exists. Skip any pseudo
@@ -701,12 +701,12 @@ class Instruction : public User,
/// Return true if the specified instruction is exactly identical to the
/// current one. This means that all operands match and any extra information
/// (e.g. load is volatile) agree.
- bool isIdenticalTo(const Instruction *I) const;
+ bool isIdenticalTo(const Instruction *I) const LLVM_READONLY;
/// This is like isIdenticalTo, except that it ignores the
/// SubclassOptionalData flags, which may specify conditions under which the
/// instruction's result is undefined.
- bool isIdenticalToWhenDefined(const Instruction *I) const;
+ bool isIdenticalToWhenDefined(const Instruction *I) const LLVM_READONLY;
/// When checking for operation equivalence (using isSameOperationAs) it is
/// sometimes useful to ignore certain attributes.
@@ -726,19 +726,19 @@ class Instruction : public User,
/// @returns true if the specified instruction is the same operation as
/// the current one.
/// Determine if one instruction is the same operation as another.
- bool isSameOperationAs(const Instruction *I, unsigned flags = 0) const;
+ bool isSameOperationAs(const Instruction *I, unsigned flags = 0) const LLVM_READONLY;
/// Return true if there are any uses of this instruction in blocks other than
/// the specified block. Note that PHI nodes are considered to evaluate their
/// operands in the corresponding predecessor block.
- bool isUsedOutsideOfBlock(const BasicBlock *BB) const;
+ bool isUsedOutsideOfBlock(const BasicBlock *BB) const LLVM_READONLY;
/// Return the number of successors that this instruction has. The instruction
/// must be a terminator.
- unsigned getNumSuccessors() const;
+ unsigned getNumSuccessors() const LLVM_READONLY;
/// Return the specified successor. This instruction must be a terminator.
- BasicBlock *getSuccessor(unsigned Idx) const;
+ BasicBlock *getSuccessor(unsigned Idx) const LLVM_READONLY;
/// Update the specified successor to point at the provided block. This
/// instruction must be a terminator.
More information about the llvm-commits
mailing list