<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">On 16/11/2013 7:58 AM, Nadav Rotem
wrote:<br>
</div>
<blockquote
cite="mid:CD3371A2-FC02-415F-82A7-6E3CA558CEC7@apple.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<br>
<div>
<div>On Nov 15, 2013, at 12:36 PM, Renato Golin <<a
moz-do-not-send="true" href="mailto:renato.golin@linaro.org">renato.golin@linaro.org</a>>
wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On 15 November 2013 20:24, Joshua
Klontz <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:josh.klontz@gmail.com" target="_blank">josh.klontz@gmail.com</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">Agreed, is there a pass that will
insert a runtime alignment check? Also, what's the
easiest way to get at
TargetTransformInfo::getRegisterBitWidth() so I
don't have to hard code 32? Thanks!</div>
</blockquote>
</div>
<br>
</div>
<div class="gmail_extra">I think that's a fair question, and
it's about safety. If you're getting this on the JIT,
means we may be generating unsafe transformations on the
vectorizer.</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">Arnold, Nadav, I don't remember
seeing code to generate any run-time alignment checks on
the incoming pointer, is there such a thing? If not,
shouldn't we add one?</div>
</div>
</blockquote>
</div>
<div><br>
</div>
<div><br>
</div>
If the the vectorizer generates aligned memory accesses to
unaligned addresses then this is a serious bug. But I don’t think
that Josh said that the vectorizer generated aligned accesses to
unaligned pointers. <br>
</blockquote>
I've hit this (or a similar) bug, where generating SSE instructions
for vector access was assuming stack memory would be aligned, if it
was an aligned offset from the start of the allocation. But if the
stack wasn't appropriately aligned when the function was called, the
stack memory would be unaligned and cause an exception.<br>
<blockquote
cite="mid:CD3371A2-FC02-415F-82A7-6E3CA558CEC7@apple.com"
type="cite">
<div><br>
<div>
<div>
<div>There is no point in LLVM checking for alignment
because if the memory is unaligned then the program will
crash. Users who want to crash with a readable error
message can simply write code that checks the pointer (by
masking the high bits and comparing to zero). <br>
<br>
</div>
</div>
</div>
</div>
<br>
</blockquote>
<br>
</body>
</html>