[Bug fortran/69101] New: ICE when compiling some tests in gfortran.dg/ieee/ with -fdefault-integer-8 or -finteger-4-integer-8
dominiq at lps dot ens.fr
gcc-bugzilla@gcc.gnu.org
Thu Dec 31 17:54:00 GMT 2015
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.
More information about the Gcc-bugs
mailing list