[Bug libstdc++/83906] [8 Regression] Random FAIL: libstdc++-prettyprinters/80276.cc whatis p4
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Jan 19 13:41:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83906
--- Comment #5 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Jonathan Wakely from comment #4)
> Ah, or maybe the typedef std::__cxx11::string is not in the debug info, so
> the type printer doesn't know that std::__cxx11::basic_string<char> is the
> same type as std::__cxx11::string.
>
> In testsuite/libstdc++-prettyprinters/whatis.cc we have a relevant comment:
>
> // This test is written in a somewhat funny way.
> // Each type under test is used twice: first, to form a pointer type,
> // and second, as a template parameter. This is done to work around
> // apparent GCC oddities. The pointer type is needed to ensure that
> // the typedef in question ends up in the debuginfo; while the
> // template type is used to ensure that a typedef-less variant is
> // presented to gdb.
>
>
> Does this patch help?
>
> --- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc
> +++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc
> @@ -36,6 +36,7 @@ placeholder(const T *s)
> int
> main()
> {
> + std::string *string_ptr;
> using namespace std;
> unique_ptr<vector<unique_ptr<vector<int>*>>> p1;
> unique_ptr<vector<unique_ptr<set<int>*>>[]> p2;
> @@ -50,6 +51,7 @@ main()
> placeholder(&p2);
> placeholder(&p3);
> placeholder(&p4);
> + placeholder(&string_ptr);
>
> std::cout << "\n";
> return 0;
This doesn't explain why does it fail at random.
More information about the Gcc-bugs
mailing list