<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">This is  <a href="http://llvm.org/pr10514">http://llvm.org/pr10514</a><div>Unfortunately the fix did not make it into that version of clang.</div><div><br><div><div>On Oct 20, 2011, at 7:47 AM, Somorjai, Akos wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">

<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">

<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-family: Arial, sans-serif; ">
<div>
<div>
<div style="font-size: 13px; ">Here's a code generated with <b>-Os</b> on darwin/x86_64 with clang from the Xcode 4.2 GM toolset on Mac OSX 10.7.2 (Apple clang version 3.0 (tags/Apple/clang-211.10.1) (based on LLVM 3.0svn), Target: x86_64-apple-darwin11.2.0)</div>
<div style="font-size: 13px; "><br>
</div>
<div style="font-size: 13px; ">
<div>0x000000010277d281  <+2102>  lea    0x1d43bd0(%rip),%rax        # 0x1044c0e58 <gFloorPlanCutData></div>
<div>0x000000010277d288  <+2109>  movaps 0x80(%rax),%xmm0</div>
<div>0x000000010277d28f  <+2116>  movaps %xmm0,-0x40(%rbp)</div>
</div>
<div style="font-size: 13px; "><br>
</div>
<div style="font-size: 13px; "><br>
</div>
<div style="font-size: 13px; ">The documentation for 'movaps' states: "<span class="Apple-style-span" style="font-size: medium; font-family: Arial; ">When the source or destination operand is a memory location, it must be aligned on a 16-byte boundary.</span>"
 The problem is that the address of the global variable loaded into AX is not necessarily aligned; as it isn't in our case, which leads to the crash.</div>
