https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71067
--- Comment #6 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- > Thus I would consider the PR as 4.8/4.9/5/6/7 regression, do you agree? Yes, the change occurred between revisions r190641 (2012-08-24, error) and r190786 (2012-08-29, ICE). The backtrace is * thread #1: tid = 0x8d8367, 0x00007fff811f2f06 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT * frame #0: 0x00007fff811f2f06 libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x00007fff8cfc74ec libsystem_pthread.dylib`pthread_kill + 90 frame #2: 0x00007fff8a5106e7 libsystem_c.dylib`abort + 129 frame #3: 0x00000001010497b1 f951`uw_init_context_1(context=<unavailable>, outer_cfa=<unavailable>, outer_ra=<unavailable>) + 353 at unwind-dw2.c:1563 frame #4: 0x000000010104a098 f951`_Unwind_Backtrace(trace=(f951`unwind at backtrace.c:68), trace_argument=0x00007fff5fbfeb40) + 56 at unwind.inc:283 frame #5: 0x0000000100fa4589 f951`backtrace_full(state=0x00000001426ff000, skip=<unavailable>, callback=<unavailable>, error_callback=<unavailable>, data=<unavailable>) + 105 at backtrace.c:127 frame #6: 0x0000000100f66213 f951`diagnostic_action_after_output(context=0x0000000141979dc0, diag_kind=<unavailable>) + 435 at diagnostic.c:481 frame #7: 0x0000000100f66828 f951`diagnostic_report_diagnostic(context=0x0000000141979dc0, diagnostic=0x00007fff5fbfec10) + 680 at diagnostic.c:943 frame #8: 0x0000000100033fbd f951`gfc_internal_error(gmsgid="free_expr0(): Bad expr type") + 237 at error.c:1312 frame #9: 0x0000000100034d5e f951`::free_expr0(e=0x0000000144307ac0) + 286 at expr.c:494 frame #10: 0x0000000100034db9 f951`gfc_free_expr(e=0x0000000144307ac0) + 9 at expr.c:513 frame #11: 0x000000010001f625 f951`gfc_free_data(gfc_data*) + 34 at decl.c:143 frame #12: 0x000000010001f603 f951`gfc_free_data(p=0x0000000144307330) + 51 frame #13: 0x0000000100020747 f951`gfc_match_data() + 471 at decl.c:626 frame #14: 0x000000010008286a f951`::match_word_omp_simd(subr=<unavailable>, old_locus=0x00007fff5fbfee70, simd_matched=<unavailable>, str=<unavailable>)(), locus *, bool *, const char *) + 10 at parse.c:93 frame #15: 0x0000000100086ffa f951`::decode_statement() + 5322 at parse.c:457 frame #16: 0x0000000100087d24 f951`::next_statement() + 276 at parse.c:1080 frame #17: 0x000000010008991d f951`::parse_spec(st=ST_DATA_DECL) + 3325 at parse.c:3637 frame #18: 0x000000010008cbf7 f951`::parse_progunit(st=<unavailable>) + 39 at parse.c:5420 frame #19: 0x000000010008e56a f951`gfc_parse_file() + 1146 at parse.c:5928 frame #20: 0x00000001000d563b f951`::gfc_be_parse_file() + 59 at f95-lang.c:198 frame #21: 0x0000000100b663ca f951`::compile_file() + 58 at toplev.c:465 frame #22: 0x000000010104e5d6 f951`toplev::main(int, char**) + 1561 at toplev.c:1998 frame #23: 0x000000010104dfbd f951`toplev::main(this=0x00007fff5fbff340, argc=<unavailable>, argv=<unavailable>) + 733 frame #24: 0x000000010104fe29 f951`main(argc=2, argv=0x00007fff5fbff380) + 41 at main.c:39 frame #25: 0x00007fff810c35ad libdyld.dylib`start + 1 Tobias Burnus has committed several changes around "free" in this range.