<div dir="ltr">The regression tests already covers -m32 -- see r261344.<div><br></div><div>The failure was not triggered unfortunately because the out of bound bytes happen to be zero initialized.</div><div><br></div><div>David</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 1, 2016 at 10:19 AM, Vedant Kumar <span dir="ltr"><<a href="mailto:vsk@apple.com" target="_blank">vsk@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I can see that it's tricky to check in a regression test for this.<br>
<br>
Would having a linux bot that tests the "x86-64 + -m32" configuration help?<br>
<br>
E.g:<br>
<br>
--- a/cmake/config-ix.cmake<br>
+++ b/cmake/config-ix.cmake<br>
@@ -93,13 +93,17 @@ set(COMPILER_RT_SUPPORTED_ARCH)<br>
 set(SIMPLE_SOURCE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/simple.cc)<br>
 file(WRITE ${SIMPLE_SOURCE} "#include <stdlib.h>\n#include <limits>\nint main() {}\n")<br>
<br>
-# Add $arch as supported with no additional flags.<br>
-macro(add_default_target_arch arch)<br>
-  set(TARGET_${arch}_CFLAGS "")<br>
+# Add $arch as supported.<br>
+macro(add_default_target_arch arch cflags)<br>
+  set(TARGET_${arch}_CFLAGS ${cflags})<br>
   set(CAN_TARGET_${arch} 1)<br>
   list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})<br>
 endmacro()<br>
<br>
+macro(add_default_target_arch arch)<br>
+  add_target_arch(arch "")<br>
+endmacro()<br>
+<br>
 macro(detect_target_arch)<br>
   check_symbol_exists(__arm__ "" __ARM)<br>
   check_symbol_exists(__aarch64__ "" __AARCH64)<br>
@@ -117,6 +121,7 @@ macro(detect_target_arch)<br>
     add_default_target_arch(aarch64)<br>
   elseif(__X86_64)<br>
     add_default_target_arch(x86_64)<br>
+    add_target_arch(x86_64_m32 "-m32")<br>
   elseif(__I686)<br>
     add_default_target_arch(i686)<br>
   elseif(__I386)<br>
<br>
vedant<br>
<br>
> On May 31, 2016, at 4:12 PM, Xinliang David Li via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br>
><br>
> Author: davidxl<br>
> Date: Tue May 31 18:12:13 2016<br>
> New Revision: 271349<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=271349&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=271349&view=rev</a><br>
> Log:<br>
> [profile] Fix PR/27917<br>
><br>
> Skip the last (possibly) incomplete node from padding bytes.<br>
><br>
><br>
> Modified:<br>
>    compiler-rt/trunk/lib/profile/InstrProfilingValue.c<br>
><br>
> Modified: compiler-rt/trunk/lib/profile/InstrProfilingValue.c<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/InstrProfilingValue.c?rev=271349&r1=271348&r2=271349&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/InstrProfilingValue.c?rev=271349&r1=271348&r2=271349&view=diff</a><br>
> ==============================================================================<br>
> --- compiler-rt/trunk/lib/profile/InstrProfilingValue.c (original)<br>
> +++ compiler-rt/trunk/lib/profile/InstrProfilingValue.c Tue May 31 18:12:13 2016<br>
> @@ -111,7 +111,7 @@ static ValueProfNode *allocateOneNode(__<br>
>     return (ValueProfNode *)calloc(1, sizeof(ValueProfNode));<br>
><br>
>   /* Early check to avoid value wrapping around.  */<br>
> -  if (CurrentVNode >= EndVNode) {<br>
> +  if (CurrentVNode + 1 > EndVNode) {<br>
>     if (OutOfNodesWarnings++ < INSTR_PROF_MAX_VP_WARNS) {<br>
>       PROF_WARN("Unable to track new values: %s. "<br>
>                 " Consider using option -mllvm -vp-counters-per-site=<n> to "<br>
> @@ -122,7 +122,9 @@ static ValueProfNode *allocateOneNode(__<br>
>     return 0;<br>
>   }<br>
>   Node = COMPILER_RT_PTR_FETCH_ADD(ValueProfNode, CurrentVNode, 1);<br>
> -  if (Node >= EndVNode)<br>
> +  /* Due to section padding, EndVNode point to a byte which is one pass<br>
> +   * an incomplete VNode, so we need to skip the last incomplete node. */<br>
> +  if (Node + 1 > EndVNode)<br>
>     return 0;<br>
><br>
>   return Node;<br>
> @@ -201,7 +203,6 @@ __llvm_profile_instrument_target(uint64_<br>
>   CurVNode = allocateOneNode(PData, CounterIndex, TargetValue);<br>
>   if (!CurVNode)<br>
>     return;<br>
> -<br>
>   CurVNode->Value = TargetValue;<br>
>   CurVNode->Count++;<br>
><br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
<br>
</blockquote></div><br></div>