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