<div dir="ltr"><div><div><div><div><div><div><div>Hi,<br><br></div>I try to follow the use of the value yielded by a malloc call. Here follows a concrete example of what I expect and what I get.<br><br>define void @main() #0 {<br>entry:<br>  %ptr = alloca i8*, align 8<br>  %call = call noalias i8* @malloc(i64 10) #2<br>  store i8* %call, i8** %ptr, align 8<br>  %0 = load i8*, i8** %ptr, align 8<br>  call void @free(i8* %0) #2<br>  ret void<br>}<br><br></div>It is a simple program that allocates and frees a pointer. Now I intercepted the call instruction to malloc and iterated over its uses. I expected to have 2 results:<br><br>  %call = call noalias i8* @malloc(i64 10) #2<br></div>and<br>  store i8* %call, i8** %ptr, align 8<br><br></div>But I only get the first one. Is it normal? What should I do to get both? Here the piece of code I used to iterate:<br><br>CallInst *CI = ...The call to malloc...<br>errs() << "  Value use:\n";<br>  for(Value::use_iterator i = CI->use_begin(), e = CI->use_end(); i != e; ++i) {<br>    Use *use_i = &*i;<br>    if(Instruction *I = dyn_cast<Instruction>(use_i)) {<br>      errs() << "    instruction: " <<<br>        *I << "\n";<br>    }<br>  }<br><br></div>And I get this output:<br><br>  Value use:<br>    instruction:   %call = call noalias i8* @malloc(i64 10) #2<br><br></div>Thanks for your time and help,<br></div>Pierre<br><div><div><div><br></div></div></div></div>