public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/96901] New: [11 Regression] Many libstdc++ tests FAIL on i686-linux due to a PCH FE bug
@ 2020-09-02 16:51 jakub at gcc dot gnu.org
  2020-09-02 16:52 ` [Bug c++/96901] " jakub at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: jakub at gcc dot gnu.org @ 2020-09-02 16:51 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96901

            Bug ID: 96901
           Summary: [11 Regression] Many libstdc++ tests FAIL on
                    i686-linux due to a PCH FE bug
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jakub at gcc dot gnu.org
  Target Milestone: ---

I'm seeing following regressions between Monday and Tuesday evening CET trunk
bootstraps:
 Running target unix
+FAIL: 20_util/bind/42593.cc (test for excess errors)
+FAIL: 20_util/bind/48698.cc (test for excess errors)
+FAIL: 20_util/is_compound/value.cc (test for excess errors)
+FAIL: 20_util/is_fundamental/value.cc (test for excess errors)
+FAIL: 20_util/is_signed/value.cc (test for excess errors)
+FAIL: 20_util/is_unsigned/value.cc (test for excess errors)
+FAIL: 20_util/unique_ptr/assign/nullptr.cc (test for excess errors)
+UNRESOLVED: 20_util/unique_ptr/assign/nullptr.cc compilation failed to produce
executable
+FAIL: 20_util/unique_ptr/cons/convertible_neg.cc (test for excess errors)
+FAIL: 20_util/unique_ptr/cons/incomplete.cc (test for excess errors)
+FAIL: 20_util/unique_ptr/cons/nullptr.cc (test for excess errors)
+UNRESOLVED: 20_util/unique_ptr/cons/nullptr.cc compilation failed to produce
executable
+FAIL:
20_util/unique_ptr/requirements/explicit_instantiation/explicit_instantiation.cc
(test for excess errors)
+FAIL: 21_strings/basic_string/allocator/wchar_t/noexcept.cc (test for excess
errors)
+FAIL: 22_locale/conversions/string/requirements/typedefs-2.cc (test for excess
errors)
+FAIL: 23_containers/list/allocator/noexcept.cc (test for excess errors)
+FAIL: 23_containers/map/modifiers/insert/2.cc (test for excess errors)
+UNRESOLVED: 23_containers/map/modifiers/insert/2.cc compilation failed to
produce executable
+FAIL: 23_containers/map/modifiers/insert/5.cc (test for excess errors)
+UNRESOLVED: 23_containers/map/modifiers/insert/5.cc compilation failed to
produce executable
+FAIL: 23_containers/multimap/modifiers/insert/2.cc (test for excess errors)
+UNRESOLVED: 23_containers/multimap/modifiers/insert/2.cc compilation failed to
produce executable
+FAIL: 23_containers/multimap/modifiers/insert/22102.cc (test for excess
errors)
+UNRESOLVED: 23_containers/multimap/modifiers/insert/22102.cc compilation
failed to produce executable
+FAIL: 23_containers/multimap/modifiers/insert/4.cc (test for excess errors)
+UNRESOLVED: 23_containers/multimap/modifiers/insert/4.cc compilation failed to
produce executable
+FAIL: 23_containers/multiset/allocator/swap.cc (test for excess errors)
+UNRESOLVED: 23_containers/multiset/allocator/swap.cc compilation failed to
produce executable
+FAIL: 23_containers/set/allocator/swap.cc (test for excess errors)
+UNRESOLVED: 23_containers/set/allocator/swap.cc compilation failed to produce
executable
+FAIL: 23_containers/unordered_map/insert/map_single_move-2.cc (test for excess
errors)
+UNRESOLVED: 23_containers/unordered_map/insert/map_single_move-2.cc
compilation failed to produce executable
+FAIL: 23_containers/unordered_map/modifiers/reserve.cc (test for excess
errors)
+UNRESOLVED: 23_containers/unordered_map/modifiers/reserve.cc compilation
failed to produce executable
+FAIL: 23_containers/vector/allocator/noexcept.cc (test for excess errors)
+FAIL: 23_containers/vector/bool/allocator/noexcept.cc (test for excess errors)
+FAIL: 25_algorithms/max/constexpr.cc (test for excess errors)
+FAIL: 25_algorithms/min/constexpr.cc (test for excess errors)
+FAIL: 26_numerics/random/cauchy_distribution/cons/default.cc (test for excess
errors)
+UNRESOLVED: 26_numerics/random/cauchy_distribution/cons/default.cc compilation
failed to produce executable
+FAIL: 26_numerics/random/extreme_value_distribution/cons/default.cc (test for
excess errors)
+UNRESOLVED: 26_numerics/random/extreme_value_distribution/cons/default.cc
compilation failed to produce executable
+FAIL: 26_numerics/random/normal_distribution/cons/default.cc (test for excess
errors)
+UNRESOLVED: 26_numerics/random/normal_distribution/cons/default.cc compilation
failed to produce executable
+FAIL: 26_numerics/random/student_t_distribution/cons/default.cc (test for
excess errors)
+UNRESOLVED: 26_numerics/random/student_t_distribution/cons/default.cc
compilation failed to produce executable
+FAIL: 28_regex/match_results/ctors/wchar_t/default.cc (test for excess errors)
+UNRESOLVED: 28_regex/match_results/ctors/wchar_t/default.cc compilation failed
to produce executable
 FAIL: 29_atomics/atomic_float/1.cc execution test
+FAIL: 30_threads/thread/adl.cc (test for excess errors)
+FAIL: experimental/net/buffer/traits.cc (test for excess errors)
+FAIL: experimental/net/execution_context/make_service.cc (test for excess
errors)
 FAIL: experimental/net/internet/resolver/ops/lookup.cc execution test
+FAIL: experimental/optional/relops/2.cc (test for excess errors)
+UNRESOLVED: experimental/optional/relops/2.cc compilation failed to produce
executable
+FAIL: experimental/optional/relops/3.cc (test for excess errors)
+UNRESOLVED: experimental/optional/relops/3.cc compilation failed to produce
executable
+FAIL: ext/random/normal_mv_distribution/cons/default.cc (test for excess
errors)
+UNRESOLVED: ext/random/normal_mv_distribution/cons/default.cc compilation
failed to produce executable

                === libstdc++ Summary ===

-# of expected passes           15192
-# of unexpected failures       2
+# of expected passes           15136
+# of unexpected failures       40
 # of expected failures         98
+# of unresolved testcases      19
 # of unsupported tests         334

-Compiler version: 11.0.0 20200831 (experimental) (GCC) 
+Compiler version: 11.0.0 20200901 (experimental) (GCC) 
 Platform: i686-pc-linux-gnu

The regressions ICEs are all PCH related, with ICEs like:
FAIL: 20_util/bind/42593.cc (test for excess errors)
Excess errors:
/home/jakub/src/gcc/obj71/i686-pc-linux-gnu/libstdc++-v3/include/chrono:441:  
in 'constexpr' expansion of 'std::chrono::duration<long long int, std::ratio<1,
1000000000> >::_S_gcd(((intmax_t)std::ratio<1>::den), ((intmax_t)std::ratio<1,
1000000000>::den))'
/home/jakub/src/gcc/obj71/i686-pc-linux-gnu/libstdc++-v3/include/chrono:442:
internal compiler error: Segmentation fault
0x8dd035a crash_signal
        ../../gcc/toplev.c:327
0x86877b6 cxx_eval_call_expression
        ../../gcc/cp/constexpr.c:2622
0x8688782 cxx_eval_constant_expression
        ../../gcc/cp/constexpr.c:5765
0x868bcab cxx_eval_outermost_constant_expr
        ../../gcc/cp/constexpr.c:6772
0x86901c0 maybe_constant_value(tree_node*, tree_node*, bool)
        ../../gcc/cp/constexpr.c:7045
0x87195dc fold_for_warn(tree_node*)
        ../../gcc/cp/expr.c:418

It is PCH related and very hard to reproduce, after all, the same cc1plus
doesn't crash always, but only sometimes.
I've tracked it to what seems to be another occurrence of PR92458, this time on
fundef_copies_table.  This is a non-deletable non-cache hash_map<tree, tree>
preserved across PCH, which means it is hashed when compiling the PCH header
using pointer hashing of the decls, then PCH reassigns addresses to GC
registered objects.  When PCH is read, the hash_map will usually contain keys
with different hash values compared to what it hashed originally, so there are
chances that some fundef->decl isn't found.  The ICE is because we don't find
an entry for _S_gcd, so add a for now NULL value to that function, but the
addition  to the hash table results in later call not finding that NULL entry,
but some other one from before PCH was saved, which results in very bad things
for recursive constexpr calls.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-10-16 12:07 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-02 16:51 [Bug c++/96901] New: [11 Regression] Many libstdc++ tests FAIL on i686-linux due to a PCH FE bug jakub at gcc dot gnu.org
2020-09-02 16:52 ` [Bug c++/96901] " jakub at gcc dot gnu.org
2020-09-02 16:57 ` jakub at gcc dot gnu.org
2020-09-03 19:54 ` cvs-commit at gcc dot gnu.org
2020-09-11  7:47 ` cvs-commit at gcc dot gnu.org
2020-10-16 12:07 ` rguenth at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).