[llvm-commits] [llvm] r46556 - in /llvm/trunk: include/llvm/CodeGen/PseudoSourceValue.h include/llvm/Value.h lib/CodeGen/PseudoSourceValue.cpp

Dan Gohman djg at cray.com
Wed Jan 30 08:35:32 PST 2008


Author: djg
Date: Wed Jan 30 10:35:31 2008
New Revision: 46556

URL: http://llvm.org/viewvc/llvm-project?rev=46556&view=rev
Log:
Add a new PseudoSourceValue class, which will be used to help track
memory reference information in the backend. Most of this was written by
Florian Brander, cleanup and updating to TOT by me.

Added:
    llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h
    llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp
Modified:
    llvm/trunk/include/llvm/Value.h

Added: llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h?rev=46556&view=auto

==============================================================================
--- llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h (added)
+++ llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h Wed Jan 30 10:35:31 2008
@@ -0,0 +1,62 @@
+//===-- llvm/CodeGen/PseudoSourceValue.h ------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains the declaration of the PseudoSourceValue class.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CODEGEN_PSEUDOSOURCEVALUE_H
+#define LLVM_CODEGEN_PSEUDOSOURCEVALUE_H
+
+#include "llvm/Value.h"
+
+namespace llvm {
+  /// PseudoSourceValue - Special value supplied for machine level alias
+  /// analysis. It indicates that the a memory access references the functions
+  /// stack frame (e.g., a spill slot), below the stack frame (e.g., argument
+  /// space), or constant pool.
+  class PseudoSourceValue : public Value {
+    const char *name;
+  public:
+    explicit PseudoSourceValue(const char *_name);
+
+    virtual void print(std::ostream &OS) const;
+
+    /// classof - Methods for support type inquiry through isa, cast, and
+    /// dyn_cast:
+    ///
+    static inline bool classof(const PseudoSourceValue *) { return true; }
+    static inline bool classof(const Value *V) {
+      return V->getValueID() == PseudoSourceValueVal;
+    }
+
+    /// A pseudo source value referencing to the stack frame of a function,
+    /// e.g., a spill slot.
+    static const PseudoSourceValue FPRel;
+
+    /// A source value referencing the area below the stack frame of a function,
+    /// e.g., the argument space.
+    static const PseudoSourceValue SPRel;
+
+    /// A source value referencing the global offset table (or something the
+    /// like).
+    static const PseudoSourceValue GPRel;
+
+    /// A source value relative to some kind of thread id/pointer.
+    static const PseudoSourceValue TPRel;
+
+    /// A SV referencing the constant pool
+    static const PseudoSourceValue CPRel;
+
+    /// A SV referencing the jump table
+    static const PseudoSourceValue JTRel;
+  };
+} // End llvm namespace
+
+#endif

Modified: llvm/trunk/include/llvm/Value.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Value.h?rev=46556&r1=46555&r2=46556&view=diff

==============================================================================
--- llvm/trunk/include/llvm/Value.h (original)
+++ llvm/trunk/include/llvm/Value.h Wed Jan 30 10:35:31 2008
@@ -188,6 +188,7 @@
     ConstantPointerNullVal,   // This is an instance of ConstantPointerNull
     InlineAsmVal,             // This is an instance of InlineAsm
     InstructionVal,           // This is an instance of Instruction
+    PseudoSourceValueVal,     // This is an instance of PseudoSourceValue
     
     // Markers:
     ConstantFirstVal = FunctionVal,

Added: llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp?rev=46556&view=auto

==============================================================================
--- llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp (added)
+++ llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp Wed Jan 30 10:35:31 2008
@@ -0,0 +1,33 @@
+//===-- llvm/CodeGen/PseudoSourceValue.cpp ----------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements the PseudoSourceValue class.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/CodeGen/PseudoSourceValue.h"
+#include "llvm/DerivedTypes.h"
+
+namespace llvm {
+  const PseudoSourceValue PseudoSourceValue::FPRel("FPRel");
+  const PseudoSourceValue PseudoSourceValue::SPRel("SPRel");
+  const PseudoSourceValue PseudoSourceValue::GPRel("GPRel");
+  const PseudoSourceValue PseudoSourceValue::TPRel("TPRel");
+  const PseudoSourceValue PseudoSourceValue::CPRel("CPRel");
+  const PseudoSourceValue PseudoSourceValue::JTRel("JTRel");
+
+  PseudoSourceValue::PseudoSourceValue(const char *_name) :
+    Value(PointerType::getUnqual(Type::Int8Ty), PseudoSourceValueVal),
+          name(_name) {
+  }
+
+  void PseudoSourceValue::print(std::ostream &OS) const {
+    OS << name;
+  }
+}





More information about the llvm-commits mailing list