//===-- RegAllocGreedy.cpp - greedy register allocator --------------------===////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// This file defines the RAGreedy function pass for register allocation in// optimized builds.////===----------------------------------------------------------------------===//#define DEBUG_TYPE "regalloc"#include"AllocationOrder.h"#include"InterferenceCache.h"#include"LiveDebugVariables.h"#include"LiveRangeEdit.h"#include"RegAllocBase.h"#include"Spiller.h"#include"SpillPlacement.h"#include"SplitKit.h"#include"VirtRegMap.h"#include"llvm/ADT/Statistic.h"#include"llvm/Analysis/AliasAnalysis.h"#include"llvm/Function.h"#include"llvm/PassAnalysisSupport.h"#include"llvm/CodeGen/CalcSpillWeights.h"#include"llvm/CodeGen/EdgeBundles.h"#include"llvm/CodeGen/LiveIntervalAnalysis.h"#include"llvm/CodeGen/LiveStackAnalysis.h"#include"llvm/CodeGen/MachineDominators.h"#include"llvm/CodeGen/MachineFunctionPass.h"#include"llvm/CodeGen/MachineLoopInfo.h"#include"llvm/CodeGen/MachineLoopRanges.h"#include"llvm/CodeGen/MachineRegisterInfo.h"#include"llvm/CodeGen/Passes.h"#include"llvm/CodeGen/RegAllocRegistry.h"#include"llvm/CodeGen/RegisterCoalescer.h"#include"llvm/Target/TargetOptions.h"#include"llvm/Support/Debug.h"#include"llvm/Support/ErrorHandling.h"#include"llvm/Support/raw_ostream.h"#include"llvm/Support/Timer.h"#include<queue>usingnamespacellvm;STATISTIC(NumGlobalSplits,"Number of split global live ranges");STATISTIC(NumLocalSplits,"Number of split local live ranges");STATISTIC(