<div style="font-size: 13px; "><br>
</div>
<div style="font-size: 13px; ">Here's is the code; it is loading the address of a global variable into AX, and tries to copy the data member, coming from the following class:</div>
<div style="font-size: 13px; "><br>
</div>
<div style="font-size: 13px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">MD5::FingerPrint<span class="Apple-tab-span" style="white-space:pre">
</span>cutDataCheckSum = ::gFloorPlanCutData.GetCutDataCheckSum ();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">memcpy (elemData->cutDataCheckSum, cutDataCheckSum.data,
<span style="color: #bb2d9d">sizeof</span> (elemData->cutDataCheckSum));</div>
</div>
<div style="font-size: 13px; "><br>
</div>
<div style="font-size: 13px; "><br>
</div>
<div style="font-size: 13px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(187, 45, 157); ">namespace<span style="color: #000000"> MD5 {</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">class</span> GSROOT_DLL_EXPORT FingerPrint {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(187, 45, 157); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre"></span></span>public<span style="color: #000000">:</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span>FingerPrint ();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">virtual</span> ~FingerPrint () {};</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span>FingerPrint (<span style="color: #bb2d9d">unsigned</span>
<span style="color: #bb2d9d">char</span> fp[<span style="color: #2c2ecf">16</span>]);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; ">
<br>
</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">void</span>                Set (<span style="color: #bb2d9d">unsigned</span>
<span style="color: #bb2d9d">char</span> fp[<span style="color: #2c2ecf">16</span>]);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">virtual</span><span class="Apple-tab-span" style="white-space:pre">
</span>GSErrCode<span class="Apple-tab-span" style="white-space:pre"> </span>Write (GS::OChannel& oc)
<span style="color: #bb2d9d">const</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">virtual</span><span class="Apple-tab-span" style="white-space:pre">
</span>GSErrCode<span class="Apple-tab-span" style="white-space:pre"> </span>Read (GS::IChannel& ic);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">virtual</span><span class="Apple-tab-span" style="white-space:pre">
</span>GSErrCode<span class="Apple-tab-span" style="white-space:pre"> </span>GetAsString (<span style="color: #bb2d9d">char</span>* md5String)
<span style="color: #bb2d9d">const</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">bool</span><span class="Apple-tab-span" style="white-space:pre">
</span>IsEmpty (<span style="color: #bb2d9d">void</span>) <span style="color: #bb2d9d">
const</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">void</span><span class="Apple-tab-span" style="white-space:pre">
</span>Clear (<span style="color: #bb2d9d">void</span>);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">bool</span>               
<span style="color: #bb2d9d">operator</span> == (<span style="color: #bb2d9d">const</span> FingerPrint&<span class="Apple-tab-span" style="white-space:pre">
</span>rhs) <span style="color: #bb2d9d">const</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">bool</span>               
<span style="color: #bb2d9d">operator</span> != (<span style="color: #bb2d9d">const</span> FingerPrint&<span class="Apple-tab-span" style="white-space:pre">
</span>rhs) <span style="color: #bb2d9d">const</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span>FingerPrint&<span class="Apple-tab-span" style="white-space:pre">
</span><span style="color: #bb2d9d">operator</span>= (<span style="color: #bb2d9d">const</span> FingerPrint& source);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(187, 45, 157); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre"></span></span>public<span style="color: #000000">:</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">unsigned</span>
<span style="color: #bb2d9d">char</span>       data[<span style="color: #2c2ecf">16</span>];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span>};</div>
</div>
<div style="font-size: 13px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">}</div>
</div>
<div style="font-size: 13px; "><br>
</div>
<div>The type of <span class="Apple-style-span" style="font-family: Menlo; "><span class="Apple-style-span" style="font-size: 11px;">gFloorPlanCutData</span><span style="font-family: Arial; "> is</span></span></div>
<div style="font-size: 13px; "><br>
</div>
<div style="font-size: 13px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">class</span>   FloorPlanCutData:
<span style="color: #bb2d9d">public</span> GS::Object,</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span> 
<span style="color: #bb2d9d">public</span> GS::StateEventSource {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; ">
<br>
</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span>DECLARE_CLASS_INFO</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; ">
<br>
</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(187, 45, 157); ">private<span style="color: #000000">:</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">double</span>  currCutLevel;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">double</span>  topCutLevel;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">double</span>  bottomCutLevel;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">short</span>   topCutBaseStoryRelativeIndex;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">short</span>   bottomCutBaseStoryRelativeIndex;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; ">
<br>
</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">double</span>  fixLevel2Absolute0;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; ">
<br>
</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span>Int32<span class="Apple-tab-span" style="white-space:pre">
</span>lock;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; ">
<br>
</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 132, 37); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre"></span></span>// temporary data dependent from the current story</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">double</span><span class="Apple-tab-span" style="white-space:pre">
</span>currCutLevelCalculated;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">double</span><span class="Apple-tab-span" style="white-space:pre">
</span>topCutLevelCalculated;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">double</span>  currentStoryLevel;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">double</span>  topBase2Current;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">double</span>  bottomBase2Current;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">short</span>   currentFloorIndex;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span><span style="color: #bb2d9d">bool</span><span class="Apple-tab-span" style="white-space:pre">
</span>relativeCalculated;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span>MD5::FingerPrint<span class="Apple-tab-span" style="white-space:pre">
</span>cutDataCheckSum;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><br>
</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span class="Apple-tab-span" style="white-space:pre"></span>...</div>
</div>
<div style="font-size: 13px; ">
<div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">
}</div>
</div>
</div>
<div style="font-size: 13px; "><br>
</div>
<div style="font-size: 13px; ">The optimization kicks in because 'data' is 16-bytes; but there's no alignment check…</div>
<div style="font-size: 13px; "><br>
</div>
<div style="font-size: 13px; ">This seems to be a code generation error, but I couldn't reproduce it in a small application. Is this a known bug, or shall I adjust my build settings?</div>
<div style="font-size: 13px; "><br>
</div>
<div style="font-size: 13px; ">Thanks,</div>
<div style="font-size: 13px; "><br>
</div>
<div style="font-size: 13px; "><span class="Apple-style-span" style="font-family: Times; font-size: medium; "><strong style="font-family: Arial, sans-serif; font-size: 12pt; color: black; ">Ákos Somorjai</strong></span></div>
<div style="font-size: 13px; ">
<div><p style="font-family: Times; font-size: medium; "><font style="font-family: Arial, sans-serif; font-size: 9pt; color: black; ">Developer Support Manager</font><br>
<br>
<span style="font-size: 12pt; color: gray; font-family: Arial, sans-serif; ">GRAPHISOFT </span><span style="font-size: 9pt; color: gray; font-family: Arial, sans-serif; ">| Graphisoft Park 1. Budapest 1031 Hungary | +36 1 437-3000 | <a href="mailto:asomorjai@graphisoft.com">asomorjai@graphisoft.com</a></span></p>
</div>
<div><span style="font-size: 9pt; color: gray; font-family: Arial, sans-serif; "><br>
</span></div>
</div>
</div>
</div>
</div>

_______________________________________________<br>LLVM Developers mailing list<br><a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br></blockquote></div><br></div></body></html>