OSDN Git Service

[ADT] Change the `IntervalMap` alignment assert for x86 MSVC
authorAleksandr Urakov <aleksandr.urakov@jetbrains.com>
Tue, 9 Oct 2018 07:33:09 +0000 (07:33 +0000)
committerAleksandr Urakov <aleksandr.urakov@jetbrains.com>
Tue, 9 Oct 2018 07:33:09 +0000 (07:33 +0000)
commit7f9eb168a9a8f5ff4fc931a00aec43e8706afecb
tree10171cd5bc6a4f7a3be5ea513feeed814d251eb9
parentc179d7b006348005d2da228aed4c3c251590baa3
[ADT] Change the `IntervalMap` alignment assert for x86 MSVC

Summary:
This patch forces the alignment of the `data` field of `IntervalMap`.
It is because x86 MSVC doesn't apply automatically
(without `__declspec(align(...))`) alignments more than 4 bytes,
even if `alignof` has returned so. Consider the example:

https://godbolt.org/z/zIPa_G

Here `alignof` for both `S0` and `S1` returns `8`, but only `S1` is really
aligned on x86. The explanation of this behavior is here:

https://docs.microsoft.com/en-us/cpp/build/conflicts-with-the-x86-compiler

Reviewers: bkramer, stoklund, hans, rnk

Reviewed By: rnk

Subscribers: dexonsmith, llvm-commits

Differential Revision: https://reviews.llvm.org/D52613

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@344018 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/ADT/IntervalMap.h