https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69101
Bug ID: 69101 Summary: ICE when compiling some tests in gfortran.dg/ieee/ with -fdefault-integer-8 or -finteger-4-integer-8 Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: dominiq at lps dot ens.fr CC: fxcoudert at gcc dot gnu.org Target Milestone: --- Compiling the tests gfortran.dg/ieee/large_*.f90 with -fdefault-integer-8 or -finteger-4-integer-8 gives an ICE f951: internal compiler error: Segmentation fault: 11 The backtrace is * thread #1: tid = 0x3c4621a, 0x00000001000bce4f f951`simplify_ieee_selected_real_kind(expr=<unavailable>) + 15 at simplify.c:7041, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x20) frame #0: 0x00000001000bce4f f951`simplify_ieee_selected_real_kind(expr=<unavailable>) + 15 at simplify.c:7041 7038 { 7039 gfc_actual_arglist *arg = expr->value.function.actual; 7040 gfc_expr *p = arg->expr, *q = arg->next->expr, -> 7041 *rdx = arg->next->next->expr; 7042 7043 /* Currently, if IEEE is supported and this module is built, it means 7044 all our floating-point types conform to IEEE. Hence, we simply handle (lldb) bt * thread #1: tid = 0x3c4621a, 0x00000001000bce4f f951`simplify_ieee_selected_real_kind(expr=<unavailable>) + 15 at simplify.c:7041, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x20) * frame #0: 0x00000001000bce4f f951`simplify_ieee_selected_real_kind(expr=<unavailable>) + 15 at simplify.c:7041 frame #1: 0x0000000100036578 f951`gfc_check_init_expr(e=0x0000000142326e30) + 1048 at expr.c:2485 frame #2: 0x0000000100036296 f951`gfc_check_init_expr(gfc_expr*) + 35 at expr.c:2234 frame #3: 0x0000000100036273 f951`gfc_check_init_expr(gfc_expr*) [inlined] check_conversion(e=0x0000000142326c10) frame #4: 0x0000000100036273 f951`gfc_check_init_expr(e=0x0000000142326c10) + 275 frame #5: 0x00000001000365c2 f951`gfc_check_init_expr(gfc_expr*) + 9 at expr.c:2234 frame #6: 0x00000001000365b9 f951`gfc_check_init_expr(gfc_expr*) [inlined] check_elemental(e=0x0000000142325db0) + 35 frame #7: 0x0000000100036596 f951`gfc_check_init_expr(e=0x0000000142325db0) + 1078 frame #8: 0x0000000100036cd8 f951`gfc_reduce_init_expr(expr=0x0000000142325db0) + 56 at expr.c:2670 frame #9: 0x0000000100037daa f951`gfc_match_init_expr(result=0x00007fff5fbfece8) + 74 at expr.c:2709 frame #10: 0x0000000100026228 f951`gfc_match_data_decl() + 3704 at decl.c:2167 frame #11: 0x0000000100080cfa f951`(subr=<unavailable>, old_locus=0x00007fff5fbfedd0, simd_matched=<unavailable>, str=<unavailable>)(match (*)(), locus *, bool *, const char *) + 10 at parse.c:93 frame #12: 0x0000000100084245 f951`(null)() + 677 at parse.c:372 frame #13: 0x0000000100086115 f951`::next_statement() + 389 at parse.c:1076 frame #14: 0x0000000100087a0d f951`::parse_spec(st=<unavailable>) + 3725 at parse.c:3407 frame #15: 0x000000010008b6e7 f951`::parse_progunit(st=<unavailable>) + 39 at parse.c:5189 frame #16: 0x000000010008cfc2 f951`gfc_parse_file() + 994 at parse.c:5698 frame #17: 0x00000001000d2cb6 f951`::gfc_be_parse_file() + 54 at f95-lang.c:201 frame #18: 0x000000010097e89a f951`::compile_file() + 58 at toplev.c:464 frame #19: 0x0000000100d6dcce f951`toplev::main(int, char**) + 1146 at toplev.c:1985 frame #20: 0x0000000100d6d854 f951`toplev::main(this=<unavailable>, argc=5, argv=0x00007fff5fbff270) + 724 frame #21: 0x0000000100d6f689 f951`main(argc=5, argv=0x00007fff5fbff270) + 41 at main.c:39 I get a second set of ICEs when compiling gfortran.dg/ieee/ieee_[78].f90. The backtrace is * thread #1: tid = 0x3c46716, 0x00000001000bce57 f951`simplify_ieee_selected_real_kind(expr=<unavailable>) + 23 at simplify.c:7046, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18) frame #0: 0x00000001000bce57 f951`simplify_ieee_selected_real_kind(expr=<unavailable>) + 23 at simplify.c:7046 7043 /* Currently, if IEEE is supported and this module is built, it means 7044 all our floating-point types conform to IEEE. Hence, we simply handle 7045 IEEE_SELECTED_REAL_KIND like SELECTED_REAL_KIND. */ -> 7046 return gfc_simplify_selected_real_kind (p, q, rdx); 7047 } 7048 7049 gfc_expr * (lldb) bt * thread #1: tid = 0x3c46716, 0x00000001000bce57 f951`simplify_ieee_selected_real_kind(expr=<unavailable>) + 23 at simplify.c:7046, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18) * frame #0: 0x00000001000bce57 f951`simplify_ieee_selected_real_kind(expr=<unavailable>) + 23 at simplify.c:7046 frame #1: 0x0000000100036578 f951`gfc_check_init_expr(e=0x0000000142710e50) + 1048 at expr.c:2485 frame #2: 0x0000000100036cd8 f951`gfc_reduce_init_expr(expr=0x0000000142710e50) + 56 at expr.c:2670 frame #3: 0x0000000100037daa f951`gfc_match_init_expr(result=0x00007fff5fbfece8) + 74 at expr.c:2709 frame #4: 0x0000000100026228 f951`gfc_match_data_decl() + 3704 at decl.c:2167 frame #5: 0x0000000100080cfa f951`(subr=<unavailable>, old_locus=0x00007fff5fbfedd0, simd_matched=<unavailable>, str=<unavailable>)(match (*)(), locus *, bool *, const char *) + 10 at parse.c:93 frame #6: 0x0000000100084245 f951`(null)() + 677 at parse.c:372 frame #7: 0x0000000100086115 f951`::next_statement() + 389 at parse.c:1076 frame #8: 0x0000000100087a0d f951`::parse_spec(st=<unavailable>) + 3725 at parse.c:3407 frame #9: 0x000000010008b6e7 f951`::parse_progunit(st=<unavailable>) + 39 at parse.c:5189 frame #10: 0x000000010008cfc2 f951`gfc_parse_file() + 994 at parse.c:5698 frame #11: 0x00000001000d2cb6 f951`::gfc_be_parse_file() + 54 at f95-lang.c:201 frame #12: 0x000000010097e89a f951`::compile_file() + 58 at toplev.c:464 frame #13: 0x0000000100d6dcce f951`toplev::main(int, char**) + 1146 at toplev.c:1985 frame #14: 0x0000000100d6d854 f951`toplev::main(this=<unavailable>, argc=5, argv=0x00007fff5fbff270) + 724 frame #15: 0x0000000100d6f689 f951`main(argc=5, argv=0x00007fff5fbff270) + 41 at main.c:39 If needed, I can open a second PR for ieee_[78].f90.