[LLVMdev] Printing error with Value objects

Rajeshwar Vanka rvanka at ncsu.edu
Wed Jan 5 14:28:03 PST 2011


Hi.
   The platform is an x86 32-bit machine running LLVM 2.4.
  
   I am trying to analyze Alias Analysis queries, and towards this end, 
I am trying to print out the "Value"s that form the queries. While 
trying to print these queries, llvm hits a segmentation fault. The fault 
is due to a Value which does not have its module set properly. I am 
using the operator<< to call the print function, and since the module is 
not defined for this Value, there is no Symbol Table. I checked and 
verified that V1 is an instruction. I am collecting the queries from 
GVN. I perform this dump after GVN has completed its transformations. Is 
it possible that the Value has been deleted from the program by GVN? Is 
this expected behaviour?

   This is the output when I type "print *V1" in gdb:
   {_vptr.Value = 0x91fa950, SubclassID = 92 '\\', HasValueHandle = 1 
'\001', HasMetadata = 0 '\000', SubclassOptionalData = 31 '\037',
  SubclassData = 43368, VTy = {Ty = 0x921f6fc}, UseList = 0x8d5a550, 
Name = 0x8e06088}

  This is the output when I type "print *V1->getType()" in gdb:
  {<llvm::AbstractTypeUser> = {_vptr.AbstractTypeUser = 0x92184c0}, ID = 
72, Abstract = true, SubclassData = 299242, RefCount = 153191633,
  Context = @0x89f3aac, ForwardType = 0x0, AbstractTypeUsers = 
{<std::_Vector_base<llvm::AbstractTypeUser*, 
std::allocator<llvm::AbstractTypeUser*> >> = {
      _M_impl = {<std::allocator<llvm::AbstractTypeUser*>> = 
{<__gnu_cxx::new_allocator<llvm::AbstractTypeUser*>> = {<No data 
fields>}, <No data fields>},
        _M_start = 0x921f726, _M_finish = 0x921a090, _M_end_of_storage = 
0x921e898}}, <No data fields>}, NumContainedTys = 153198753,
  ContainedTys = 0x89f3aac}

   Thanks for the help.

Regards
Rajesh



More information about the llvm-dev mailing list