[LLVMdev] Verifier Error
aditya vishnubhotla
vvaditya12 at yahoo.com
Mon Mar 10 09:42:52 PDT 2008
Hi,
I tried creating intrinsics which
are to be placeholders for a set of instructions
which
should not be executed by the backend.
I get the following verifier error.
The "indvar.next4" instruction being mentioned in the
step wise debug is
not present in the LLVM IR (i.e IR before application
of my transformation Pass).
As seen below the operands of this instructions
causing the segfault are NULL
pointers. I am quite puzzled where this error is
coming from and would
be thankful for any hints in this regard.
Aditya
P.S :
Error:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1076469152 (LWP 31487)]
0x0861bf59 in llvm::PATypeHolder::get (this=0x8) at
Type.cpp:46
46 const Type *NewTy = Ty->getForwardedType();
(gdb) bt
#0 0x0861bf59 in llvm::PATypeHolder::get (this=0x8)
at Type.cpp:46
#1 0x0837cac5 in llvm::PATypeHolder::operator
llvm::Type* (this=0x8)
at
/work/aditya/llvm-2.2/include/llvm/AbstractTypeUser.h:149
#2 0x0837cadc in llvm::Value::getType (this=0x0)
at /work/aditya/llvm-2.2/include/llvm/Value.h:87
#3 0x08637b52 in (anonymous
namespace)::Verifier::visitBinaryOperator
(this=0x8794f18, B=@0x87994a8) at Verifier.cpp:905
#4 0x0863d81e in llvm::InstVisitor<(anonymous
namespace)::Verifier,
void>::visitAdd (this=0x8794f18, I=@0x87994a8)
at
/work/aditya/llvm-2.2/include/llvm/Instruction.def:107
#5 0x0863de16 in llvm::InstVisitor<(anonymous
namespace)::Verifier,
void>::visit (this=0x8794f18, I=@0x87994a8)
at
/work/aditya/llvm-2.2/include/llvm/Instruction.def:107
#6 0x0863e229 in llvm::InstVisitor<(anonymous
namespace)::Verifier,
void>::visit<llvm::ilist_iterator<llvm::Instruction>
(this=0x8794f18,
Start=
{<bidirectional_iterator<llvm::Instruction,int>> = {<>
= {<No data
fields>}, <No data fields>}, NodePtr = 0x877fdd0},
End=
{<bidirectional_iterator<llvm::Instruction,int>> = {<>
= {<No data
fields>}, <No data fields>}, NodePtr = 0x8780030})
at
/work/aditya/llvm-2.2/include/llvm/Support/InstVisitor.h:92
#7 0x0863e2a0 in llvm::InstVisitor<(anonymous
namespace)::Verifier,
void>::visit (this=0x8794f18, BB=@0x877cc28)
at
/work/aditya/llvm-2.2/include/llvm/Support/InstVisitor.h:107
#8 0x0863e2eb in llvm::InstVisitor<(anonymous
namespace)::Verifier,
void>::visit<llvm::ilist_iterator<llvm::BasicBlock> >
(this=0x8794f18,
Start=
{<bidirectional_iterator<llvm::BasicBlock,int>> = {<>
= {<No data
fields>}, <No data fields>}, NodePtr = 0x877cc50},
End=
{<bidirectional_iterator<llvm::BasicBlock,int>>
= {<> = {<No data
fields>}, <No data fields>}, NodePtr = 0x877c9a8})
at
/work/aditya/llvm-2.2/include/llvm/Support/InstVisitor.h:92
#9 0x0863e508 in llvm::InstVisitor<(anonymous
namespace)::Verifier,
void>::visit (this=0x8794f18, F=@0x8777980)
at
/work/aditya/llvm-2.2/include/llvm/Support/InstVisitor.h:103
#10 0x0863e557 in (anonymous
namespace)::Verifier::runOnFunction
(this=0x8794f18, F=@0x8777980) at Verifier.cpp:155
#11 0x0860e6ea in llvm::FPPassManager::runOnFunction
(this=0x8793ca8,
F=@0x8777980) at PassManager.cpp:1171
#12 0x0860e896 in llvm::FPPassManager::runOnModule
(this=0x8793ca8,
M=@0x8773d10) at PassManager.cpp:1191
#13 0x0860e3ba in llvm::MPPassManager::runOnModule
(this=0x87731d8,
M=@0x8773d10) at PassManager.cpp:1240
#14 0x0860e570 in llvm::PassManagerImpl::run
(this=0x87766b8, M=@0x8773d10)
at PassManager.cpp:1313
#15 0x0860e5c2 in llvm::PassManager::run
(this=0xbfaeecf8, M=@0x8773d10) at
PassManager.cpp:1345
#16 0x0836680d in main (argc=13, argv=0xbfaeeee4) at
opt.cpp:426
When I tried debugging stepwise
Error:
Breakpoint 1, (anonymous
namespace)::Verifier::visitBinaryOperator
(this=0x8794f08, B=@0x87996a8) at Verifier.cpp:905
905 Assert1(B.getOperand(0)->getType() ==
B.getOperand(1)->getType(),
1: B.getName () = {static npos = 4294967295,
_M_dataplus =
{<std::allocator<char>> =
{<__gnu_cxx::new_allocator<char>> = {<No data
fields>}, <No data fields>}, _M_p = 0x879bfdc
"indvar.next4"}}
(gdb) print B->getParent()->getName()
Attempt to take contents of a non-pointer value.
(gdb) print B->getParent()
Attempt to take contents of a non-pointer value.
(gdb) print B.getOperand(0)
$25 = (class llvm::Value *) 0x0
(gdb) print B.getOperand(1)
$26 = (class llvm::Value *) 0x0
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
More information about the llvm-dev
mailing list