[LLVMdev] Problem with MemoryDependenceAnalysis

Amr Yehia yehia at iss.rwth-aachen.de
Tue Mar 24 10:25:17 PDT 2009


actually i only created a new Module pass and tried to getAnalysis of 
MemoryDependenceAnalysis from it, i didn't use TargetData directly

to regenerate the error i am attaching a c file containing an example 
code to regenerate the error. with its Makefile
the command line i used is:
opt -time-passes -analyze -load 
${LLVM_PATH}/Release/lib/.libs/libMYMODULEPASS.so -MyModulePass < test.bc

i tried the same but from a function pass and it worked.




John Criswell wrote:
> Amr Yehia wrote:
>   
>> no .. i am calling a function pass from a module pass, adding other 
>> function passes to my module pass works, but when i try to add 
>> MemoryDependenceAnalysis it gives error
>>   
>>     
> I'm going to assume that you're running your passes via a specially 
> built tool and not as a set of passes loaded into the opt program.  If 
> this assumption is wrong, please let me know.
>   

> Looking at the assertion, you're creating a TargetData pass without 
> passing in either a string describing the target or an LLVM Module * 
> from which TargetData can look up the relevant architecture information.
>
> For example, in the hand-written SAFECode tool, the following code 
> should cause the same error:
>
> PassManager Passes;
> Passes.add (new TargetData());
> ...
> Passes.run (*M.get());
>
> However, the following will fix the problem:
>
> PassManager Passes;
> std::auto_ptr<Module> M;
> .... <code that reads an LLVM Module into M from a bitcode file>...
> Passes.add (new TargetData (M.get()));
> ...
> Passes.run (*M.get());
>
> The comments for the constructors in 
> llvm/include/llvm/Target/TargetData.h will help clarify this.
>
> -- John T.
>
>   
>> I want to report a bug but i don't know if this is a real bug or i am 
>> doing something wrong, knowing that i am adding other function passe to 
>> my module pass and it works fine.
>>
>> the error i get:
>>
>> adding callgraph pass ... done
>> opt: /net/home/yehia/llvm/llvm-2.4/include/llvm/Target/TargetData.h:114: 
>> llvm::TargetData::TargetData(): Assertion `0 && "ERROR: Bad TargetData 
>> ctor used.  " "Tool did not specify a TargetData to use?"' failed.
>> adding DependenceFlowGraph_FunctionAnalaysis_Pass ... doneopt[0x75627f]
>> /lib64/libc.so.6[0x3880a30070]
>> /lib64/libc.so.6(gsignal+0x35)[0x3880a30015]
>> /lib64/libc.so.6(abort+0x110)[0x3880a31980]
>> /lib64/libc.so.6(__assert_fail+0xf6)[0x3880a29726]
>> opt[0x6709bd]
>> opt(_ZN4llvm17PMTopLevelManager12schedulePassEPNS_4PassE+0x125)[0x6efa75]
>> opt(_ZN4llvm17PMTopLevelManager12schedulePassEPNS_4PassE+0x190)[0x6efae0]
>> opt(_ZN4llvm13MPPassManager25addLowerLevelRequiredPassEPNS_4PassES2_+0xcc)[0x6f1dfc]
>> opt(_ZN4llvm13PMDataManager3addEPNS_4PassEb+0x2a7)[0x6f4237]
>> opt(main+0x348)[0x485ac8]
>> /lib64/libc.so.6(__libc_start_main+0xf4)[0x3880a1d8a4]
>> opt(sinh+0x39)[0x47b1f9]
>>
>>
>>
>> Devang Patel wrote:
>>   
>>     
>>> On Mar 20, 2009, at 11:19 AM, Amr Yehia wrote:
>>>
>>>   
>>>     
>>>       
>>>>> I am loading the CallGraph pass before it from my module
>>>>>       
>>>>>         
>>>>>           
>>> Aha, so you're actually invoking function pass from a CG pass. See if  
>>> my suggestion from
>>> 	http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-February/020109.html
>>> helps.
>>>
>>> -
>>> Devang
>>>
>>>   
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>   
>>>     
>>>       
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>   
>>     
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>   

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Makefile
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090324/a3465cdb/attachment.ksh>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: regenerateMDAError.cpp
Type: text/x-c++src
Size: 604 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090324/a3465cdb/attachment.cpp>


More information about the llvm-dev mailing list