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

Evan Cheng evan.cheng at apple.com
Thu Jan 31 11:44:44 PST 2008


Hi Dan,

This patch has caused wide spread breakage. All the dejagnu tests are  
broken, etc.

FAIL: /Users/echeng/LLVM/llvm/test/CodeGen/ARM/branch.ll
Failed with signal(SIGABRT) at line 1
while running: llvm-upgrade < /Users/echeng/LLVM/llvm/test/CodeGen/ARM/ 
branch.ll | llvm-as | llc -march=arm -disable-arm-if-conversion >  
branch.ll.tmp
Assertion failed: (ValueType && "Can't get a pointer to <null>  
type!"), function get, file Type.cpp, line 1285.

I see this:
   PseudoSourceValue::PseudoSourceValue(const char *_name) :
     Value(PointerType::getUnqual(Type::Int8Ty), PseudoSourceValueVal),
=>        name(_name) {
   }

This  is a static initializer, so it can't assume Type::Int8Ty has  
been initialized at this point.

Can you take a look? Thanks.

Evan

On Jan 30, 2008, at 8:35 AM, Dan Gohman wrote:

> 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;
> +  }
> +}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list