public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/110159] New: ICEs for C++ Contracts test cases with '-fno-exceptions'
@ 2023-06-07 16:39 tschwinge at gcc dot gnu.org
  2024-07-16 18:52 ` [Bug c++/110159] " cvs-commit at gcc dot gnu.org
  2024-07-16 18:53 ` jason at gcc dot gnu.org
  0 siblings, 2 replies; 3+ messages in thread
From: tschwinge at gcc dot gnu.org @ 2023-06-07 16:39 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 110159
           Summary: ICEs for C++ Contracts test cases with
                    '-fno-exceptions'
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tschwinge at gcc dot gnu.org
                CC: jason at gcc dot gnu.org
  Target Milestone: ---

Given native x86_64-pc-linux-gnu build of one-week-old commit
2720bbd597f56742a17119dfe80edc2ba86af255, running 'check-gcc-c++' with
'-fno-exceptions':

    $ make check-gcc-c++ RUNTESTFLAGS='--target_board=unix/-fno-exceptions
dg.exp=contracts\*'

..., I see ICEs for C++ Contracts test cases, see below.

    [...]/g++.dg/contracts/contracts-assume6.C: In function 'void fun(int)':
    [...]/g++.dg/contracts/contracts-assume6.C:13:1: internal compiler error:
Segmentation fault
    0x16ffb4f crash_signal
            [...]/gcc/toplev.cc:314
    0xe41fc8 contains_struct_check(tree_node*, tree_node_structure_enum, char
const*, int, char const*)
            [...]/gcc/tree.h:3656
    0xe41fc8 build_addr_func(tree_node*, int)
            [...]/gcc/cp/call.cc:278
    0xe4220d build_call_a(tree_node*, int, tree_node**)
            [...]/gcc/cp/call.cc:366
    0xed0dff build_contract_check(tree_node*)
            [...]/gcc/cp/contracts.cc:1814
    0xebdec7 cp_genericize_r
            [...]/gcc/cp/cp-gimplify.cc:1500
    0x19ed0e4 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*,
