<div dir="ltr">Aha, you have activated the win32 stack alignment trap card. By adding a uint64_t to EvalInfo, you have increased its alignment to 8. Unfortunately, MSVC doesn't actually align stack objects to more than 4 unless you really ask it to with __declspec(align). Normally this stuff flies under the radar, but PointerUnion makes assertions about alignment. A possible fix:<div><br></div><div><div>diff --git a/lib/AST/ExprConstant.cpp b/lib/AST/ExprConstant.cpp</div><div>index 61bb2b9..e18caff 100644</div><div>--- a/lib/AST/ExprConstant.cpp</div><div>+++ b/lib/AST/ExprConstant.cpp</div><div>@@ -433,7 +433,7 @@ namespace {</div><div>   /// rules.  For example, the RHS of (0 && foo()) is not evaluated.  We can</div><div>   /// evaluate the expression regardless of what the RHS is, but C only allows</div><div>   /// certain things in certain situations.</div><div>-  struct EvalInfo {</div><div>+  struct LLVM_ALIGNAS(/*alignof(uint64_t)*/ 8) EvalInfo {</div><div>     ASTContext &Ctx;</div><div><br></div><div>     /// EvalStatus - Contains information about the evaluation.</div><div><br></div><div>This has the downside that it will emit more stack realignment prologues for MSVC x86 builds. I know Sony cares about MSVC-built clang performance, but I don't know if they ship 32-bit or 64-bit binaries.</div><div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Dec 13, 2016 at 11:43 AM, Reid Kleckner <span dir="ltr"><<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>It's probably this change:</div><div><br></div><div>$ "C:/src/llvm/build_x86/./bin/<wbr>clang.EXE" "-cc1" "-internal-isystem" "C:\src\llvm\build_x86\bin\..\<wbr>lib\clang\4.0.0\include" "-nostdsysteminc" "-fsyntax-only" "-Wno-everything" "-Wobjc-literal-compare" "-Dnil=(id)0" "-verify" "C:\src\llvm\tools\clang\test\<wbr>SemaObjC\objc-literal-<wbr>comparison.m"</div><div># command stderr:</div><div>Assertion failed: (PtrWord & ~PointerBitMask) == 0 && "Pointer is not sufficiently aligned", file C:\src\llvm\include\llvm/ADT/<wbr>PointerIntPair.h, line 160</div></div></blockquote></div></div></div></div></div>