<div dir="ltr">Hi all,<br><div><br></div><div>I was playing around with LLVM 7 and I discovered something that seems to me to be a bug -- or at least something that I don't understand.</div><div><br></div><div>Take the following valid simple program and run -instcombine on it</div><div><br></div><div>declare i8* @malloc(i64)<br><br>define void @caller() {<br>entry:<br>  call void @callee()<br>  ret void<br>}<br><br>define fastcc void @callee() {<br>entry:<br>  %malloccall = call i8* @malloc(i64 9)<br>  store i8 0, i8* %malloccall<br>  ret void<br>}<br><br></div><div><br></div><div>It get's transformed into the following invalid code after the optimization (now having an illegal store):</div><div><br></div><div>; ModuleID = 'blarg.ll'<br>source_filename = "blarg.ll"<br><br>declare i8* @malloc(i64)<br><br>define void @caller() {<br>entry:<br>  store i1 true, i1* undef, align 1<br>  ret void<br>}<br><br>define fastcc void @callee() {<br>entry:<br>  ret void<br>}<br><br>Anyone seen this before and/or could shed some light on this behavior.</div></div>