[LLVMdev] Another two questions on LLVM

Duncan Sands baldrick at free.fr
Mon Jun 7 12:52:18 PDT 2010


Hi Xiaolong,

> First, how does LLVM handle the "new statement" of C++? Could any one
> give me any hint?

LLVM doesn't have special support for "new".  It's up to the C++ front-ends
(clang++, llvm-g++, g++-4.5+dragonegg) to lower "new" to LLVM IR.  You can
find out how by pasting C++ code into http://llvm.org/demo
For example, "int *n(void) { return new int; }" ->

define i32* @_Z1nv() {
entry:
   %0 = tail call i8* @_Znwm(i64 4)                ; <i8*> [#uses=1]
   %1 = bitcast i8* %0 to i32*                     ; <i32*> [#uses=1]
   ret i32* %1
}

declare i8* @_Znwm(i64)

> Second, what properties does the callgraph generated by LLVM has? One
> property I am interesting in is whether the callgraph is a safe
> approximation of its corresponding run-time callgraph.

It is, otherwise it would be useless.

> Third, does LLVM provide any strategy to resolve function calls? If
> yes, what strategies does it employ?

This is mostly done by the the inline and instcombine passes.

Ciao,

Duncan.



More information about the llvm-dev mailing list