[LLVMdev] FW: question about malloc call vs. instruction
Chris Lattner
sabre at nondot.org
Wed Sep 11 13:45:01 PDT 2002
> printing out a bunch of instructions. which reveals my new problem: when
> i attempt a malloc in my own, it comes out like this:
>
> %reg216 = call int (...)* %malloc( ulong 8 ) ; <int> [#uses=1]
> a call to malloc, not a malloc instruction. i don't know how to get the
> information i need out of a call to malloc.
You need to #include <stdlib.h>. Try compiling with warnings on (-Wall
-W), and you should get diagnostics for problems like this.
> when i replace 'malloc' in the code with 'alloca', i get
> %reg107 = alloca ubyte, uint 8 ; <ubyte*> [#uses=1]
> so everything is fine for alloca.
alloca doesn't require a prototype.
> i thought if i ran the inline pass it might change a malloc call to a
> malloc instruction, but it didn't. can you tell me what's up here?
No prototype = Not a known function... The inlining pass shouldn't touch
malloc instructions/calls. The malloc calls should be eliminated by a
pass "built into" the GCC frontend:
http://llvm.cs.uiuc.edu/doxygen/RaiseAllocations_8cpp-source.html
... but this only will work if there is a prototype for the function.
-Chris
More information about the llvm-dev
mailing list