//===-- lib/CodeGen/MachineInstr.cpp --------------------------------------===////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// Methods common to all machine instructions.////===----------------------------------------------------------------------===//#include"llvm/CodeGen/MachineInstr.h"#include"llvm/Constants.h"#include"llvm/Function.h"#include"llvm/InlineAsm.h"#include"llvm/Type.h"#include"llvm/Value.h"#include"llvm/Assembly/Writer.h"#include"llvm/CodeGen/MachineFunction.h"#include"llvm/CodeGen/MachineMemOperand.h"#include"llvm/CodeGen/MachineRegisterInfo.h"#include"llvm/CodeGen/PseudoSourceValue.h"#include"llvm/Target/TargetMachine.h"#include"llvm/Target/TargetInstrInfo.h"#include"llvm/Target/TargetInstrDesc.h"#include"llvm/Target/TargetRegisterInfo.h"#include"llvm/Analysis/AliasAnalysis.h"#include"llvm/Analysis/DebugInfo.h"#include"llvm/Support/Debug.h"#include"llvm/Support/ErrorHandling.h"#include"llvm/Support/LeakDetector.h"#include"llvm/Support/MathExtras.h"#include"llvm/Support/raw_ostream.h"#include"llvm/ADT/FoldingSet.h"#include"llvm/Metadata.h"usingnamespacellvm;//===----------------------------------------------------------------------===//// MachineOperand Implementation//===----------------------------------------------------------------------===///// AddRegOperandToRegInfo - Add this register operand to the specified/// MachineRegisterInfo. If it is null, then the next/prev fields should be/// explicitly nulled out.voidMachineOperand::AddRegOperandToRegInfo(MachineRegisterInfo*RegInfo){assert(isReg()&&"Can only add reg operand to use lists");// If the reginfo pointer is null, just explicitly null out or next/prev// pointers, to ensure they are not garbage.if(RegInfo==0){Contents.Reg.Prev=0;Contents.Reg.Next=0;return;}// Otherwise, add this operand to the head of the registers use/def list.MachineOperand**Head=&RegInfo->getRegUseDefListHead(getReg());// For SSA values, we prefer to keep the definition at the start of the list.// we do this by skipping over the definition if it is at the head of the// list.if(*Head&&(*Head)->isDef())Head=&(*Head)->Contents.Reg.Next;Contents.Reg.Next=*Head;if(Contents.Reg.Next){assert(getReg()==Contents.Reg.Next->getReg()&&"Different regs on