summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-01-20 19:50:12 +0000
committerChris Lattner <sabre@nondot.org>2004-01-20 19:50:12 +0000
commitdb9b998f636d972b038483a284c67b2802a80d79 (patch)
tree4d3f9d5edce3d38553c14116a7281e30e7694ad2
parentae3664b6088359a9d854c63fedf683ca60f9cf94 (diff)
downloadllvm-db9b998f636d972b038483a284c67b2802a80d79.tar.gz
llvm-db9b998f636d972b038483a284c67b2802a80d79.tar.bz2
llvm-db9b998f636d972b038483a284c67b2802a80d79.tar.xz
Move SlotCalculator.h from include/llvm to include/llvm/Analysis
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10930 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Analysis/SlotCalculator.h7
-rw-r--r--include/llvm/SlotCalculator.h148
-rw-r--r--lib/Bytecode/Writer/SlotCalculator.h7
3 files changed, 6 insertions, 156 deletions
diff --git a/include/llvm/Analysis/SlotCalculator.h b/include/llvm/Analysis/SlotCalculator.h
index 0bf4c42d98..c371a0e5ac 100644
--- a/include/llvm/Analysis/SlotCalculator.h
+++ b/include/llvm/Analysis/SlotCalculator.h
@@ -1,4 +1,4 @@
-//===-- llvm/SlotCalculator.h - Calculate value slots -----------*- C++ -*-===//
+//===-- Analysis/SlotCalculator.h - Calculate value slots -------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -17,12 +17,11 @@
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_SLOTCALCULATOR_H
-#define LLVM_SLOTCALCULATOR_H
+#ifndef LLVM_ANALYSIS_SLOTCALCULATOR_H
+#define LLVM_ANALYSIS_SLOTCALCULATOR_H
#include <vector>
#include <map>
-#include <cassert>
namespace llvm {
diff --git a/include/llvm/SlotCalculator.h b/include/llvm/SlotCalculator.h
deleted file mode 100644
index 0bf4c42d98..0000000000
--- a/include/llvm/SlotCalculator.h
+++ /dev/null
@@ -1,148 +0,0 @@
-//===-- llvm/SlotCalculator.h - Calculate value slots -----------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file was developed by the LLVM research group and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This class calculates the slots that values will land in. This is useful for
-// when writing bytecode or assembly out, because you have to know these things.
-//
-// Specifically, this class calculates the "type plane numbering" that you see
-// for a function if you strip out all of the symbols in it. For assembly
-// writing, this is used when a symbol does not have a name. For bytecode
-// writing, this is always used, and the symbol table is added on later.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_SLOTCALCULATOR_H
-#define LLVM_SLOTCALCULATOR_H
-
-#include <vector>
-#include <map>
-#include <cassert>
-
-namespace llvm {
-
-class Value;
-class Module;
-class Function;
-class SymbolTable;
-class ConstantArray;
-
-class SlotCalculator {
- const Module *TheModule;
-
- /// BuildBytecodeInfo - If true, this is the creating information for the
- /// bytecode writer, if false, we are building information for the assembly
- /// emitter. The assembly emitter doesn't need named objects numbered, among
- /// other differences.
- bool BuildBytecodeInfo;
-
- typedef std::vector<const Value*> TypePlane;
- std::vector<TypePlane> Table;
- std::map<const Value*, unsigned> NodeMap;
-
- /// ConstantStrings - If we are indexing for a bytecode file, this keeps track
- /// of all of the constants strings that need to be emitted.
- std::vector<const ConstantArray*> ConstantStrings;
-
- /// ModuleLevel - Used to keep track of which values belong to the module,
- /// and which values belong to the currently incorporated function.
- ///
- std::vector<unsigned> ModuleLevel;
-
- /// ModuleContainsAllFunctionConstants - This flag is set to true if all
- /// function constants are incorporated into the module constant table. This
- /// is only possible if building information for a bytecode file.
- bool ModuleContainsAllFunctionConstants;
-
- /// CompactionTable/NodeMap - When function compaction has been performed,
- /// these entries provide a compacted view of the namespace needed to emit
- /// instructions in a function body. The 'getSlot()' method automatically
- /// returns these entries if applicable, or the global entries if not.
- std::vector<TypePlane> CompactionTable;
- std::map<const Value*, unsigned> CompactionNodeMap;
-
- SlotCalculator(const SlotCalculator &); // DO NOT IMPLEMENT
- void operator=(const SlotCalculator &); // DO NOT IMPLEMENT
-public:
- SlotCalculator(const Module *M, bool BuildBytecodeInfo);
- // Start out in incorp state
- SlotCalculator(const Function *F, bool BuildBytecodeInfo);
-
- /// getSlot - Return the slot number of the specified value in it's type
- /// plane. This returns < 0 on error!
- ///
- int getSlot(const Value *V) const;
-
- /// getGlobalSlot - Return a slot number from the global table. This can only
- /// be used when a compaction table is active.
- unsigned getGlobalSlot(const Value *V) const;
-
- inline unsigned getNumPlanes() const {
- if (CompactionTable.empty())
- return Table.size();
- else
- return CompactionTable.size();
- }
- inline unsigned getModuleLevel(unsigned Plane) const {
- return Plane < ModuleLevel.size() ? ModuleLevel[Plane] : 0;
- }
-
- TypePlane &getPlane(unsigned Plane);
-
- /// incorporateFunction/purgeFunction - If you'd like to deal with a function,
- /// use these two methods to get its data into the SlotCalculator!
- ///
- void incorporateFunction(const Function *F);
- void purgeFunction();
-
- /// string_iterator/string_begin/end - Access the list of module-level
- /// constant strings that have been incorporated. This is only applicable to
- /// bytecode files.
- typedef std::vector<const ConstantArray*>::const_iterator string_iterator;
- string_iterator string_begin() const { return ConstantStrings.begin(); }
- string_iterator string_end() const { return ConstantStrings.end(); }
-
- const std::vector<TypePlane> &getCompactionTable() const {
- return CompactionTable;
- }
-
-private:
- // getOrCreateSlot - Values can be crammed into here at will... if
- // they haven't been inserted already, they get inserted, otherwise
- // they are ignored.
- //
- int getOrCreateSlot(const Value *D);
-
- // insertValue - Insert a value into the value table... Return the
- // slot that it occupies, or -1 if the declaration is to be ignored
- // because of the IgnoreNamedNodes flag.
- //
- int insertValue(const Value *D, bool dontIgnore = false);
-
- // doInsertValue - Small helper function to be called only be insertVal.
- int doInsertValue(const Value *D);
-
- // processModule - Process all of the module level function declarations and
- // types that are available.
- //
- void processModule();
-
- // processSymbolTable - Insert all of the values in the specified symbol table
- // into the values table...
- //
- void processSymbolTable(const SymbolTable *ST);
- void processSymbolTableConstants(const SymbolTable *ST);
-
- void buildCompactionTable(const Function *F);
- unsigned getOrCreateCompactionTableSlot(const Value *V);
- void pruneCompactionTable();
-};
-
-} // End llvm namespace
-
-#endif
diff --git a/lib/Bytecode/Writer/SlotCalculator.h b/lib/Bytecode/Writer/SlotCalculator.h
index 0bf4c42d98..c371a0e5ac 100644
--- a/lib/Bytecode/Writer/SlotCalculator.h
+++ b/lib/Bytecode/Writer/SlotCalculator.h
@@ -1,4 +1,4 @@
-//===-- llvm/SlotCalculator.h - Calculate value slots -----------*- C++ -*-===//
+//===-- Analysis/SlotCalculator.h - Calculate value slots -------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -17,12 +17,11 @@
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_SLOTCALCULATOR_H
-#define LLVM_SLOTCALCULATOR_H
+#ifndef LLVM_ANALYSIS_SLOTCALCULATOR_H
+#define LLVM_ANALYSIS_SLOTCALCULATOR_H
#include <vector>
#include <map>
-#include <cassert>
namespace llvm {