mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-23 12:45:47 +00:00
Add a const lookup routine to get a BlockAddress constant if there is
one, but not create one. This is useful in the verifier when we want to query the constant if it exists but not create one. To be used in an upcoming commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199568 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e952af7ae5
commit
60e425e99b
@ -757,6 +757,12 @@ public:
|
||||
/// block must be embedded into a function.
|
||||
static BlockAddress *get(BasicBlock *BB);
|
||||
|
||||
/// \brief Lookup an existing \c BlockAddress constant for the given
|
||||
/// BasicBlock.
|
||||
///
|
||||
/// \returns 0 if \c !BB->hasAddressTaken(), otherwise the \c BlockAddress.
|
||||
static BlockAddress *lookup(const BasicBlock *BB);
|
||||
|
||||
/// Transparently provide more efficient getOperand methods.
|
||||
DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value);
|
||||
|
||||
|
@ -1375,6 +1375,17 @@ BlockAddress::BlockAddress(Function *F, BasicBlock *BB)
|
||||
BB->AdjustBlockAddressRefCount(1);
|
||||
}
|
||||
|
||||
BlockAddress *BlockAddress::lookup(const BasicBlock *BB) {
|
||||
if (!BB->hasAddressTaken())
|
||||
return 0;
|
||||
|
||||
const Function *F = BB->getParent();
|
||||
assert(F != 0 && "Block must have a parent");
|
||||
BlockAddress *BA =
|
||||
F->getContext().pImpl->BlockAddresses.lookup(std::make_pair(F, BB));
|
||||
assert(BA && "Refcount and block address map disagree!");
|
||||
return BA;
|
||||
}
|
||||
|
||||
// destroyConstant - Remove the constant from the constant table.
|
||||
//
|
||||
|
@ -281,8 +281,8 @@ public:
|
||||
|
||||
StringMap<ConstantDataSequential*> CDSConstants;
|
||||
|
||||
|
||||
DenseMap<std::pair<Function*, BasicBlock*> , BlockAddress*> BlockAddresses;
|
||||
DenseMap<std::pair<const Function *, const BasicBlock *>, BlockAddress *>
|
||||
BlockAddresses;
|
||||
ConstantUniqueMap<ExprMapKeyType, const ExprMapKeyType&, Type, ConstantExpr>
|
||||
ExprConstants;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user