<div dir="ltr"><div>It's not generally possible to know what happens, and it doesn't happen often enough in cases where people want good performance to optimize.</div><div><br></div><div>One could build a constant lattice based tracker and try to do better, but ...</div><div> </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 6, 2016 at 5:40 AM, Peet Nick via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Oh, I understand.<div>Although I am quite curious why this isn't supported as in C it might be very common to cast integer to pointers and back (This is what triggers clang to emit inttoptr instructions).</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 5, 2016 at 8:52 PM, Hal Finkel <span dir="ltr"><<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:#000000">Hi Nick,<br><br>We really don't do AA on inttoptr at all. You should use i8* (or some other appropriate pointer type) and GEPs instead.<br><br> -Hal<br><br><hr><blockquote style="border-left:2px solid rgb(16,16,255);margin-left:5px;padding-left:5px;color:rgb(0,0,0);font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt"><b>From: </b>"Peet Nick via llvm-dev" <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br><b>To: </b><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br><b>Sent: </b>Monday, July 4, 2016 11:05:11 AM<br><b>Subject: </b>[llvm-dev] Optimization issues (Alias Analysis?)<div><div><br><br><div dir="ltr">Hey,<div><br></div><div>I am currently working on a VM which is based on LLVM and I would like to use its optimizer, but it somehow it can't detect something very simple (I guess.)</div><div><br></div><div>This is the LLVM IR:</div><div><br></div><div><div>target datalayout = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"</div><div>target triple = "i386-unknown-linux-gnu"</div><div><br></div><div>%struct.regs = type { i32, i32, i32 }</div><div><br></div><div>define void @Test(%struct.regs* noalias nocapture sret, i32, i32, i32) local_unnamed_addr #0 {</div><div>  %5 = add i32 %3, -4</div><div>  %6 = inttoptr i32 %5 to i32*</div><div>  store i32 %2, i32* %6, align 4</div><div>  </div><div>  %7 = add i32 %3, -8</div><div>  %8 = inttoptr i32 %7 to i32*</div><div>  store i32 %1, i32* %8, align 4</div><div>  </div><div>  %9 = load i32, i32* %6, align 4</div><div>  </div><div>  %.sroa.0.0..sroa_idx = getelementptr inbounds %struct.regs, %struct.regs* %0, i32 0, i32 0</div><div>  store i32 %9, i32* %.sroa.0.0..sroa_idx, align 4</div><div>  </div><div>  %.sroa.4.0..sroa_idx4 = getelementptr inbounds %struct.regs, %struct.regs* %0, i32 0, i32 1</div><div>  store i32 %1, i32* %.sroa.4.0..sroa_idx4, align 4</div><div>  </div><div>  %.sroa.7.0..sroa_idx5 = getelementptr inbounds %struct.regs, %struct.regs* %0, i32 0, i32 2</div><div>  store i32 %3, i32* %.sroa.7.0..sroa_idx5, align 4</div><div>  </div><div>  ret void</div><div>}</div></div><div><br></div><div>This is compiled from some cpp just to reproduce the issue.</div><div>The issue here is that the load isn't eliminated and that the third store isn't directly using %2.</div><div><br></div><div>I thought that this might be an issue with the current BasicAliasAnalysis so I also tried CFL which isn't working either.</div><div><br></div><div>~ Nick </div></div>
<br></div></div>_______________________________________________<br>LLVM Developers mailing list<br><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><span><font color="#888888"><br></font></span></blockquote><span><font color="#888888"><br><br><br>-- <br><div><span name="x"></span>Hal Finkel<br>Assistant Computational Scientist<br>Leadership Computing Facility<br>Argonne National Laboratory<span name="x"></span><br></div></font></span></div></div></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div>