//===-- SelectionDAGISel.cpp - Implement the SelectionDAGISel class -------===////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// This implements the SelectionDAGISel class.////===----------------------------------------------------------------------===//#define DEBUG_TYPE "isel"#include"ScheduleDAGSDNodes.h"#include"SelectionDAGBuild.h"#include"llvm/CodeGen/SelectionDAGISel.h"#include"llvm/Analysis/AliasAnalysis.h"#include"llvm/Constants.h"#include"llvm/CallingConv.h"#include"llvm/DerivedTypes.h"#include"llvm/Function.h"#include"llvm/GlobalVariable.h"#include"llvm/InlineAsm.h"#include"llvm/Instructions.h"#include"llvm/Intrinsics.h"#include"llvm/IntrinsicInst.h"#include"llvm/CodeGen/FastISel.h"#include"llvm/CodeGen/GCStrategy.h"#include"llvm/CodeGen/GCMetadata.h"#include"llvm/CodeGen/MachineFunction.h"#include"llvm/CodeGen/MachineFrameInfo.h"#include"llvm/CodeGen/MachineInstrBuilder.h"#include"llvm/CodeGen/MachineJumpTableInfo.h"#include"llvm/CodeGen/MachineModuleInfo.h"#include"llvm/CodeGen/MachineRegisterInfo.h"#include"llvm/CodeGen/ScheduleHazardRecognizer.h"#include"llvm/CodeGen/SchedulerRegistry.h"#include"llvm/CodeGen/SelectionDAG.h"#include"llvm/CodeGen/DwarfWriter.h"#include"llvm/Target/TargetRegisterInfo.h"#include"llvm/Target/TargetData.h"#include"llvm/Target/TargetFrameInfo.h"#include"llvm/Target/TargetInstrInfo.h"#include"llvm/Target/TargetLowering.h"#include"llvm/Target/TargetMachine.h"#include"llvm/Target/TargetOptions.h"#include"llvm/Support/Compiler.h"#include"llvm/Support/Debug.h"#include"llvm/Support/ErrorHandling.h"#include"llvm/Support/MathExtras.h"#include"llvm/Support/Timer.h"#include<algorithm>usingnamespacellvm;staticcl::opt<bool>DisableLegalizeTypes("disable-legalize-types",cl::Hidden);staticcl::opt<bool>EnableFastISelVerbose("fast-isel-verbose",cl::Hidden,cl::desc("Enable verbose messages in the \"fast\" ""instruction selector"));staticcl::opt<bool>EnableFastISelAbort("fast-isel-abort",cl::Hidden,cl::desc("Enable abort calls when \"fast\" instruction fails"));staticcl::opt<bool>SchedLiveInCopies("sche