f10ed928e2
The cast from void* to T* in std::assume_aligned is not valid in a constexpr function. The optimization hint is redundant during constant evaluation anyway (the compiler can see the object and knows its alignment). Simply return the original pointer without applying the __builtin_assume_aligned hint to it when doing constant evaluation. This change also removes the preprocessor branch that works around uintptr_t not being available. We already assume that type is present elsewhere in the library. libstdc++-v3/ChangeLog: PR libstdc++/97132 * include/bits/align.h (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Remove unused code. (assume_aligned): Do not use __builtin_assume_aligned during constant evaluation. * testsuite/20_util/assume_aligned/1.cc: Improve test. * testsuite/20_util/assume_aligned/97132.cc: New test. |
||
---|---|---|
.. | ||
1.cc | ||
2_neg.cc | ||
3.cc | ||
97132.cc |