<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>