[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