blob: e1eb4e01a29a692abce8d044289e64772b24bed2 [file] [log] [blame]
Dan Gohman69de1932008-02-06 22:27:42 +00001//===-- llvm/CodeGen/PseudoSourceValue.cpp ----------------------*- C++ -*-===//
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 PseudoSourceValue class.
11//
12//===----------------------------------------------------------------------===//
13
14#include "llvm/CodeGen/PseudoSourceValue.h"
15#include "llvm/DerivedTypes.h"
16#include "llvm/Support/ManagedStatic.h"
17
18namespace llvm {
19 static ManagedStatic<PseudoSourceValue[5]> PSVs;
20
Dan Gohman3069b872008-02-07 18:41:25 +000021 const PseudoSourceValue *PseudoSourceValue::getFixedStack() { return &(*PSVs)[0]; }
22 const PseudoSourceValue *PseudoSourceValue::getStack() { return &(*PSVs)[1]; }
23 const PseudoSourceValue *PseudoSourceValue::getGOT() { return &(*PSVs)[2]; }
24 const PseudoSourceValue *PseudoSourceValue::getConstantPool() { return &(*PSVs)[3]; }
25 const PseudoSourceValue *PseudoSourceValue::getJumpTable() { return &(*PSVs)[4]; }
Dan Gohman69de1932008-02-06 22:27:42 +000026
27 static const char *PSVNames[] = {
28 "FixedStack",
29 "Stack",
30 "GOT",
31 "ConstantPool",
32 "JumpTable"
33 };
34
35 PseudoSourceValue::PseudoSourceValue() :
36 Value(PointerType::getUnqual(Type::Int8Ty), PseudoSourceValueVal) {}
37
38 void PseudoSourceValue::print(std::ostream &OS) const {
39 OS << PSVNames[this - *PSVs];
40 }
41}