RegisterCoalescer.cpp revision 844731a7f1909f55935e3514c9e713a62d67662e
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
22using namespace llvm;
23
24// Register the RegisterCoalescer interface, providing a nice name to refer to.
25static RegisterAnalysisGroup<RegisterCoalescer> Z("Register Coalescer");
26char 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//
34RegisterCoalescer::~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.
41DEFINING_FILE_FOR(RegisterCoalescer)
42