[llvm-dev] Running Scalar Evolution on Modules on an ad-hoc basis

via llvm-dev llvm-dev at lists.llvm.org
Tue Jan 16 15:16:16 PST 2018


Hello!
 
 I am attempting to write a program which can analyze multiple llvm 
 modules. Specifically, I want to use scalar evolution on different 
 modules while being able to refer to the results across all modules thus 
 processed.
 
Ideally I don't want to do it as an LTO pass -- I don't know which modules
I need to check at the time the program starts running.
 
 My current attempt at an MVP is attached. However, it segfaults on line 
 41. My suspicion is that the prerequisite passes that ScalarEvolution 
 relies on aren't being run, but I could be entirely mistaken on this. 
 Can anyone give me a pointer toward how to do this correctly?
 
 Thank you!
 
 Eli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180116/1a427530/attachment.html>
-------------- next part --------------
(gdb) r
Starting program: /home/ebdavis/Documents/llvm-build/bin/dfsan-scev-parse if.bc
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
I:   %0 = load i32, i32* getelementptr inbounds ([64 x i32], [64 x i32]* @__dfsan_arg_tls, i64 0, i64 2), !dbg !18
SCEV:
Program received signal SIGSEGV, Segmentation fault.
llvm::DenseMap<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*> >::getBuckets (this=0x78) at /home/ebdavis/Documents/llvm-project/llvm/include/llvm/ADT/DenseMap.h:739
739         return Buckets;
(gdb) bt
#0  llvm::DenseMap<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*> >::getBuckets (this=0x78) at /home/ebdavis/Documents/llvm-project/llvm/include/llvm/ADT/DenseMap.h:739
#1  0x00000000009b1a45 in llvm::DenseMapBase<llvm::DenseMap<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*> >, llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*> >::getBuckets (this=0x78) at /home/ebdavis/Documents/llvm-project/llvm/include/llvm/ADT/DenseMap.h:441
#2  0x00000000009b1cda in llvm::DenseMapBase<llvm::DenseMap<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*> >, llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*> >::LookupBucketFor<llvm::Value*> (this=0x78, Val=@0x7fffffffd508: 0xda5a68, FoundBucket=@0x7fffffffd410: 0x0) at /home/ebdavis/Documents/llvm-project/llvm/include/llvm/ADT/DenseMap.h:534
#3  0x00000000009b1ba8 in llvm::DenseMapBase<llvm::DenseMap<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*> >, llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*> >::LookupBucketFor<llvm::Value*> (this=0x78, Val=@0x7fffffffd508: 0xda5a68, FoundBucket=@0x7fffffffd468: 0x100000000da5910) at /home/ebdavis/Documents/llvm-project/llvm/include/llvm/ADT/DenseMap.h:586
#4  0x000000000098dc06 in llvm::DenseMapBase<llvm::DenseMap<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*> >, llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*, llvm::DenseMapInfo<llvm::Value*>, llvm::detail::DenseMapPair<llvm::ScalarEvolution::SCEVCallbackVH, llvm::SCEV const*> >::find_as<llvm::Value*> (this=0x78, Val=@0x7fffffffd508: 0xda5a68) at /home/ebdavis/Documents/llvm-project/llvm/include/llvm/ADT/DenseMap.h:152
#5  0x0000000000958242 in llvm::ScalarEvolution::getExistingSCEV (this=0x0, V=0xda5a68) at /home/ebdavis/Documents/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp:3705
#6  0x0000000000953b67 in llvm::ScalarEvolution::getSCEV (this=0x0, V=0xda5a68) at /home/ebdavis/Documents/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp:3673
#7  0x000000000065a5f6 in main (argc=2, argv=0x7fffffffda98) at /home/ebdavis/Documents/llvm-project/compiler-rt/lib/dfsan/dfsan_scev_parser/multi_module_pass.cpp:53
-------------- next part --------------
A non-text attachment was scrubbed...
Name: multi_module_pass.cpp
Type: text/x-c
Size: 1194 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180116/1a427530/attachment.bin>


More information about the llvm-dev mailing list