[LLVMdev] Two quick questions on call graph nodes

Xiaolong Tang xiaolong.snake at gmail.com
Sun Jun 6 06:11:09 PDT 2010

Hello all, 

When I examined the callgraph generated by LLVM via this command: 

  opt -print-callgraph-sccs -dot-callgraph a.out.bc

I ran into two confusions: 

First, there is a "indirect call node" dominating all other nodes
(include "main"). My question is: what does this special node serves

Second, there are two identical functions except that the functions
have slightly different names. 

  define void @_ZN6StringC2Ev(%struct.String* %this) nounwind ssp {}
  define void @_ZN6StringC1Ev(%struct.String* %this) nounwind ssp {} 

So, why is it so? 



PS: My running example is a simple code as below: 

  #include "string.h"

  int main()
    String y, z;
    String x("Hello World!");
    y = x; // strongly update y
    z = y; // use y
    return 0;

The string class definition is: 

  class String {
    // Default constructor

    // Copy constructor
    String(const String& that);

    // One argument constructor that takes a character array as the initial
    //  value for the string
    String(const char str[]);

    // Destructor

    // Assignment operator
    String& operator=(const String& that);
    int length;
    int capacity;
    char* buffer;

  String::String() : capacity(0), length(0), buffer(0)
    // Nothing else to do
  String::String(const String& that) 


More information about the llvm-dev mailing list