return true;
}
-/// \brief Helper for GetInstructionClass. Determines what kind of construct CS is.
+/// \brief Helper for GetInstructionClass. Determines what kind of construct CS
+/// is.
static InstructionClass GetCallSiteClass(ImmutableCallSite CS) {
for (ImmutableCallSite::arg_iterator I = CS.arg_begin(), E = CS.arg_end();
I != E; ++I)
Class == IC_RetainBlock;
}
-/// \brief Test if the given class represents instructions which are always safe to
-/// mark with the "tail" keyword.
+/// \brief Test if the given class represents instructions which are always safe
+/// to mark with the "tail" keyword.
static bool IsAlwaysTail(InstructionClass Class) {
// IC_RetainBlock may be given a stack argument.
return Class == IC_Retain ||
M.getNamedValue("objc_unretainedPointer");
}
-/// \brief Test whether the given pointer, which is an Objective C block pointer, does
-/// not "escape".
+/// \brief Test whether the given pointer, which is an Objective C block
+/// pointer, does not "escape".
///
/// This differs from regular escape analysis in that a use as an
/// argument to a call is not considered an escape.
isa<PHINode>(UUser) || isa<SelectInst>(UUser)) {
if (!VisitedSet.count(UUser)) {
- DEBUG(dbgs() << "DoesObjCBlockEscape: User copies value. Escapes if "
- "result escapes. Adding to list.\n");
+ DEBUG(dbgs() << "DoesObjCBlockEscape: User copies value. Escapes "
+ "if result escapes. Adding to list.\n");
VisitedSet.insert(V);
Worklist.push_back(UUser);
} else {
/// @}
///
-/// \defgroup ARCAA An extension of alias analysis using ObjC specific knowledge.
+/// \defgroup ARCAA Extends alias analysis using ObjC specific knowledge.
/// @{
#include "llvm/Analysis/AliasAnalysis.h"
// zap the pair.
if (Push && cast<CallInst>(Inst)->getArgOperand(0) == Push) {
Changed = true;
- DEBUG(dbgs() << "ObjCARCAPElim::OptimizeBB: Zapping push pop autorelease pair:\n"
- << " Pop: " << *Inst << "\n"
+ DEBUG(dbgs() << "ObjCARCAPElim::OptimizeBB: Zapping push pop "
+ "autorelease pair:\n"
+ " Pop: " << *Inst << "\n"
<< " Push: " << *Push << "\n");
Inst->eraseFromParent();
Push->eraseFromParent();
// loop backedge. Loop backedges are special.
TopDownPathCount += Other.TopDownPathCount;
- // Check for overflow. If we have overflow, fall back to conservative behavior.
+ // Check for overflow. If we have overflow, fall back to conservative
+ // behavior.
if (TopDownPathCount < Other.TopDownPathCount) {
clearTopDownPointers();
return;
// loop backedge. Loop backedges are special.
BottomUpPathCount += Other.BottomUpPathCount;
- // Check for overflow. If we have overflow, fall back to conservative behavior.
+ // Check for overflow. If we have overflow, fall back to conservative
+ // behavior.
if (BottomUpPathCount < Other.BottomUpPathCount) {
clearBottomUpPointers();
return;
// semantics of ARC truly do not do so.
if (IsNeverTail(Class)) {
Changed = true;
- DEBUG(dbgs() << "ObjCARCOpt::OptimizeIndividualCalls: Removing tail keyword"
- " from function: " << *Inst <<
+ DEBUG(dbgs() << "ObjCARCOpt::OptimizeIndividualCalls: Removing tail "
+ "keyword from function: " << *Inst <<
"\n");
cast<CallInst>(Inst)->setTailCall(false);
}