<div dir="ltr"><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">On Thu, Feb 8, 2018 at 12:10 PM, Friedman, Eli<span> </span></span><span dir="ltr" style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><<a href="mailto:efriedma@codeaurora.org" target="_blank" style="color:rgb(17,85,204)">efriedma@codeaurora.org</a>></span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span> </span>wrote:</span><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><blockquote class="gmail_quote" style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF"><span class="gmail-"><div class="gmail-m_-2768427760029400867moz-cite-prefix">On 2/7/2018 5:53 PM, Greg McGary via cfe-dev wrote:<br></div><blockquote type="cite"><div dir="ltr">I am seeing clang for <span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">arm-</span><span class="gmail-m_-2768427760029400867gmail-gr_ gmail-m_-2768427760029400867gmail-gr_62 gmail-m_-2768427760029400867gmail-gr-alert gmail-m_-2768427760029400867gmail-gr_spell gmail-m_-2768427760029400867gmail-gr_inline_cards gmail-m_-2768427760029400867gmail-gr_run_anim gmail-m_-2768427760029400867gmail-ContextualSpelling gmail-m_-2768427760029400867gmail-ins-del gmail-m_-2768427760029400867gmail-multiReplace" id="gmail-m_-2768427760029400867gmail-62" style="display:inline;color:rgb(34,34,34);font-size:small;border-bottom:2px solid transparent;background-repeat:no-repeat;font-family:arial,sans-serif;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">linux</span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">-</span><span class="gmail-m_-2768427760029400867gmail-gr_ gmail-m_-2768427760029400867gmail-gr_63 gmail-m_-2768427760029400867gmail-gr-alert gmail-m_-2768427760029400867gmail-gr_spell gmail-m_-2768427760029400867gmail-gr_inline_cards gmail-m_-2768427760029400867gmail-gr_run_anim gmail-m_-2768427760029400867gmail-ContextualSpelling" id="gmail-m_-2768427760029400867gmail-63" style="display:inline;color:rgb(34,34,34);font-size:small;border-bottom:2px solid transparent;background-repeat:no-repeat;font-family:arial,sans-serif;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">androideabi emit 16-byte-</span>aligned vst1.64 and vld1.64, but the ABI only guarantees 8-byte alignment. Result at runtime is SIGBUS. Since clang emits "#define __<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">BIGGEST_ALIGNMENT__ 8", it is aware of the ABI's maximum alignment.</span><br></div></blockquote><br></span>__<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">BIGGEST_ALIGNMENT__ is not the alignment of any particular object; some pointers have lower alignment, some pointers have higher alignment.  And the compiler will raise the alignment of a load or store if it can prove the pointer is sufficiently aligned.<br><br>It's hard to say more without a testcase.</span></div></blockquote></div><div><br></div>Here is a testcase:<br><br><div>struct R {</div><div>  void *v = nullptr;</div><div>  R(R& rx) { v = rx.v; }</div><div>  R() {}</div><div>};</div><div><br></div><div>struct S {</div><div>  R r;</div><div>  long long ll[2];</div><div>  int i;</div><div><br></div><div>  S() {}</div><div>};</div><div><br></div><div>extern void bar(S&);</div><div><br></div><div>void foo(S& sin) {</div><div>  S s(sin);</div><div>  bar(s);</div><div>}<br><br></div>Compile like so:<br>/opt/android_ndk/r15c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -target armv7-none-linux-androideabi -std=c++11 test.cpp -S -o test.s<br><br><div>An excerpt from test.s:</div><div><br></div><div>S::S(S&):</div><div>        .fnstart</div><div>...</div><div>        vld1.64 {d16, d17}, [r2]!</div><div>        vst1.64 {d16, d17}, [lr]!</div><div><br></div><div>The vxx1.64 insns assemble to forms with 128-bit alignment, so :128 is the default alignment clause.<br>The load/store insns would be OK in this form, with 64-bit alignment:</div><div><br></div><div>        vld1.64 {d16, d17}, [r2:64]!</div><div>        vst1.64 {d16, d17}, [lr:64]!</div><div><br></div><div>However, I don't see how to alter that default.</div><div><br></div><div>Passing -fmax-type-align=8 to clang does nothing, though I expected it to drop :128 to :64 for the alignment clause on the address-register operand. -fmax-type-align=4 downgrades the vxx1.64 to vxx64.32.<br><br></div><div>G</div></div>