1 //===- RegisterCoalescer.cpp - Generic Register Coalescing Interface -------==// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file implements the generic RegisterCoalescer interface which 11 // is used as the common interface used by all clients and 12 // implementations of register coalescing. 13 // 14 //===----------------------------------------------------------------------===// 15 16 #include "llvm/CodeGen/RegisterCoalescer.h" 17 #include "llvm/CodeGen/LiveIntervalAnalysis.h" 18 #include "llvm/CodeGen/MachineInstr.h" 19 #include "llvm/Target/TargetRegisterInfo.h" 20 #include "llvm/Pass.h" 21 22 using namespace llvm; 23 24 // Register the RegisterCoalescer interface, providing a nice name to refer to. 25 static RegisterAnalysisGroup<RegisterCoalescer> Z("Register Coalescer"); 26 char RegisterCoalescer::ID = 0; 27 28 // RegisterCoalescer destructor: DO NOT move this to the header file 29 // for RegisterCoalescer or else clients of the RegisterCoalescer 30 // class may not depend on the RegisterCoalescer.o file in the current 31 // .a file, causing alias analysis support to not be included in the 32 // tool correctly! 33 // 34 RegisterCoalescer::~RegisterCoalescer() {} 35 36 // Because of the way .a files work, we must force the SimpleRC 37 // implementation to be pulled in if the RegisterCoalescer classes are 38 // pulled in. Otherwise we run the risk of RegisterCoalescer being 39 // used, but the default implementation not being linked into the tool 40 // that uses it. 41 DEFINING_FILE_FOR(RegisterCoalescer) 42