This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/69101] New: ICE when compiling some tests in gfortran.dg/ieee/ with -fdefault-integer-8 or -finteger-4-integer-8


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.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]