From e0bc0c1822c5288fe0d3da76d9b357f2f9a7251a Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Sun, 4 Jul 2004 11:36:31 +0000 Subject: [PATCH] Move SlotCalculator.h to lib/Bytecode/Writer since that is the only place that needs it after the Type != Value changes (bug 122). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14605 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Analysis/SlotCalculator.h | 141 --------------------------------- 1 file changed, 141 deletions(-) delete mode 100644 include/llvm/Analysis/SlotCalculator.h diff --git a/include/llvm/Analysis/SlotCalculator.h b/include/llvm/Analysis/SlotCalculator.h deleted file mode 100644 index 923b173a8a5..00000000000 --- a/include/llvm/Analysis/SlotCalculator.h +++ /dev/null @@ -1,141 +0,0 @@ -//===-- Analysis/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_ANALYSIS_SLOTCALCULATOR_H -#define LLVM_ANALYSIS_SLOTCALCULATOR_H - -#include -#include - -namespace llvm { - -class Value; -class Module; -class Function; -class SymbolTable; -class ConstantArray; - -class SlotCalculator { - const Module *TheModule; - - typedef std::vector TypePlane; - std::vector Table; - std::map 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 ConstantStrings; - - /// ModuleLevel - Used to keep track of which values belong to the module, - /// and which values belong to the currently incorporated function. - /// - std::vector 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 CompactionTable; - std::map CompactionNodeMap; - - SlotCalculator(const SlotCalculator &); // DO NOT IMPLEMENT - void operator=(const SlotCalculator &); // DO NOT IMPLEMENT -public: - SlotCalculator(const Module *M); - // Start out in incorp state - SlotCalculator(const Function *F); - - /// 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_iterator string_iterator; - string_iterator string_begin() const { return ConstantStrings.begin(); } - string_iterator string_end() const { return ConstantStrings.end(); } - - const std::vector &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 -- 2.11.0