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

            Bug ID: 89397
           Summary: [7/8/9 Regression] ICE in build_call_expr_loc_array at
                    gcc/tree.c:11563 since r229082
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
  Target Milestone: ---

Following is causing ICE:

$ cat atomic.c
_Atomic double a;
int b;

void c() { a += b; }

$ gcc -mfpmath=sse,387 -msoft-float -mno-sse -c atomic.c
atomic.c: In function ‘c’:
atomic.c:4:1: internal compiler error: Segmentation fault
    4 | void c() { a += b; }
      | ^~~~
0xd1194f crash_signal
        /home/marxin/Programming/gcc/gcc/toplev.c:326
0x7ffff7b79e0f ???
       
/usr/src/debug/glibc-2.29-1.3.x86_64/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0
0xfa6488 contains_struct_check(tree_node*, tree_node_structure_enum, char
const*, int, char const*)
        /home/marxin/Programming/gcc/gcc/tree.h:3289
0xfa6488 build_call_expr_loc_array(unsigned int, tree_node*, int, tree_node**)
        /home/marxin/Programming/gcc/gcc/tree.c:11563
0xfa66c1 build_call_expr(tree_node*, int, ...)
        /home/marxin/Programming/gcc/gcc/tree.c:11613
0x102556c ix86_atomic_assign_expand_fenv
        /home/marxin/Programming/gcc/gcc/config/i386/i386.c:50733
0x7d5a23 build_atomic_assign
        /home/marxin/Programming/gcc/gcc/c/c-typeck.c:4228
0x7e37f1 build_modify_expr(unsigned int, tree_node*, tree_node*, tree_code,
unsigned int, tree_node*, tree_node*)
        /home/marxin/Programming/gcc/gcc/c/c-typeck.c:6204
0x7fd78e c_parser_expr_no_commas
        /home/marxin/Programming/gcc/gcc/c/c-parser.c:6721
0x7fd902 c_parser_expression
        /home/marxin/Programming/gcc/gcc/c/c-parser.c:9727
0x7fe006 c_parser_expression_conv
        /home/marxin/Programming/gcc/gcc/c/c-parser.c:9760
0x80d66f c_parser_statement_after_labels
        /home/marxin/Programming/gcc/gcc/c/c-parser.c:5610
0x80f4ee c_parser_compound_statement_nostart
        /home/marxin/Programming/gcc/gcc/c/c-parser.c:5148
0x80fc76 c_parser_compound_statement
        /home/marxin/Programming/gcc/gcc/c/c-parser.c:4982
0x81138a c_parser_declaration_or_fndef
        /home/marxin/Programming/gcc/gcc/c/c-parser.c:2354
0x8183bf c_parser_external_declaration
        /home/marxin/Programming/gcc/gcc/c/c-parser.c:1653
0x818c09 c_parser_translation_unit
        /home/marxin/Programming/gcc/gcc/c/c-parser.c:1534
0x818c09 c_parse_file()
        /home/marxin/Programming/gcc/gcc/c/c-parser.c:19842
0x86c5b0 c_common_parse_file()
        /home/marxin/Programming/gcc/gcc/c-family/c-opts.c:1155

Before the revision it was rejected with:

atomic2.c: In function ‘func’:
atomic2.c:49:8: error: x87 register return with x87 disabled
   ald1 = d1;
        ^
atomic2.c:51:8: error: SSE register return with SSE disabled
   acd1 += ab1;
        ^

Reply via email to