forked from OSchip/llvm-project
				
			Be much more careful about how we update instructions outside of the loop
using instructions inside of the loop. This should fix the MishaTest failure from last night. llvm-svn: 13038
This commit is contained in:
		
							parent
							
								
									3796974563
								
							
						
					
					
						commit
						230bcb6b35
					
				| 
						 | 
				
			
			@ -210,14 +210,20 @@ bool LoopUnroll::visitLoop(Loop *L) {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  // If there was more than one iteration, replace any uses of values computed
 | 
			
		||||
  // in the loop with values computed during last iteration of the loop.
 | 
			
		||||
  if (TripCount != 1)
 | 
			
		||||
    for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I) {
 | 
			
		||||
      std::vector<User*> Users(I->use_begin(), I->use_end());
 | 
			
		||||
      for (unsigned i = 0, e = Users.size(); i != e; ++i) {
 | 
			
		||||
        Instruction *UI = cast<Instruction>(Users[i]);
 | 
			
		||||
        if (UI->getParent() != BB && UI->getParent() != NewBlock)
 | 
			
		||||
          UI->replaceUsesOfWith(I, LastValueMap[I]);
 | 
			
		||||
  // in the loop with values computed during the last iteration of the loop.
 | 
			
		||||
  if (TripCount != 1) {
 | 
			
		||||
    std::set<User*> Users;
 | 
			
		||||
    for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I)
 | 
			
		||||
      Users.insert(I->use_begin(), I->use_end());
 | 
			
		||||
 | 
			
		||||
    // We don't want to reprocess entries with PHI nodes in them.  For this
 | 
			
		||||
    // reason, we look at each operand of each user exactly once, performing the
 | 
			
		||||
    // stubstitution exactly once.
 | 
			
		||||
    for (std::set<User*>::iterator UI = Users.begin(), E = Users.end(); UI != E;
 | 
			
		||||
         ++UI) {
 | 
			
		||||
      Instruction *I = cast<Instruction>(*UI);
 | 
			
		||||
      if (I->getParent() != BB && I->getParent() != NewBlock)
 | 
			
		||||
        RemapInstruction(I, LastValueMap);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue