Ping.
On Mon, Jul 10, 2023 at 04:33:26PM -0400, Marek Polacek via Gcc-patches wrote:
> Running
> $ make check-g++
> RUNTESTFLAGS='--target_board=unix\{-D_GLIBCXX_USE_CXX11_ABI=0,\}
> dg.exp=allocator-opt1.C'
> yields:
>
> FAIL: g++.dg/tree-ssa/allocator-opt1.C -std=c++98 scan-tree-dump-times
> gimple "struct allocator D" 1
> FAIL: g++.dg/tree-ssa/allocator-opt1.C -std=c++14 scan-tree-dump-times
> gimple "struct allocator D" 1
> FAIL: g++.dg/tree-ssa/allocator-opt1.C -std=c++17 scan-tree-dump-times
> gimple "struct allocator D" 1
> FAIL: g++.dg/tree-ssa/allocator-opt1.C -std=c++20 scan-tree-dump-times
> gimple "struct allocator D" 1
>
> === g++ Summary for unix/-D_GLIBCXX_USE_CXX11_ABI=0 ===
>
> === g++ Summary for unix ===
>
> because in the old ABI we get two "struct allocator D". This patch
> follows r14-658 although I'm not quite sure I follow the logic there.
>
> Tested on x86_64-pc-linux-gnu, ok for trunk?
>
> gcc/testsuite/ChangeLog:
>
> * g++.dg/tree-ssa/allocator-opt1.C: Force _GLIBCXX_USE_CXX11_ABI to 1.
> ---
> gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
> b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
> index e8394c7ad70..9f13eedb604 100644
> --- a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
> +++ b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
> @@ -5,8 +5,18 @@
> // Currently the dump doesn't print the allocator template arg in this
> context.
> // { dg-final { scan-tree-dump-times "struct allocator D" 1 "gimple" } }
>
> +// In the pre-C++11 ABI we get two allocator variables.
> +#undef _GLIBCXX_USE_CXX11_ABI
> +#define _GLIBCXX_USE_CXX11_ABI 1
> +
> +// When the library is not dual-ABI and defaults to old just compile
> +// an empty TU
> +#if _GLIBCXX_USE_CXX11_ABI
> +
> #include <string>
> void f (const char *p)
> {
> std::string lst[] = { p, p, p, p };
> }
> +
> +#endif
>
> base-commit: 2d7c95e31431a297060c94697af84f498abf97a2
> --
> 2.41.0
>
Marek