RHEL 8 system gcc was last updated: %global DATE 20191121 %global SVNREV 278589 we should consider updating gcc from upstream GCC 8.4, which contains a lot of bugfixes.
Testsuite (compared with gcc-8.3.1-5.2.el8) looks good. The only new FAILs I see are on s390x: FAIL: gcc.dg/pr94780.c (internal compiler error) FAIL: gcc.dg/pr94842.c (internal compiler error) these tests were introduced in commit b79f3e1e67ca0c5e14b677e3fc847a3c79881b5f Author: Jakub Jelinek <jakub> Date: Thu Apr 30 21:48:30 2020 +0200 c: Fix ICE with _Atomic side-effect in nested fn param decls [PR94842] and commit a8a6b29393dbc13d81fdc5d354526452bd79fb94 Author: Jakub Jelinek <jakub> Date: Mon Apr 27 21:14:52 2020 +0200 x86: Fix up ix86_atomic_assign_expand_fenv [PR94780] the ICE is /builddir/build/BUILD/gcc-8.4.1-20200928/gcc/testsuite/gcc.dg/pr94780.c:8:1: internal compiler error: Segmentation fault^M 0x2aa00428e71 crash_signal^M ../../gcc/toplev.c:326^M 0x2aa00474ff4 get_frame_type^M ../../gcc/tree-nested.c:212^M 0x2aa004750bd get_chain_decl^M ../../gcc/tree-nested.c:317^M 0x2aa0047737f get_nonlocal_debug_decl^M ../../gcc/tree-nested.c:919^M 0x2aa004777df convert_nonlocal_reference_op^M ../../gcc/tree-nested.c:998^M 0x2aa00c78677 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*))^M ../../gcc/tree.c:11402^M 0x2aa0091737d walk_gimple_op(gimple*, tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*)^M ../../gcc/gimple-walk.c:268^M 0x2aa00916681 walk_gimple_stmt(gimple_stmt_iterator*, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*)^M ../../gcc/gimple-walk.c:586^M 0x2aa00916463 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*)^M ../../gcc/gimple-walk.c:51^M 0x2aa0091665f walk_gimple_stmt(gimple_stmt_iterator*, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*)^M ../../gcc/gimple-walk.c:595^M 0x2aa00916463 walk_gimple_seq_mod(gimple**, tree_node* (*)(gimple_stmt_iterator*, bool*, walk_stmt_info*), tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*)^M ../../gcc/gimple-walk.c:51^M 0x2aa00474959 walk_body^M ../../gcc/tree-nested.c:662^M 0x2aa00474c9b walk_function^M ../../gcc/tree-nested.c:673^M 0x2aa00474d23 walk_all_functions^M ../../gcc/tree-nested.c:738^M 0x2aa00479d01 lower_nested_functions(tree_node*)^M ../../gcc/tree-nested.c:3394^M 0x2aa007da47f cgraph_node::analyze()^M ../../gcc/cgraphunit.c:676^M 0x2aa007da47f analyze_functions^M ../../gcc/cgraphunit.c:1131^M 0x2aa007d7fa3 symbol_table::finalize_compilation_unit()^M ../../gcc/cgraphunit.c:2691^M which reminds me of an ancient ICE I reported years ago: https://gcc.gnu.org/PR60085 I wouldn't consider this a blocker at all.
Jakub has a patch for the two FAILs. I might pull that in if there's a need for a rebuild.
Yes: 2020-09-30 Jakub Jelinek <jakub> * config/s390/s390.c (s390_atomic_assign_expand_fenv): Use TARGET_EXPR instead of MODIFY_EXPR for the first assignments to fenv_var and old_fpc. Formatting fixes. --- gcc/config/s390/s390.c.jj 2020-09-14 09:04:36.086851054 +0200 +++ gcc/config/s390/s390.c 2020-09-30 10:22:50.579603271 +0200 @@ -16082,12 +16082,13 @@ s390_atomic_assign_expand_fenv (tree *ho fenv_var = __builtin_s390_efpc (); __builtin_s390_sfpc (fenv_var & mask) */ - tree old_fpc = build2 (MODIFY_EXPR, unsigned_type_node, fenv_var, call_efpc); - tree new_fpc = - build2 (BIT_AND_EXPR, unsigned_type_node, fenv_var, - build_int_cst (unsigned_type_node, - ~(FPC_DXC_MASK | FPC_FLAGS_MASK | - FPC_EXCEPTION_MASK))); + tree old_fpc = build4 (TARGET_EXPR, unsigned_type_node, fenv_var, call_efpc, + NULL_TREE, NULL_TREE); + tree new_fpc + = build2 (BIT_AND_EXPR, unsigned_type_node, fenv_var, + build_int_cst (unsigned_type_node, + ~(FPC_DXC_MASK | FPC_FLAGS_MASK + | FPC_EXCEPTION_MASK))); tree set_new_fpc = build_call_expr (sfpc, 1, new_fpc); *hold = build2 (COMPOUND_EXPR, void_type_node, old_fpc, set_new_fpc); @@ -16106,8 +16107,8 @@ s390_atomic_assign_expand_fenv (tree *ho __atomic_feraiseexcept ((old_fpc & FPC_FLAGS_MASK) >> FPC_FLAGS_SHIFT); */ old_fpc = create_tmp_var_raw (unsigned_type_node); - tree store_old_fpc = build2 (MODIFY_EXPR, void_type_node, - old_fpc, call_efpc); + tree store_old_fpc = build4 (TARGET_EXPR, void_type_node, old_fpc, call_efpc, + NULL_TREE, NULL_TREE); set_new_fpc = build_call_expr (sfpc, 1, fenv_var); I don't see those FAILs in the scratch build.log I'm doing in f34, but it hasn't finished yet.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (gcc bug fix and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2021:1571