void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
            [...]/gcc/tree.cc:11341
    0x1140b3f c_genericize_control_stmt(tree_node**, int*, void*, tree_node*
(*)(tree_node**, int*, void*), tree_node* (*)(tree_node**, int*, tree_node*
(*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false,
default_hash_traits<tree_node*> >*))
            [...]/gcc/c-family/c-gimplify.cc:534
    0xebdbf1 cp_genericize_r
            [...]/gcc/cp/cp-gimplify.cc:1861
    0x19ed0e4 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*,
void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
            [...]/gcc/tree.cc:11341
    0xebd1b9 cp_genericize_tree
            [...]/gcc/cp/cp-gimplify.cc:1894
    0xebd536 cp_genericize(tree_node*)
            [...]/gcc/cp/cp-gimplify.cc:2036
    0xf0a5ff finish_function(bool)
            [...]/gcc/cp/decl.cc:18312
    0xed2729 finish_function_contracts(tree_node*)
            [...]/gcc/cp/contracts.cc:2050
    0xf09895 finish_function(bool)
            [...]/gcc/cp/decl.cc:18354
    0x1008677 cp_parser_function_definition_after_declarator
            [...]/gcc/cp/parser.cc:32057
    0x1009b53 cp_parser_function_definition_from_specifiers_and_declarator
            [...]/gcc/cp/parser.cc:31971
    0x1009b53 cp_parser_init_declarator
            [...]/gcc/cp/parser.cc:22822
    0xfde638 cp_parser_simple_declaration
            [...]/gcc/cp/parser.cc:15435
    0x10143db cp_parser_declaration
            [...]/gcc/cp/parser.cc:15121

'gcc/cp/call.cc':

    275 tree
    276 build_addr_func (tree function, tsubst_flags_t complain)
    277 {
    278   tree type = TREE_TYPE (function);

    358 tree
    359 build_call_a (tree function, int n, tree *argarray)
    360 {
    361   tree decl;
    362   tree result_type;
    363   tree fntype;
    364   int i;
    365 
    366   function = build_addr_func (function, tf_warning_or_error);

'gcc/cp/contracts.cc':

   1775 tree
   1776 build_contract_check (tree contract)
   1777 {
   [...]
   1814     finish_expr_stmt (build_call_a (terminate_fn, 0, nullptr));

So I suppose 'terminate_fn' isn't initialized here, which is normally done by
'init_exception_processing', which isn't called for '-fno-exceptions'.  I'm
happy to have a try at addressing this, but will need guidance at which level
additional 'if (flag_exceptions)' or similar is necessary.

This code exists as of the initial commit
r13-4160-g2efb237ffc68ec9bb17982434f5941bfa14f8b50 "c++: implement P1492
contracts".

    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-assume6.C    (test for
errors, line 29)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-assume6.C    (test for
errors, line 42)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-assume6.C    (test for
errors, line 49)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-assume6.C    (test for
warnings, line 24)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-assume6.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-assume6.C   (test for excess errors)

    UNSUPPORTED: g++.dg/contracts/contracts-comdat1.C  -std=c++14
    UNSUPPORTED: g++.dg/contracts/contracts-comdat1.C  -std=c++17
    [-PASS:-]{+UNRESOLVED:+} g++.dg/contracts/contracts-comdat1.C  -std=c++20 
scan-assembler-not (weak|globl)[^\\n]*_Z1fi.pre
    [-PASS:-]{+UNRESOLVED:+} g++.dg/contracts/contracts-comdat1.C  -std=c++20 
scan-assembler-not _Z1fi.pre,comdat
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-comdat1.C  -std=c++20 (internal
compiler error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-comdat1.C  -std=c++20 (test for excess
errors)
    UNSUPPORTED: g++.dg/contracts/contracts-comdat1.C  -std=c++98

    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-conversion1.C    (test for
errors, line 9)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-conversion1.C   (internal
compiler error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-conversion1.C   (test for excess
errors)

    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-ctor-dtor1.C   (internal
compiler error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-ctor-dtor1.C   (test for excess
errors)

    PASS: g++.dg/contracts/contracts-cv1.C    (test for errors, line 11)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-cv1.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-cv1.C   (test for excess errors)

    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-deduced1.C    (test for
errors, line 100)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-deduced1.C    (test for
errors, line 28)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-deduced1.C    (test for
errors, line 70)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-deduced1.C    (test for
errors, line 75)
    PASS: g++.dg/contracts/contracts-deduced1.C    (test for errors, line 8)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-deduced1.C    (test for
errors, line 82)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-deduced1.C    (test for
errors, line 86)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-deduced1.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-deduced1.C   (test for excess errors)

    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-large-return.C   (internal
compiler error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-large-return.C   (test for excess
errors)

    PASS: g++.dg/contracts/contracts-nested-class1.C    (test for errors, line
13)
    PASS: g++.dg/contracts/contracts-nested-class1.C    (test for errors, line
16)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-nested-class1.C   (internal
compiler error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-nested-class1.C   (test for excess
errors)

    UNSUPPORTED: g++.dg/contracts/contracts-nocopy1.C  -std=c++14
    UNSUPPORTED: g++.dg/contracts/contracts-nocopy1.C  -std=c++17
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-nocopy1.C  -std=c++20 (internal
compiler error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-nocopy1.C  -std=c++20 (test for excess
errors)
    UNSUPPORTED: g++.dg/contracts/contracts-nocopy1.C  -std=c++98

    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    (test for
errors, line 21)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    (test for
errors, line 22)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    (test for
errors, line 23)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    (test for
errors, line 24)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    (test for
errors, line 25)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    (test for
errors, line 26)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    (test for
errors, line 34)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    (test for
errors, line 39)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    (test for
errors, line 40)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    (test for
errors, line 41)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    at line 28
(test for errors, line 27)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    at line 29
(test for errors, line 27)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    at line 30
(test for errors, line 27)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    at line 31
(test for errors, line 27)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-override.C    at line 33
(test for errors, line 32)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-override.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-override.C   (test for excess errors)

    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-post1.C    (test for errors,
line 25)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-post1.C    (test for errors,
line 35)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-post1.C    (test for errors,
line 41)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-post1.C    (test for errors,
line 53)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-post1.C    (test for errors,
line 59)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-post1.C    (test for errors,
line 66)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-post1.C    (test for errors,
line 72)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-post1.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-post1.C   (test for excess errors)

    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-post2.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-post2.C   (test for excess errors)
    [-PASS:-]{+UNRESOLVED:+} g++.dg/contracts/contracts-post2.C   [-execution
test-]{+compilation failed to produce executable+}

    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-post3.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-post3.C   (test for excess errors)
    [-PASS: g++.dg/contracts/contracts-post3.C   execution test-]
    [-PASS:-]{+UNRESOLVED:+} g++.dg/contracts/contracts-post3.C   [-output
pattern test-]{+compilation failed to produce executable+}

    PASS: g++.dg/contracts/contracts-post4.C    (test for errors, line 20)
    PASS: g++.dg/contracts/contracts-post4.C    (test for errors, line 26)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-post4.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-post4.C   (test for excess errors)

    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-post5.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-post5.C   (test for excess errors)

    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-post6.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-post6.C   (test for excess errors)

    PASS: g++.dg/contracts/contracts-pre1.C    (test for bogus messages, line
23)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 14)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 15)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 16)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 19)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 20)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 21)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 22)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 26)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 28)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 29)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 30)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 32)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 33)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 34)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    (test for errors,
line 35)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-pre1.C    at line 27 (test
for warnings, line 26)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-pre1.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-pre1.C   (test for excess errors)

    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-pre2a1.C  -std=c++14 (internal
compiler error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-pre2a1.C  -std=c++14 (test for excess
errors)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-pre2a1.C  -std=c++17 (internal
compiler error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-pre2a1.C  -std=c++17 (test for excess
errors)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-pre2a1.C  -std=c++20 (internal
compiler error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-pre2a1.C  -std=c++20 (test for excess
errors)
    UNSUPPORTED: g++.dg/contracts/contracts-pre2a1.C  -std=c++98

    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-pre6.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-pre6.C   (test for excess errors)

    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl1.C    (test for
errors, line 107)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl1.C    (test for
errors, line 54)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl1.C    (test for
errors, line 57)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl1.C    (test for
errors, line 60)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl1.C    (test for
errors, line 63)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl1.C    (test for
errors, line 72)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl1.C    (test for
errors, line 80)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl1.C    (test for
errors, line 98)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-redecl1.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-redecl1.C   (test for excess errors)

    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 106)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 114)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 115)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 120)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 126)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 134)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 146)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 49)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 52)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 55)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 64)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 73)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 81)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 88)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 95)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
