<div dir="ltr">Hi,<div>    This is my first post and I am looking at the bug 50482 . It is related to malloc optimization. I have a doubt related to malloc optimization.</div><div>Here is the code:-</div><div><pre class="gmail-bz_comment_text" style="white-space:pre-wrap;width:50em;color:rgb(0,0,0)">#include <stdlib.h>
int test() {
  char *x = malloc(-1);
  char *y = malloc(2);
  int ret = (x != NULL) && (y != NULL);
  free(x); free(y);
  return ret;
}</pre><pre class="gmail-bz_comment_text" style="white-space:pre-wrap;width:50em;color:rgb(0,0,0)">Above program returns 1. </pre><pre class="gmail-bz_comment_text" style="white-space:pre-wrap;width:50em;color:rgb(0,0,0)">During optimization (-O1) when llvm IR goes through instruction combining pass then program behaves incorrect. </pre><pre class="gmail-bz_comment_text" style="white-space:pre-wrap;width:50em;color:rgb(0,0,0)">This link follows Instruction combining pass. </pre><pre class="gmail-bz_comment_text" style="white-space:pre-wrap;width:50em;color:rgb(0,0,0)"><a href="https://github.com/llvm/llvm-project/blob/main/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp#L2639">https://github.com/llvm/llvm-project/blob/main/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp#L2639</a> </pre><pre class="gmail-bz_comment_text" style="white-space:pre-wrap;width:50em;color:rgb(0,0,0)">Where it is mentioned that </pre><pre class="gmail-bz_comment_text" style="white-space:pre-wrap;width:50em;color:rgb(0,0,0)"><span style="color:rgb(110,119,129);font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;font-size:12px;white-space:pre">If we have a malloc call which is only used in any amount of comparisons to </span>
<span style="color:rgb(110,119,129);font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;font-size:12px;white-space:pre">null and free calls, delete the calls and replace the comparisons with true </span>
<span style="color:rgb(110,119,129);font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;font-size:12px;white-space:pre">or false as appropriate.</span></pre><pre class="gmail-bz_comment_text" style="width:50em">but is it feasible solution to replace every malloc call with true or false when comparison to null and free calls?</pre><pre class="gmail-bz_comment_text" style="width:50em">Thank you,</pre><pre class="gmail-bz_comment_text" style="width:50em">Bhumitram Kumar</pre><pre class="gmail-bz_comment_text" style="width:50em"><font color="#000000"><span style="white-space:pre-wrap">



</span></font></pre><br></div></div>