[llvm-commits] [llvm] r65062 - /llvm/trunk/include/llvm/Target/TargetInstrInfo.h

Dale Johannesen dalej at apple.com
Thu Feb 19 11:40:21 PST 2009


Author: johannes
Date: Thu Feb 19 13:40:21 2009
New Revision: 65062

URL: http://llvm.org/viewvc/llvm-project?rev=65062&view=rev
Log:
Describe tail merging's use of InsertBranch.


Modified:
    llvm/trunk/include/llvm/Target/TargetInstrInfo.h

Modified: llvm/trunk/include/llvm/Target/TargetInstrInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetInstrInfo.h?rev=65062&r1=65061&r2=65062&view=diff

==============================================================================
--- llvm/trunk/include/llvm/Target/TargetInstrInfo.h (original)
+++ llvm/trunk/include/llvm/Target/TargetInstrInfo.h Thu Feb 19 13:40:21 2009
@@ -182,15 +182,15 @@
   /// 2. If this block ends with only an unconditional branch, it sets TBB to be
   ///    the destination block.
   /// 3. If this block ends with an conditional branch and it falls through to
-  ///    an successor block, it sets TBB to be the branch destination block and a
-  ///    list of operands that evaluate the condition. These
+  ///    an successor block, it sets TBB to be the branch destination block and
+  ///    a list of operands that evaluate the condition. These
   ///    operands can be passed to other TargetInstrInfo methods to create new
   ///    branches.
   /// 4. If this block ends with an conditional branch and an unconditional
-  ///    block, it returns the 'true' destination in TBB, the 'false' destination
-  ///    in FBB, and a list of operands that evaluate the condition. These
-  ///    operands can be passed to other TargetInstrInfo methods to create new
-  ///    branches.
+  ///    block, it returns the 'true' destination in TBB, the 'false'
+  ///    destination in FBB, and a list of operands that evaluate the condition.
+  ///    These operands can be passed to other TargetInstrInfo methods to create
+  ///    new branches.
   ///
   /// Note that RemoveBranch and InsertBranch must be implemented to support
   /// cases where this method returns success.
@@ -219,6 +219,11 @@
   /// returns success and when an unconditional branch (TBB is non-null, FBB is
   /// null, Cond is empty) needs to be inserted. It returns the number of
   /// instructions inserted.
+  ///
+  /// It is also invoked by tail merging to add unconditional branches in
+  /// cases where AnalyzeBranch doesn't apply because there was no original
+  /// branch to analyze.  At least this much must be implemented, else tail
+  /// merging needs to be disabled.
   virtual unsigned InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB,
                             MachineBasicBlock *FBB,
                             const SmallVectorImpl<MachineOperand> &Cond) const {





More information about the llvm-commits mailing list