ΒΆinline const llvm::Value* GetRCIdentityRoot(
    const llvm::Value* V)

Description

The RCIdentity root of a value \p V is a dominating value U for which retaining or releasing U is equivalent to retaining or releasing V. In other words, ARC operations on \p V are equivalent to ARC operations on \p U. We use this in the ARC optimizer to make it easier to match up ARC operations by always mapping ARC operations to RCIdentityRoots instead of pointers themselves. The two ways that we see RCIdentical values in ObjC are via: 1. PointerCasts 2. Forwarding Calls that return their argument verbatim. Thus this function strips off pointer casts and forwarding calls. *NOTE* This implies that two RCIdentical values must alias.

Declared at: llvm/include/llvm/Analysis/ObjCARCAnalysisUtils.h:116

Parameters

const llvm::Value* V