<div dir="ltr">It sounds to me like what you *really* need is for the VReg type itself to be aligned 16.  How about changing this:<div><br></div><div><div>struct VReg {</div><div>    uint8_t bytes[16];</div><div>  };</div></div><div><br></div><div>to this:</div><div><br></div><div><div>struct VReg {</div><div>    llvm::AlignedCharArray<16, 16> bytes;</div><div>};</div></div><div><br></div><div>Then the FPU struct can remain unchanged.</div><div><br></div><div>MSVC does have a 128 bit type, but in practice you shouldnt' really use it, and it will end up making the code look uglier because it will need a #define or typedef.</div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Nov 15, 2017 at 12:52 PM Jason Molenda <<a href="mailto:jmolenda@apple.com">jmolenda@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Zachary, do you have a suggestion on how to specify this alignment in a way that works with MSVC?<br>
<br>
> On Nov 14, 2017, at 7:41 PM, Jason Molenda via lldb-commits <<a href="mailto:lldb-commits@lists.llvm.org" target="_blank">lldb-commits@lists.llvm.org</a>> wrote:<br>
><br>
> Author: jmolenda<br>
> Date: Tue Nov 14 19:41:47 2017<br>
> New Revision: 318262<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=318262&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=318262&view=rev</a><br>
> Log:<br>
> Roll back r318260 because it is causing the windows bot to<br>
> break.  The alignas(__uint128_t) is not recognized with MSVC<br>
> it looks like.  Zachary, is there a similar type on windows?<br>
> I suppose I can go with alignas(16) here but I'd prefer to<br>
> specify the type alignment that I want & let the ABI dictate<br>
> how much padding is required.<br>
><br>
> Modified:<br>
>    lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp<br>
>    lldb/trunk/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.h<br>
><br>
> Modified: lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp?rev=318262&r1=318261&r2=318262&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp?rev=318262&r1=318261&r2=318262&view=diff</a><br>
> ==============================================================================<br>
> --- lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp (original)<br>
> +++ lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp Tue Nov 14 19:41:47 2017<br>
> @@ -686,7 +686,7 @@ public:<br>
>       case FPURegSet: {<br>
>         uint8_t *fpu_reg_buf = (uint8_t *)&fpu.v[0];<br>
>         const int fpu_reg_buf_size = sizeof(fpu);<br>
> -        if (fpu_reg_buf_size == count * sizeof(uint32_t) &&<br>
> +        if (fpu_reg_buf_size == count &&<br>
>             data.ExtractBytes(offset, fpu_reg_buf_size, eByteOrderLittle,<br>
>                               fpu_reg_buf) == fpu_reg_buf_size) {<br>
>           SetError(FPURegSet, Read, 0);<br>
><br>
> Modified: lldb/trunk/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.h?rev=318262&r1=318261&r2=318262&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.h?rev=318262&r1=318261&r2=318262&view=diff</a><br>
> ==============================================================================<br>
> --- lldb/trunk/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.h (original)<br>
> +++ lldb/trunk/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.h Tue Nov 14 19:41:47 2017<br>
> @@ -83,7 +83,7 @@ public:<br>
><br>
>   // mirrors <mach/arm/thread_status.h> arm_neon_state64_t<br>
>   struct FPU {<br>
> -    alignas(__uint128_t) VReg v[32];<br>
> +    VReg v[32];<br>
>     uint32_t fpsr;<br>
>     uint32_t fpcr;<br>
>   };<br>
><br>
><br>
> _______________________________________________<br>
> lldb-commits mailing list<br>
> <a href="mailto:lldb-commits@lists.llvm.org" target="_blank">lldb-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits</a><br>
<br>
</blockquote></div>