forked from OSchip/llvm-project
				
			Load & StoreInst no longer derive from MemAccessInst, so we don't have
to handle indexing anymore llvm-svn: 3484
This commit is contained in:
		
							parent
							
								
									62b42ce764
								
							
						
					
					
						commit
						030effa42c
					
				| 
						 | 
				
			
			@ -1638,7 +1638,7 @@ MemoryInst : MALLOC Types {
 | 
			
		|||
    if (!isa<PointerType>($2->get()))
 | 
			
		||||
      ThrowException("Can't load from nonpointer type: " +
 | 
			
		||||
		     (*$2)->getDescription());
 | 
			
		||||
    if (LoadInst::getIndexedType(*$2, *$4) == 0)
 | 
			
		||||
    if (GetElementPtrInst::getIndexedType(*$2, *$4) == 0)
 | 
			
		||||
      ThrowException("Invalid indices for load instruction!");
 | 
			
		||||
 | 
			
		||||
    Value *Src = getVal(*$2, $3);
 | 
			
		||||
| 
						 | 
				
			
			@ -1661,7 +1661,7 @@ MemoryInst : MALLOC Types {
 | 
			
		|||
    if (!isa<PointerType>($4->get()))
 | 
			
		||||
      ThrowException("Can't store to a nonpointer type: " +
 | 
			
		||||
                     (*$4)->getDescription());
 | 
			
		||||
    const Type *ElTy = StoreInst::getIndexedType(*$4, *$6);
 | 
			
		||||
    const Type *ElTy = GetElementPtrInst::getIndexedType(*$4, *$6);
 | 
			
		||||
    if (ElTy == 0)
 | 
			
		||||
      ThrowException("Can't store into that field list!");
 | 
			
		||||
    if (ElTy != $2->getType())
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -847,10 +847,8 @@ void CWriter::printIndexingExpression(Value *Ptr, User::op_iterator I,
 | 
			
		|||
    } else {  // Performing array indexing. Just skip the 0
 | 
			
		||||
      ++I;
 | 
			
		||||
    }
 | 
			
		||||
  } else if (HasImplicitAddress) {
 | 
			
		||||
    
 | 
			
		||||
  }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
  for (; I != E; ++I)
 | 
			
		||||
    if ((*I)->getType() == Type::UIntTy) {
 | 
			
		||||
      Out << "[";
 | 
			
		||||
| 
						 | 
				
			
			@ -862,11 +860,13 @@ void CWriter::printIndexingExpression(Value *Ptr, User::op_iterator I,
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void CWriter::visitLoadInst(LoadInst &I) {
 | 
			
		||||
  printIndexingExpression(I.getPointerOperand(), I.idx_begin(), I.idx_end());
 | 
			
		||||
  Out << "*";
 | 
			
		||||
  writeOperand(I.getOperand(0));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CWriter::visitStoreInst(StoreInst &I) {
 | 
			
		||||
  printIndexingExpression(I.getPointerOperand(), I.idx_begin(), I.idx_end());
 | 
			
		||||
  Out << "*";
 | 
			
		||||
  writeOperand(I.getPointerOperand());
 | 
			
		||||
  Out << " = ";
 | 
			
		||||
  writeOperand(I.getOperand(0));
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue