aboutsummaryrefslogtreecommitdiffstats
path: root/lib/AsmParser/ParserInternals.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/AsmParser/ParserInternals.h')
-rw-r--r--lib/AsmParser/ParserInternals.h260
1 files changed, 0 insertions, 260 deletions
diff --git a/lib/AsmParser/ParserInternals.h b/lib/AsmParser/ParserInternals.h
deleted file mode 100644
index 8af27c7..0000000
--- a/lib/AsmParser/ParserInternals.h
+++ /dev/null
@@ -1,260 +0,0 @@
-//===-- ParserInternals.h - Definitions internal to the parser --*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This header file defines the various variables that are shared among the
-// different components of the parser...
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef PARSER_INTERNALS_H
-#define PARSER_INTERNALS_H
-
-#include "llvm/Constants.h"
-#include "llvm/DerivedTypes.h"
-#include "llvm/Attributes.h"
-#include "llvm/Function.h"
-#include "llvm/Instructions.h"
-#include "llvm/Assembly/Parser.h"
-#include "llvm/ADT/StringExtras.h"
-#include "llvm/ADT/APFloat.h"
-#include "llvm/ADT/APSInt.h"
-namespace llvm { class MemoryBuffer; }
-
-// Global variables exported from the lexer...
-
-extern llvm::ParseError* TheParseError; /// FIXME: Not threading friendly
-
-// functions exported from the lexer
-void InitLLLexer(llvm::MemoryBuffer *MB);
-const char *LLLgetTokenStart();
-unsigned LLLgetTokenLength();
-std::string LLLgetFilename();
-unsigned LLLgetLineNo();
-void FreeLexer();
-
-namespace llvm {
-class Module;
-
-// RunVMAsmParser - Parse a buffer and return Module
-Module *RunVMAsmParser(llvm::MemoryBuffer *MB);
-
-// GenerateError - Wrapper around the ParseException class that automatically
-// fills in file line number and column number and options info.
-//
-// This also helps me because I keep typing 'throw new ParseException' instead
-// of just 'throw ParseException'... sigh...
-//
-extern void GenerateError(const std::string &message, int LineNo = -1);
-
-/// InlineAsmDescriptor - This is a simple class that holds info about inline
-/// asm blocks, for use by ValID.
-struct InlineAsmDescriptor {
- std::string AsmString, Constraints;
- bool HasSideEffects;
-
- InlineAsmDescriptor(const std::string &as, const std::string &c, bool HSE)
- : AsmString(as), Constraints(c), HasSideEffects(HSE) {}
-};
-
-
-// ValID - Represents a reference of a definition of some sort. This may either
-// be a numeric reference or a symbolic (%var) reference. This is just a
-// discriminated union.
-//
-// Note that I can't implement this class in a straight forward manner with
-// constructors and stuff because it goes in a union.
-//
-struct ValID {
- enum {
- LocalID, GlobalID, LocalName, GlobalName,
- ConstSIntVal, ConstUIntVal, ConstAPInt, ConstFPVal, ConstNullVal,
- ConstUndefVal, ConstZeroVal, ConstantVal, InlineAsmVal
- } Type;
-
- union {
- unsigned Num; // If it's a numeric reference like %1234
- std::string *Name; // If it's a named reference. Memory must be deleted.
- int64_t ConstPool64; // Constant pool reference. This is the value
- uint64_t UConstPool64; // Unsigned constant pool reference.
- APSInt *ConstPoolInt; // Large Integer constant pool reference
- APFloat *ConstPoolFP; // Floating point constant pool reference
- Constant *ConstantValue; // Fully resolved constant for ConstantVal case.
- InlineAsmDescriptor *IAD;
- };
-
- static ValID createLocalID(unsigned Num) {
- ValID D; D.Type = LocalID; D.Num = Num; return D;
- }
- static ValID createGlobalID(unsigned Num) {
- ValID D; D.Type = GlobalID; D.Num = Num; return D;
- }
- static ValID createLocalName(const std::string &Name) {
- ValID D; D.Type = LocalName; D.Name = new std::string(Name); return D;
- }
- static ValID createGlobalName(const std::string &Name) {
- ValID D; D.Type = GlobalName; D.Name = new std::string(Name); return D;
- }
-
- static ValID create(int64_t Val) {
- ValID D; D.Type = ConstSIntVal; D.ConstPool64 = Val; return D;
- }
-
- static ValID create(uint64_t Val) {
- ValID D; D.Type = ConstUIntVal; D.UConstPool64 = Val; return D;
- }
-
- static ValID create(APFloat *Val) {
- ValID D; D.Type = ConstFPVal; D.ConstPoolFP = Val; return D;
- }
-
- static ValID create(const APInt &Val, bool isSigned) {
- ValID D; D.Type = ConstAPInt;
- D.ConstPoolInt = new APSInt(Val, !isSigned);
- return D;
- }
-
-
- static ValID createNull() {
- ValID D; D.Type = ConstNullVal; return D;
- }
-
- static ValID createUndef() {
- ValID D; D.Type = ConstUndefVal; return D;
- }
-
- static ValID createZeroInit() {
- ValID D; D.Type = ConstZeroVal; return D;
- }
-
- static ValID create(Constant *Val) {
- ValID D; D.Type = ConstantVal; D.ConstantValue = Val; return D;
- }
-
- static ValID createInlineAsm(const std::string &AsmString,
- const std::string &Constraints,
- bool HasSideEffects) {
- ValID D;
- D.Type = InlineAsmVal;
- D.IAD = new InlineAsmDescriptor(AsmString, Constraints, HasSideEffects);
- return D;
- }
-
- inline void destroy() const {
- if (Type == LocalName || Type == GlobalName)
- delete Name; // Free this strdup'd memory.
- else if (Type == InlineAsmVal)
- delete IAD;
- else if (Type == ConstAPInt)
- delete ConstPoolInt;
- else if (Type == ConstFPVal)
- delete ConstPoolFP;
- }
-
- inline ValID copy() const {
- ValID Result = *this;
- if (Type == ConstAPInt)
- Result.ConstPoolInt = new APSInt(*ConstPoolInt);
-
- if (Type != LocalName && Type != GlobalName) return Result;
- Result.Name = new std::string(*Name);
- return Result;
- }
-
- inline std::string getName() const {
- switch (Type) {
- case LocalID : return '%' + utostr(Num);
- case GlobalID : return '@' + utostr(Num);
- case LocalName : return *Name;
- case GlobalName : return *Name;
- case ConstAPInt : return ConstPoolInt->toString(10);
- case ConstFPVal : return ftostr(*ConstPoolFP);
- case ConstNullVal : return "null";
- case ConstUndefVal : return "undef";
- case ConstZeroVal : return "zeroinitializer";
- case ConstUIntVal :
- case ConstSIntVal : return std::string("%") + itostr(ConstPool64);
- case ConstantVal:
- if (ConstantValue == ConstantInt::getTrue()) return "true";
- if (ConstantValue == ConstantInt::getFalse()) return "false";
- return "<constant expression>";
- default:
- assert(0 && "Unknown value!");
- abort();
- return "";
- }
- }
-
- bool operator<(const ValID &V) const {
- if (Type != V.Type) return Type < V.Type;
- switch (Type) {
- case LocalID:
- case GlobalID: return Num < V.Num;
- case LocalName:
- case GlobalName: return *Name < *V.Name;
- case ConstSIntVal: return ConstPool64 < V.ConstPool64;
- case ConstUIntVal: return UConstPool64 < V.UConstPool64;
- case ConstAPInt: return ConstPoolInt->ult(*V.ConstPoolInt);
- case ConstFPVal: return ConstPoolFP->compare(*V.ConstPoolFP) ==
- APFloat::cmpLessThan;
- case ConstNullVal: return false;
- case ConstUndefVal: return false;
- case ConstZeroVal: return false;
- case ConstantVal: return ConstantValue < V.ConstantValue;
- default: assert(0 && "Unknown value type!"); return false;
- }
- }
-
- bool operator==(const ValID &V) const {
- if (Type != V.Type) return false;
-
- switch (Type) {
- default: assert(0 && "Unknown value type!");
- case LocalID:
- case GlobalID: return Num == V.Num;
- case LocalName:
- case GlobalName: return *Name == *(V.Name);
- case ConstSIntVal: return ConstPool64 == V.ConstPool64;
- case ConstUIntVal: return UConstPool64 == V.UConstPool64;
- case ConstAPInt: return *ConstPoolInt == *V.ConstPoolInt;
- case ConstFPVal: return ConstPoolFP->compare(*V.ConstPoolFP) ==
- APFloat::cmpEqual;
- case ConstantVal: return ConstantValue == V.ConstantValue;
- case ConstNullVal: return true;
- case ConstUndefVal: return true;
- case ConstZeroVal: return true;
- }
- }
-};
-
-struct TypeWithAttrs {
- llvm::PATypeHolder *Ty;
- Attributes Attrs;
-};
-
-typedef std::vector<TypeWithAttrs> TypeWithAttrsList;
-
-struct ArgListEntry {
- Attributes Attrs;
- llvm::PATypeHolder *Ty;
- std::string *Name;
-};
-
-typedef std::vector<struct ArgListEntry> ArgListType;
-
-struct ParamListEntry {
- Value *Val;
- Attributes Attrs;
-};
-
-typedef std::vector<ParamListEntry> ParamList;
-
-
-} // End llvm namespace
-
-#endif