-
Notifications
You must be signed in to change notification settings - Fork 14.9k
Description
Bugzilla Link | 3015 |
Resolution | FIXED |
Resolved on | Nov 06, 2008 13:49 |
Version | 2.4 |
OS | All |
Attachments | Test case using MemoryDependenceAnalysis |
Reporter | LLVM Bugzilla Contributor |
Extended Description
Crashes when adding the ModulePass to the PassManager with the following:
Assertion failed: (0 && "ERROR: Bad TargetData ctor used. " "Tool did not specify a TargetData to use?"), function TargetData, file /Users/nkeynes/src/llvm-2.3/include/llvm/Target/TargetData.h, line 114.
A valid TargetData is in the PassManager, but for some reason this is not being picked up and it attempts to create a new TargetData (which unsurprisingly fails). The simplest way to reproduce is to require MemoryDependenceAnalysis from a ModulePass (see attached test case)
I'm not certain if this is a bug per se or an unsupported configuration, but I can't find anything in the pass documentation to suggest that this is not supposed to work.
Backtrace:
#0 0x90940b9e in __kill ()
#1 0x90940b91 in kill$UNIX2003 ()
#2 0x909b7ec2 in raise ()
#3 0x909c747f in abort ()
#4 0x909b9063 in __assert_rtn ()
#5 0x00014354 in llvm::TargetData::TargetData (this=0x400a30) at Target/TargetData.h:113
#6 0x00014365 in llvm::TargetData::TargetData (this=0x400a30) at Target/TargetData.h:116
#7 0x00014385 in llvm::callDefaultCtorllvm::TargetData () at PassSupport.h:164
#8 0x000a5551 in llvm::PassInfo::createPass (this=0x123a20) at PassSupport.h:100
#9 0x000a270b in llvm::PMTopLevelManager::schedulePass (this=0x40098c, P=0x400a00) at PassManager.cpp:444
#10 0x000a274f in llvm::PMTopLevelManager::schedulePass (this=0x40098c, P=0x409630) at PassManager.cpp:449
#11 0x000aa751 in llvm::FunctionPassManagerImpl::add (this=0x400920, P=0x409630) at PassManager.cpp:134
#12 0x000a5175 in llvm::MPPassManager::addLowerLevelRequiredPass (this=0x400880, P=0x4097e0, RequiredPass=0x409630) at PassManager.cpp:1283
#13 0x000a47ba in llvm::PMDataManager::add (this=0x400898, P=0x4097e0, ProcessAnalysis=true) at PassManager.cpp:742
#14 0x000a48b4 in llvm::ModulePass::assignPassManager (this=0x4097e0, PMS=@0x4013a0, PreferredType=llvm::PMT_Unknown) at PassManager.cpp:1453
#15 0x000b06a7 in llvm::PassManagerImpl::addTopLevelPass (this=0x401330, P=0x4097e0) at PassManager.cpp:298
#16 0x000a27a7 in llvm::PMTopLevelManager::schedulePass (this=0x40139c, P=0x4097e0) at PassManager.cpp:456
#17 0x000aa733 in llvm::PassManagerImpl::add (this=0x401330, P=0x4097e0) at PassManager.cpp:274
#18 0x000a27d3 in llvm::PassManager::add (this=0xbfffebfc, P=0x4097e0) at PassManager.cpp:1347
#19 0x00002462 in main (argc=2, argv=0xbfffec38) at TestPass.cpp:41
Reproducible with 2.3 and 2.4, on Solaris and OS X, not dependent on any particular bytecode.