https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83019
Bug ID: 83019 Summary: Compiler dumps predictions with -nan% Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: ubizjak at gmail dot com Target Milestone: --- Recent patch caused some dumps to dump -nam%. One example is gcc.dg/graphite/interchange-12.c, which generates: ./cc1 -O2 -ffast-math -floop-nest-optimize -fdump-tree-graphite-all interchange-12.c interchange-12.c.150t.graphite: ... Predictions for bb 29 first match heuristics: 99.0% exec 0 (estimated locally) hit 0 (estimated locally) (-nan%) combined heuristics: 99.0% exec 0 (estimated locally) hit 0 (estimated locally) (-nan%) loop iterations heuristics of edge 29->28: 1.0% exec 0 (estimated locally) hit 0 (estimated locally) (-nan%) Predictions for bb 30 1 edges in bb 30 predicted to even probabilities Predictions for bb 28 first match heuristics: 99.0% exec 0 (estimated locally) hit 0 (estimated locally) (-nan%) combined heuristics: 99.0% exec 0 (estimated locally) hit 0 (estimated locally) (-nan%) loop iterations heuristics of edge 28->22: 1.0% exec 0 (estimated locally) hit 0 (estimated locally) (-nan%) ... The above dump was generated with x86_64-linux-gnu host. This is problematic with hosts (e.g. alpha) that require -mieee when dealing with NaNs, resulting in several ICEs [1]. The cause is the division 0/0 in: Program received signal SIGFPE, Arithmetic exception. 0x00000001207a4ee4 in dump_prediction (file=0x121665bf0, predictor=<optimized out>, probability=<optimized out>, bb=0x2000099df48, reason=<optimized o ut>, ep_edge=<optimized out>) at /space/homedirs/uros/gcc-svn/trunk/gcc/predict.c:750 750 fprintf (file, " (%.1f%%)", e->count ().to_gcov_type() * 100.0 (gdb) bt #0 0x00000001207a4ee4 in dump_prediction (file=0x121665bf0, predictor=<optimized out>, probability=<optimized out>, bb=0x2000099df48, reason=<optimized out>, ep_edge=<optimized out>) at /space/homedirs/uros/gcc-svn/trunk/gcc/predict.c:750 #1 0x00000001207af424 in combine_predictions_for_bb (bb=0x2000099df48, dry_run=<optimized out>) at /space/homedirs/uros/gcc-svn/trunk/gcc/predict.c:1 270 #2 0x00000001207b23d0 in tree_estimate_probability (dry_run=<optimized out>) at /space/homedirs/uros/gcc-svn/trunk/gcc/predict.c:2819 #3 0x0000000120f6bf24 in graphite_transform_loops () at /space/homedirs/uros/gcc-svn/trunk/gcc/graphite.c:425 #4 0x0000000120f6d374 in graphite_transforms (fun=0x12120fc31) at /space/homedirs/uros/gcc-svn/trunk/gcc/graphite.c:447 #5 (anonymous namespace)::pass_graphite_transforms::execute (this=0x121665bf0, fun=0x12120fc31) at /space/homedirs/uros/gcc-svn/trunk/gcc/graphite.c: 524 #6 0x000000012078b038 in execute_one_pass (pass=0x1214fe7c0) at /space/homedirs/uros/gcc-svn/trunk/gcc/passes.c:2497 #7 0x000000012078bc08 in execute_pass_list_1 (pass=0x1214fe7c0) at /space/homedirs/uros/gcc-svn/trunk/gcc/passes.c:2586 #8 0x000000012078bc24 in execute_pass_list_1 (pass=0x1214fe760) at /space/homedirs/uros/gcc-svn/trunk/gcc/passes.c:2587 #9 0x000000012078bc24 in execute_pass_list_1 (pass=0x1214fe400) at /space/homedirs/uros/gcc-svn/trunk/gcc/passes.c:2587 #10 0x000000012078bc24 in execute_pass_list_1 (pass=0x1214fd070) at /space/homedirs/uros/gcc-svn/trunk/gcc/passes.c:2587 #11 0x000000012078bca4 in execute_pass_list (fn=<optimized out>, pass=0x12120fc31) at /space/homedirs/uros/gcc-svn/trunk/gcc/passes.c:2597 #12 0x0000000120363804 in cgraph_node::expand (this=0x200009c8000) at /space/homedirs/uros/gcc-svn/trunk/gcc/cgraphunit.c:2139 #13 0x00000001203652a0 in expand_all_functions () at /space/homedirs/uros/gcc-svn/trunk/gcc/cgraphunit.c:2275 #14 symbol_table::compile (this=<optimized out>) at /space/homedirs/uros/gcc-svn/trunk/gcc/cgraphunit.c:2623 #15 0x000000012036874c in compile (this=0x200008a4000) at /space/homedirs/uros/gcc-svn/trunk/gcc/cgraphunit.c:2682 #16 symbol_table::finalize_compilation_unit (this=0x200008a4000) at /space/homedirs/uros/gcc-svn/trunk/gcc/cgraphunit.c:2716 #17 0x00000001208a695c in compile_file () at /space/homedirs/uros/gcc-svn/trunk/gcc/toplev.c:480 #18 0x000000012013ae90 in do_compile () at /space/homedirs/uros/gcc-svn/trunk/gcc/toplev.c:2060 #19 toplev::main (this=0x11fdff040, argc=<optimized out>, argv=<optimized out>) at /space/homedirs/uros/gcc-svn/trunk/gcc/toplev.c:2195 #20 0x000000012013cf60 in main (argc=<optimized out>, argv=0x11fdff168) at /space/homedirs/uros/gcc-svn/trunk/gcc/main.c:39 (gdb) list 745 bb->count.dump (file); 746 if (e) 747 { 748 fprintf (file, " hit "); 749 e->count ().dump (file); 750 fprintf (file, " (%.1f%%)", e->count ().to_gcov_type() * 100.0 751 / bb->count.to_gcov_type ()); 752 } 753 } 754 [1] https://gcc.gnu.org/ml/gcc-testresults/2017-11/msg01330.html