errors, line 96)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl2.C    (test for
warnings, line 116)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-redecl2.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-redecl2.C   (test for excess errors)

    PASS: g++.dg/contracts/contracts-redecl5.C    (test for bogus messages,
line 16)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl5.C    (test for
errors, line 58)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl5.C    (test for
errors, line 61)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl5.C    (test for
errors, line 64)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl5.C    (test for
errors, line 73)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl5.C    (test for
errors, line 82)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl5.C    (test for
errors, line 90)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl5.C    (test for
errors, line 97)
    PASS: g++.dg/contracts/contracts-redecl5.C    (test for warnings, line 15)
    PASS: g++.dg/contracts/contracts-redecl5.C    (test for warnings, line 24)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl5.C    (test for
warnings, line 34)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl5.C    (test for
warnings, line 54)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl5.C    at line 35 (test
for warnings, line 34)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl5.C    at line 38 (test
for warnings, line 37)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl5.C    at line 41 (test
for warnings, line 40)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-redecl5.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-redecl5.C   (test for excess errors)

    PASS: g++.dg/contracts/contracts-redecl8.C    (test for bogus messages,
line 48)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl8.C    (test for
errors, line 24)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl8.C    (test for
errors, line 43)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts-redecl8.C    (test for
errors, line 63)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-redecl8.C   (internal compiler
error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-redecl8.C   (test for excess errors)

    PASS: g++.dg/contracts/contracts-tmpl-attr1.C    (test for warnings, line
15)
    PASS: g++.dg/contracts/contracts-tmpl-attr1.C    (test for warnings, line
16)
    PASS: g++.dg/contracts/contracts-tmpl-attr1.C    (test for warnings, line
9)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts-tmpl-attr1.C   (internal
compiler error: Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts-tmpl-attr1.C   (test for excess
errors)

    @@ -43656,45 +43563,45 @@ PASS: g++.dg/contracts/contracts1.C    (test for
errors, line 42)
    PASS: g++.dg/contracts/contracts1.C    (test for errors, line 43)
    PASS: g++.dg/contracts/contracts1.C    (test for errors, line 44)
    PASS: g++.dg/contracts/contracts1.C    (test for errors, line 45)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts1.C   (internal compiler error:
Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts1.C   (test for excess errors)

    PASS: g++.dg/contracts/contracts11.C    (test for errors, line 19)
    PASS: g++.dg/contracts/contracts11.C    (test for errors, line 25)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts11.C    (test for errors, line
43)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts11.C    (test for errors, line
58)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts11.C    (test for errors, line
97)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts11.C   (internal compiler error:
Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts11.C   (test for excess errors)

    [-PASS:-]{+FAIL: g++.dg/contracts/contracts12.C   (internal compiler error:
Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts12.C   (test for excess errors)
    [-PASS:-]{+UNRESOLVED:+} g++.dg/contracts/contracts12.C   scan-assembler
default
    [-PASS:-]{+UNRESOLVED:+} g++.dg/contracts/contracts12.C  
scan-assembler-not audit

    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts13.C    (test for warnings,
line 42)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts13.C    (test for warnings,
line 45)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts13.C    (test for warnings,
line 47)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts13.C    at line 43 (test for
errors, line 12)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts13.C    at line 46 (test for
errors, line 30)
    [-PASS:-]{+FAIL:+} g++.dg/contracts/contracts13.C    at line 48 (test for
errors, line 36)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts13.C   (internal compiler error:
Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts13.C   (test for excess errors)

    [-PASS: g++.dg/contracts/contracts14.C   (test for excess errors)-]
    [-PASS: g++.dg/contracts/contracts14.C   execution test-]
    [-PASS:-]{+UNSUPPORTED:+} g++.dg/contracts/contracts14.C  [-output pattern
test-]

    [-PASS: g++.dg/contracts/contracts15.C   (test for excess errors)-]
    [-PASS: g++.dg/contracts/contracts15.C   execution test-]
    [-PASS:-]{+: exception handling disabled+}
    {+UNSUPPORTED:+} g++.dg/contracts/contracts15.C  [-output pattern test-]

    [-PASS: g++.dg/contracts/contracts16.C   (test for excess errors)-]
    [-PASS:-]{+: exception handling disabled+}
    {+FAIL:+} g++.dg/contracts/contracts16.C   [-execution test-]
    [-PASS:-]{+(internal compiler error: Segmentation fault)+}
    {+UNSUPPORTED:+} g++.dg/contracts/contracts16.C  [-output pattern test-]
    [-PASS:-]{+: exception handling disabled+}

    {+FAIL:+} g++.dg/contracts/contracts17.C   [-(test for excess errors)-]
    [-PASS: g++.dg/contracts/contracts17.C   execution test-]
    [-PASS:-]{+(internal compiler error: Segmentation fault)+}
    {+UNSUPPORTED:+} g++.dg/contracts/contracts17.C  [-output pattern test-]
    [-PASS:-]{+: exception handling disabled+}

    {+FAIL: g++.dg/contracts/contracts18.C   (internal compiler error:
Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts18.C   (test for excess errors)
    [-PASS:-]{+UNRESOLVED:+} g++.dg/contracts/contracts18.C   [-execution
test-]{+compilation failed to produce executable+}

    [-PASS:-]{+FAIL: g++.dg/contracts/contracts2.C   (internal compiler error:
Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts2.C   (test for excess errors)
    [-PASS:-]{+UNRESOLVED:+} g++.dg/contracts/contracts2.C   [-execution
test-]{+compilation failed to produce executable+}

    [-PASS:-]{+FAIL: g++.dg/contracts/contracts24.C   (internal compiler error:
Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts24.C   (test for excess errors)
    [-PASS:-]{+UNRESOLVED:+} g++.dg/contracts/contracts24.C   [-execution
test-]{+compilation failed to produce executable+}

    [-PASS:-]{+FAIL: g++.dg/contracts/contracts3.C   (internal compiler error:
Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts3.C   (test for excess errors)
    [-PASS: g++.dg/contracts/contracts3.C   execution test-]
    [-PASS:-]{+UNRESOLVED:+} g++.dg/contracts/contracts3.C   [-output pattern
test-]{+compilation failed to produce executable+}

    [-PASS:-]{+FAIL: g++.dg/contracts/contracts5.C   (internal compiler error:
Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts5.C   (test for excess errors)
    [-PASS: g++.dg/contracts/contracts5.C   execution test-]
    [-PASS:-]{+UNRESOLVED:+} g++.dg/contracts/contracts5.C   [-output pattern
test-]{+compilation failed to produce executable+}

    @@ -43740,7 +43648,8 @@ PASS: g++.dg/contracts/contracts8.C    at line 34
(test for warnings, line 33)
    PASS: g++.dg/contracts/contracts8.C    at line 36 (test for warnings, line
35)
    PASS: g++.dg/contracts/contracts8.C    at line 39 (test for warnings, line
38)
    PASS: g++.dg/contracts/contracts8.C    at line 41 (test for warnings, line
40)
    [-PASS:-]{+FAIL: g++.dg/contracts/contracts8.C   (internal compiler error:
Segmentation fault)+}
    {+FAIL:+} g++.dg/contracts/contracts8.C   (test for excess errors)

    [-PASS:-]{+FAIL: g++.dg/modules/contracts-tpl-friend-1_b.C -std=c++17
(internal compiler error: Segmentation fault)+}
    {+FAIL:+} g++.dg/modules/contracts-tpl-friend-1_b.C -std=c++17 (test for
excess errors)
    [-PASS:-]{+FAIL: g++.dg/modules/contracts-tpl-friend-1_b.C -std=c++2a
(internal compiler error: Segmentation fault)+}
    {+FAIL:+} g++.dg/modules/contracts-tpl-friend-1_b.C -std=c++2a (test for
excess errors)
    [-PASS:-]{+FAIL: g++.dg/modules/contracts-tpl-friend-1_b.C -std=c++2b
(internal compiler error: Segmentation fault)+}
    {+FAIL:+} g++.dg/modules/contracts-tpl-friend-1_b.C -std=c++2b (test for
excess errors)

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

* [Bug c++/110159] ICEs for C++ Contracts test cases with '-fno-exceptions'
  2023-06-07 16:39 [Bug c++/110159] New: ICEs for C++ Contracts test cases with '-fno-exceptions' tschwinge at gcc dot gnu.org
@ 2024-07-16 18:52 ` cvs-commit at gcc dot gnu.org
  2024-07-16 18:53 ` jason at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2024-07-16 18:52 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Jason Merrill <jason@gcc.gnu.org>:

https://gcc.gnu.org/g:40a990c8b512fd25bd7d7b45aa509e1880d77209

commit r15-2076-g40a990c8b512fd25bd7d7b45aa509e1880d77209
Author: Nina Ranns <dinka.ranns@gmail.com>
Date:   Thu Jul 11 17:47:34 2024 +0100

    c++/contracts: ICE in C++ Contracts with '-fno-exceptions' [PR 110159]

    We currently only initialise terminate_fn if exceptions are enabled.
    However, contract handling requires terminate_fn when building the
    contract because a contract failure may result in std::terminate call
    regardless of whether the exceptions are enabled. Refactored
    init_exception_processing to extract the initialisation of
    terminate_fn. New function init_terminate_fn added that initialises
    terminate_fn if it hasn't already been initialised. Call to terminate_fn
    added in cxx_init_decl_processing if contracts are enabled.

            PR c++/110159

    gcc/cp/ChangeLog:

            * cp-tree.h (init_terminate_fn): Declaration of a new function.
            * decl.cc (cxx_init_decl_processing): If contracts are enabled,
            call init_terminate_fn.
            * except.cc (init_exception_processing): Function refactored to
            call init_terminate_fn.
            (init_terminate_fn): Added new function that initializes
            terminate_fn if it hasn't already been initialised.

    gcc/testsuite/ChangeLog:

            * g++.dg/contracts/pr110159.C: New test.

    Signed-off-by: Nina Ranns <dinka.ranns@gmail.com>

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

* [Bug c++/110159] ICEs for C++ Contracts test cases with '-fno-exceptions'
  2023-06-07 16:39 [Bug c++/110159] New: ICEs for C++ Contracts test cases with '-fno-exceptions' tschwinge at gcc dot gnu.org
  2024-07-16 18:52 ` [Bug c++/110159] " cvs-commit at gcc dot gnu.org
@ 2024-07-16 18:53 ` jason at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: jason at gcc dot gnu.org @ 2024-07-16 18:53 UTC (permalink / raw)
  To: gcc-bugs

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

Jason Merrill <jason at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |dinka.ranns at gmail dot com
         Resolution|---                         |FIXED
             Status|UNCONFIRMED                 |RESOLVED
   Target Milestone|---                         |15.0

--- Comment #2 from Jason Merrill <jason at gcc dot gnu.org> ---
Fixed for GCC 15.

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

end of thread, other threads:[~2024-07-16 18:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-07 16:39 [Bug c++/110159] New: ICEs for C++ Contracts test cases with '-fno-exceptions' tschwinge at gcc dot gnu.org
2024-07-16 18:52 ` [Bug c++/110159] " cvs-commit at gcc dot gnu.org
2024-07-16 18:53 ` jason 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).