[LLVMbugs] Re: tblgen bug?

Chris Lattner sabre at nondot.org
Tue Sep 7 17:02:56 PDT 2004


On Fri, 3 Sep 2004, Reid Spencer wrote:

> Follow up ...
>
> The problem is that an exception is thrown by Record::getValueAsDag. The
> offending lines of code are:
>
> 723       if (DagInit *DI = dynamic_cast<DagInit*>(R->getValue()))
> 724         return DI;
> 725       throw "Record '" + getName() + "', field '" + FieldName +
> 726             "' does not have a dag initializer!";
>
> The dynamic_cast produced 0 I guess.  What could cause this?

The problem is a bug in the .td file.  The code generator generator
tblgen component expects a particular field of an Instruction definition
to be a "dag" type, but it is getting something else.  What is the string
that gets thrown?  It should tell you exactly what needs to be fixed.

-Chris

> Reid Spencer wrote:
>
> > I'm getting the following during a rebuild on linux. This problem also
> > caused the nightly test to fail on Linux last night:
> >
> > gmake[3]: Entering directory `/proj/work/llvm/build/lib/Target/PowerPC'
> > Building PowerPC instruction names with tblgen
> > terminate called after throwing an instance of 'std::string'
> > /proj/work/llvm/build/tools/Debug/tblgen((anonymous
> > namespace)::PrintStackTrace()+0x1a)[0x80f941a]
> > /proj/work/llvm/build/tools/Debug/tblgen((anonymous
> > namespace)::SignalHandler(int)+0xc7)[0x80f9687]
> > /lib/tls/libc.so.6[0x420277b8]
> > /lib/tls/libc.so.6(abort+0x1d5)[0x42028c55]
> > /proj/install/lib/libstdc++.so.6(__gnu_cxx::__verbose_terminate_handler()+0x101)[0x400a6081]
> >
> > /proj/install/lib/libstdc++.so.6(__cxxabiv1::__terminate(void
> > (*)())+0x15)[0x400a3c65]
> > /proj/install/lib/libstdc++.so.6[0x400a3ca2]
> > /proj/install/lib/libstdc++.so.6[0x400a3e22]
> > /proj/work/llvm/build/tools/Debug/tblgen(llvm::Record::getValueAsDag(std::basic_string<char,
> > std::char_traits<char>, std::allocator<char> > const&)
> > const+0x313)[0x80dd3f5]
> > /proj/work/llvm/build/tools/Debug/tblgen(llvm::CodeGenInstruction::CodeGenInstruction[in-charge](llvm::Record*,
> > std::basic_string<char, std::char_traits<char>, std::allocator<char> >
> > const&)+0x691)[0x80a9daf]
> > /proj/work/llvm/build/tools/Debug/tblgen(llvm::CodeGenTarget::ReadInstructions()
> > const+0x2e2)[0x80a82b2]
> > /proj/work/llvm/build/tools/Debug/tblgen(llvm::CodeGenTarget::getInstructions()
> > const+0x2f)[0x809fc71]
> > /proj/work/llvm/build/tools/Debug/tblgen(llvm::CodeGenTarget::inst_begin()
> > const+0x21)[0x809fc27]
> > /proj/work/llvm/build/tools/Debug/tblgen(llvm::InstrInfoEmitter::runEnums(std::basic_ostream<char,
> > std::char_traits<char> >&)+0x194)[0x80c1904]
> > /proj/work/llvm/build/tools/Debug/tblgen(main+0x3de)[0x80e6b9a]
> > /lib/tls/libc.so.6(__libc_start_main+0xe4)[0x42015704]
> > /proj/work/llvm/build/tools/Debug/tblgen(std::basic_string<char,
> > std::char_traits<char>, std::allocator<char> >::append(char const*,
> > unsigned)+0x41)[0x809ec21]
> > gmake[3]: *** [PowerPCGenInstrNames.inc] Aborted (core dumped)
> > gmake[3]: Leaving directory `/proj/work/llvm/build/lib/Target/PowerPC'
> > gmake[2]: *** [all] Error 1
> > gmake[2]: Leaving directory `/proj/work/llvm/build/lib/Target'
> > gmake[1]: *** [Target/.makeall] Error 2
> > gmake[1]: Leaving directory `/proj/work/llvm/build/lib'
> > gmake: *** [all] Error 1
> >
> >
>
> _______________________________________________
> LLVMbugs mailing list
> LLVMbugs at cs.uiuc.edu
> http://mail.cs.uiuc.edu/mailman/listinfo/llvmbugs
>

-Chris

-- 
http://llvm.org/
http://nondot.org/sabre/




More information about the llvm-bugs mailing list