forked from OSchip/llvm-project
				
			A small refactoring + adding comments.
SelectionDAGIsel::LowerArguments needs a function, not a basic block. So it makes sense to pass it the function instead of extracting a basic-block from the function and then tossing it. This is also more self-documenting (functions have arguments, BBs don't). In addition, added comments to a couple of Select* methods. llvm-svn: 176305
This commit is contained in:
		
							parent
							
								
									706469b453
								
							
						
					
					
						commit
						33ebf836bc
					
				| 
						 | 
				
			
			@ -249,16 +249,26 @@ private:
 | 
			
		|||
                    const SDValue *Ops, unsigned NumOps, unsigned EmitNodeInfo);
 | 
			
		||||
 | 
			
		||||
  void PrepareEHLandingPad();
 | 
			
		||||
 | 
			
		||||
  /// \brief Perform instruction selection on all basic blocks in the function.
 | 
			
		||||
  void SelectAllBasicBlocks(const Function &Fn);
 | 
			
		||||
 | 
			
		||||
  /// \brief Perform instruction selection on a single basic block, for
 | 
			
		||||
  /// instructions between \p Begin and \p End.  \p HadTailCall will be set
 | 
			
		||||
  /// to true if a call in the block was translated as a tail call.
 | 
			
		||||
  void SelectBasicBlock(BasicBlock::const_iterator Begin,
 | 
			
		||||
                        BasicBlock::const_iterator End,
 | 
			
		||||
                        bool &HadTailCall);
 | 
			
		||||
 | 
			
		||||
  bool TryToFoldFastISelLoad(const LoadInst *LI, const Instruction *FoldInst,
 | 
			
		||||
                             FastISel *FastIS);
 | 
			
		||||
  void FinishBasicBlock();
 | 
			
		||||
 | 
			
		||||
  void SelectBasicBlock(BasicBlock::const_iterator Begin,
 | 
			
		||||
                        BasicBlock::const_iterator End,
 | 
			
		||||
                        bool &HadTailCall);
 | 
			
		||||
  void CodeGenAndEmitDAG();
 | 
			
		||||
  void LowerArguments(const BasicBlock *BB);
 | 
			
		||||
 | 
			
		||||
  /// \brief Generate instructions for lowering the incoming arguments of the
 | 
			
		||||
  /// given function.
 | 
			
		||||
  void LowerArguments(const Function &F);
 | 
			
		||||
 | 
			
		||||
  void ComputeLiveOutVRegInfo();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6596,9 +6596,7 @@ static bool isOnlyUsedInEntryBlock(const Argument *A, bool FastISel) {
 | 
			
		|||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SelectionDAGISel::LowerArguments(const BasicBlock *LLVMBB) {
 | 
			
		||||
  // If this is the entry block, emit arguments.
 | 
			
		||||
  const Function &F = *LLVMBB->getParent();
 | 
			
		||||
void SelectionDAGISel::LowerArguments(const Function &F) {
 | 
			
		||||
  SelectionDAG &DAG = SDB->DAG;
 | 
			
		||||
  DebugLoc dl = SDB->getCurDebugLoc();
 | 
			
		||||
  const DataLayout *TD = TLI.getDataLayout();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1054,15 +1054,12 @@ void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) {
 | 
			
		|||
      if (LLVMBB == &Fn.getEntryBlock()) {
 | 
			
		||||
        // Lower any arguments needed in this block if this is the entry block.
 | 
			
		||||
        if (!FastIS->LowerArguments()) {
 | 
			
		||||
 | 
			
		||||
          // Fast isel failed to lower these arguments
 | 
			
		||||
          if (EnableFastISelAbortArgs)
 | 
			
		||||
            // The "fast" selector couldn't lower these arguments.  For the
 | 
			
		||||
            // purpose of debugging, just abort.
 | 
			
		||||
            llvm_unreachable("FastISel didn't lower all arguments");
 | 
			
		||||
 | 
			
		||||
          // Call target indepedent SDISel argument lowering code if the target
 | 
			
		||||
          // specific routine is not successful.
 | 
			
		||||
          LowerArguments(LLVMBB);
 | 
			
		||||
          // Use SelectionDAG argument lowering
 | 
			
		||||
          LowerArguments(Fn);
 | 
			
		||||
          CurDAG->setRoot(SDB->getControlRoot());
 | 
			
		||||
          SDB->clear();
 | 
			
		||||
          CodeGenAndEmitDAG();
 | 
			
		||||
| 
						 | 
				
			
			@ -1181,7 +1178,7 @@ void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) {
 | 
			
		|||
    } else {
 | 
			
		||||
      // Lower any arguments needed in this block if this is the entry block.
 | 
			
		||||
      if (LLVMBB == &Fn.getEntryBlock())
 | 
			
		||||
        LowerArguments(LLVMBB);
 | 
			
		||||
        LowerArguments(Fn);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (Begin != BI)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue