mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-20 12:31:40 +00:00
Extend llvm::AlignedCharArrayUnion to support up to 10 arguments, as required by Clang's APValue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198844 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d5a4058ba4
commit
c95a251dd0
@ -170,19 +170,22 @@ LLVM_ALIGNEDCHARARRAY_TEMPLATE_ALIGNMENT(128)
|
|||||||
namespace detail {
|
namespace detail {
|
||||||
template <typename T1,
|
template <typename T1,
|
||||||
typename T2 = char, typename T3 = char, typename T4 = char,
|
typename T2 = char, typename T3 = char, typename T4 = char,
|
||||||
typename T5 = char, typename T6 = char, typename T7 = char>
|
typename T5 = char, typename T6 = char, typename T7 = char,
|
||||||
|
typename T8 = char, typename T9 = char, typename T10 = char>
|
||||||
class AlignerImpl {
|
class AlignerImpl {
|
||||||
T1 t1; T2 t2; T3 t3; T4 t4; T5 t5; T6 t6; T7 t7;
|
T1 t1; T2 t2; T3 t3; T4 t4; T5 t5; T6 t6; T7 t7; T8 t8; T9 t9; T10 t10;
|
||||||
|
|
||||||
AlignerImpl(); // Never defined or instantiated.
|
AlignerImpl(); // Never defined or instantiated.
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T1,
|
template <typename T1,
|
||||||
typename T2 = char, typename T3 = char, typename T4 = char,
|
typename T2 = char, typename T3 = char, typename T4 = char,
|
||||||
typename T5 = char, typename T6 = char, typename T7 = char>
|
typename T5 = char, typename T6 = char, typename T7 = char,
|
||||||
|
typename T8 = char, typename T9 = char, typename T10 = char>
|
||||||
union SizerImpl {
|
union SizerImpl {
|
||||||
char arr1[sizeof(T1)], arr2[sizeof(T2)], arr3[sizeof(T3)], arr4[sizeof(T4)],
|
char arr1[sizeof(T1)], arr2[sizeof(T2)], arr3[sizeof(T3)], arr4[sizeof(T4)],
|
||||||
arr5[sizeof(T5)], arr6[sizeof(T6)], arr7[sizeof(T7)];
|
arr5[sizeof(T5)], arr6[sizeof(T6)], arr7[sizeof(T7)], arr8[sizeof(T8)],
|
||||||
|
arr9[sizeof(T9)], arr10[sizeof(T10)];
|
||||||
};
|
};
|
||||||
} // end namespace detail
|
} // end namespace detail
|
||||||
|
|
||||||
@ -195,10 +198,13 @@ union SizerImpl {
|
|||||||
/// be added at the cost of more boiler plate.
|
/// be added at the cost of more boiler plate.
|
||||||
template <typename T1,
|
template <typename T1,
|
||||||
typename T2 = char, typename T3 = char, typename T4 = char,
|
typename T2 = char, typename T3 = char, typename T4 = char,
|
||||||
typename T5 = char, typename T6 = char, typename T7 = char>
|
typename T5 = char, typename T6 = char, typename T7 = char,
|
||||||
|
typename T8 = char, typename T9 = char, typename T10 = char>
|
||||||
struct AlignedCharArrayUnion : llvm::AlignedCharArray<
|
struct AlignedCharArrayUnion : llvm::AlignedCharArray<
|
||||||
AlignOf<detail::AlignerImpl<T1, T2, T3, T4, T5, T6, T7> >::Alignment,
|
AlignOf<detail::AlignerImpl<T1, T2, T3, T4, T5,
|
||||||
sizeof(detail::SizerImpl<T1, T2, T3, T4, T5, T6, T7>)> {
|
T6, T7, T8, T9, T10> >::Alignment,
|
||||||
|
sizeof(detail::SizerImpl<T1, T2, T3, T4, T5,
|
||||||
|
T6, T7, T8, T9, T10>)> {
|
||||||
};
|
};
|
||||||
} // end namespace llvm
|
} // end namespace llvm
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user