Skip to content

Failure with ModulePass -> FunctionPass -> AliasAnalysis pass chain #3387

@llvmbot

Description

@llvmbot
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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions