1249259Sdim//===-- ErlangGC.cpp - Erlang/OTP GC strategy -------------------*- C++ -*-===//
2249259Sdim//
3249259Sdim//                     The LLVM Compiler Infrastructure
4249259Sdim//
5249259Sdim// This file is distributed under the University of Illinois Open Source
6249259Sdim// License. See LICENSE.TXT for details.
7249259Sdim//
8249259Sdim//===----------------------------------------------------------------------===//
9249259Sdim//
10249259Sdim// This file implements the Erlang/OTP runtime-compatible garbage collector
11249259Sdim// (e.g. defines safe points, root initialization etc.)
12249259Sdim//
13249259Sdim// The frametable emitter is in ErlangGCPrinter.cpp.
14249259Sdim//
15249259Sdim//===----------------------------------------------------------------------===//
16249259Sdim
17249259Sdim#include "llvm/CodeGen/GCs.h"
18249259Sdim#include "llvm/CodeGen/GCStrategy.h"
19249259Sdim#include "llvm/CodeGen/MachineInstrBuilder.h"
20249259Sdim#include "llvm/MC/MCContext.h"
21249259Sdim#include "llvm/MC/MCSymbol.h"
22249259Sdim#include "llvm/Target/TargetInstrInfo.h"
23249259Sdim#include "llvm/Target/TargetMachine.h"
24280031Sdim#include "llvm/Target/TargetSubtargetInfo.h"
25249259Sdim
26249259Sdimusing namespace llvm;
27249259Sdim
28249259Sdimnamespace {
29249259Sdim
30288943Sdimclass ErlangGC : public GCStrategy {
31288943Sdimpublic:
32288943Sdim  ErlangGC();
33288943Sdim};
34249259Sdim}
35249259Sdim
36288943Sdimstatic GCRegistry::Add<ErlangGC> X("erlang",
37288943Sdim                                   "erlang-compatible garbage collector");
38249259Sdim
39288943Sdimvoid llvm::linkErlangGC() {}
40249259Sdim
41249259SdimErlangGC::ErlangGC() {
42249259Sdim  InitRoots = false;
43249259Sdim  NeededSafePoints = 1 << GC::PostCall;
44249259Sdim  UsesMetadata = true;
45249259Sdim  CustomRoots = false;
46249259Sdim}
47