<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p style="margin-top:0;margin-bottom:0"></p>
<div>Hi,<br>
<br>
We are having an issue with the loop vectorizer and noalias pointers, as it is generating `vector.memcheck` while we can guarantee that the pointers will not overlap.<br>
<br>
It seems that in `LoopVectorize.cpp` the function `emitMemRuntimeChecks` is called but there are no checks to disable this behavior (like "strong noalias")<br>
<br>
We are actually using a technique similar to the llvm.noalias (https://llvm.org/devmtg/2017-02-04/Restrict-Qualified-Pointers-in-LLVM.pdf), discussed a bit here http://lists.llvm.org/pipermail/llvm-dev/2017-September/117443.html, but we are not using the llvm.noalias
 PR.<br>
<br>
Still, from the document above, it seems that the llvm.noalias is able to get rid off these checks, but I'm failing to see why it is related to the introduction of this new intrinsic. I assume this optimization should work with any noalias pointers no?, not
 only the ones returned by llvm.noalias...<br>
<br>
Any ideas how to workaround this? (using the llvm.noalias PR?)<br>
<br>
Thanks!</div>
<p style="margin-top:0;margin-bottom:0"><a href="https://llvm.org/devmtg/2017-02-04/Restrict-Qualified-Pointers-in-LLVM.pdf" class="OWAAutoLink" id="LPlnk275806" previewremoved="true"><br>
</a></p>
</div>
</body>
</html>