[LLVMdev] Unused malloc/free don't get optimized
Nicola Lugato
nicola.lugato at gmail.com
Tue Feb 13 10:02:52 PST 2007
Hi, i have some code that allocate some memory, store the pointer to a
variable, read it back and deallocates it, like this:
int %main(int %argc, ubyte** %argv)
{
%c_19 = alloca ubyte*
%malloc_206 = malloc ubyte, uint 10
store ubyte* %malloc_206, ubyte** %c_19
%tmp_207 = load ubyte** %c_19
free ubyte* %tmp_207
ret int 0
}
i expected the optimized to remove everything, but after running it
the code i get is:
int %main(int %argc, ubyte** %argv) {
%malloc_206 = malloc [10 x ubyte]
%malloc_206.sub = getelementptr [10 x ubyte]* %malloc_206, int 0, int 0
free ubyte* %malloc_206.sub
ret int 0
}
Why didn't he optimized it out? and where did that getelementptr came from?
I have the feeling that i'm missing something.
More information about the llvm-dev
mailing list