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