<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); ">
<div>
<div>
<div style="font-family: Arial, sans-serif; font-size: 13px; ">Thanks, Bob!</div>
<div style="font-family: Arial, sans-serif; font-size: 13px; "><br>
</div>
<div style="font-family: Arial, sans-serif; font-size: 13px; ">I guess we should be expecting a 4.2.1 update after clang 3.0 has been released, shouldn't we?</div>
<div style="font-family: Arial, sans-serif; font-size: 13px; "><br>
</div>
<div style="font-family: Arial, sans-serif; font-size: 13px; ">Best,</div>
<div style="font-family: Arial, sans-serif; font-size: 13px; "><br>
</div>
<div style="font-family: Arial, sans-serif; font-size: 13px; ">Akos</div>
</div>
</div>
<div style="font-family: Arial, sans-serif; font-size: 13px; "><br>
</div>
<span id="OLK_SRC_BODY_SECTION" style="font-size: 13px; font-family: Arial, sans-serif; ">
<div style="font-family:Calibri; font-size:11pt; text-align:left; color:black; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<span style="font-weight:bold">From: </span>Bob Wilson <<a href="mailto:bob.wilson@apple.com">bob.wilson@apple.com</a>><br>
<span style="font-weight:bold">Date: </span>Thu, 20 Oct 2011 08:46:38 -0700<br>
<span style="font-weight:bold">To: </span>Ákos Somorjai <<a href="mailto:asomorjai@graphisoft.com">asomorjai@graphisoft.com</a>><br>
<span style="font-weight:bold">Cc: </span>"<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>" <<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>><br>
<span style="font-weight:bold">Subject: </span>Re: [LLVMdev] Crash with optimization for size<br>
</div>
<div><br>
</div>
<div>
<div 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">
<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>
</div>
</div>
</span>
</body>
</html>