Mercurial > hg > CbC > CbC_gcc
comparison gcc/sel-sched-dump.c @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | b7f97abdc517 |
children | 04ced10e8804 |
comparison
equal
deleted
inserted
replaced
65:65488c3d617d | 67:f6334be47118 |
---|---|
19 | 19 |
20 #include "config.h" | 20 #include "config.h" |
21 #include "system.h" | 21 #include "system.h" |
22 #include "coretypes.h" | 22 #include "coretypes.h" |
23 #include "tm.h" | 23 #include "tm.h" |
24 #include "toplev.h" | 24 #include "diagnostic-core.h" |
25 #include "rtl.h" | 25 #include "rtl.h" |
26 #include "tm_p.h" | 26 #include "tm_p.h" |
27 #include "hard-reg-set.h" | 27 #include "hard-reg-set.h" |
28 #include "regs.h" | 28 #include "regs.h" |
29 #include "function.h" | 29 #include "function.h" |
162 dump_insn_rtx_1 (insn, dump_insn_rtx_flags); | 162 dump_insn_rtx_1 (insn, dump_insn_rtx_flags); |
163 } | 163 } |
164 | 164 |
165 | 165 |
166 /* Dump INSN to stderr. */ | 166 /* Dump INSN to stderr. */ |
167 void | 167 DEBUG_FUNCTION void |
168 debug_insn_rtx (rtx insn) | 168 debug_insn_rtx (rtx insn) |
169 { | 169 { |
170 switch_dump (stderr); | 170 switch_dump (stderr); |
171 dump_insn_rtx_1 (insn, debug_insn_rtx_flags); | 171 dump_insn_rtx_1 (insn, debug_insn_rtx_flags); |
172 sel_print ("\n"); | 172 sel_print ("\n"); |
212 { | 212 { |
213 dump_vinsn_1 (vi, dump_vinsn_flags); | 213 dump_vinsn_1 (vi, dump_vinsn_flags); |
214 } | 214 } |
215 | 215 |
216 /* Dump vinsn VI to stderr. */ | 216 /* Dump vinsn VI to stderr. */ |
217 void | 217 DEBUG_FUNCTION void |
218 debug_vinsn (vinsn_t vi) | 218 debug_vinsn (vinsn_t vi) |
219 { | 219 { |
220 switch_dump (stderr); | 220 switch_dump (stderr); |
221 dump_vinsn_1 (vi, debug_vinsn_flags); | 221 dump_vinsn_1 (vi, debug_vinsn_flags); |
222 sel_print ("\n"); | 222 sel_print ("\n"); |
293 { | 293 { |
294 dump_expr_1 (expr, dump_expr_flags); | 294 dump_expr_1 (expr, dump_expr_flags); |
295 } | 295 } |
296 | 296 |
297 /* Dump expression EXPR to stderr. */ | 297 /* Dump expression EXPR to stderr. */ |
298 void | 298 DEBUG_FUNCTION void |
299 debug_expr (expr_t expr) | 299 debug_expr (expr_t expr) |
300 { | 300 { |
301 switch_dump (stderr); | 301 switch_dump (stderr); |
302 dump_expr_1 (expr, debug_expr_flags); | 302 dump_expr_1 (expr, debug_expr_flags); |
303 sel_print ("\n"); | 303 sel_print ("\n"); |
351 { | 351 { |
352 dump_insn_1 (i, DUMP_INSN_EXPR | DUMP_INSN_SCHED_CYCLE); | 352 dump_insn_1 (i, DUMP_INSN_EXPR | DUMP_INSN_SCHED_CYCLE); |
353 } | 353 } |
354 | 354 |
355 /* Dump INSN to stderr. */ | 355 /* Dump INSN to stderr. */ |
356 void | 356 DEBUG_FUNCTION void |
357 debug_insn (insn_t insn) | 357 debug_insn (insn_t insn) |
358 { | 358 { |
359 switch_dump (stderr); | 359 switch_dump (stderr); |
360 dump_insn_1 (insn, debug_insn_flags); | 360 dump_insn_1 (insn, debug_insn_flags); |
361 sel_print ("\n"); | 361 sel_print ("\n"); |
464 dump_insn_vector (rtx_vec_t succs) | 464 dump_insn_vector (rtx_vec_t succs) |
465 { | 465 { |
466 int i; | 466 int i; |
467 rtx succ; | 467 rtx succ; |
468 | 468 |
469 for (i = 0; VEC_iterate (rtx, succs, i, succ); i++) | 469 FOR_EACH_VEC_ELT (rtx, succs, i, succ) |
470 if (succ) | 470 if (succ) |
471 dump_insn (succ); | 471 dump_insn (succ); |
472 else | 472 else |
473 sel_print ("NULL "); | 473 sel_print ("NULL "); |
474 } | 474 } |
564 } | 564 } |
565 while (p); | 565 while (p); |
566 } | 566 } |
567 | 567 |
568 /* Replace characters in BUF that have special meaning in .dot file. */ | 568 /* Replace characters in BUF that have special meaning in .dot file. */ |
569 void | 569 static void |
570 sel_prepare_string_for_dot_label (char *buf) | 570 sel_prepare_string_for_dot_label (char *buf) |
571 { | 571 { |
572 static char specials_from[7][2] = { "<", ">", "{", "|", "}", "\"", | 572 static char specials_from[7][2] = { "<", ">", "{", "|", "}", "\"", |
573 "\n" }; | 573 "\n" }; |
574 static char specials_to[7][3] = { "\\<", "\\>", "\\{", "\\|", "\\}", | 574 static char specials_to[7][3] = { "\\<", "\\>", "\\{", "\\|", "\\}", |
575 "\\\"", "\\l" }; | 575 "\\\"", "\\l" }; |
576 unsigned i; | 576 unsigned i; |
577 | 577 |
578 for (i = 0; i < 7; i++) | 578 for (i = 0; i < 7; i++) |
579 replace_str_in_buf (buf, specials_from[i], specials_to[i]); | 579 replace_str_in_buf (buf, specials_from[i], specials_to[i]); |
580 } | |
581 | |
582 /* This function acts like printf but dumps to the sched_dump file. */ | |
583 void | |
584 sel_print (const char *fmt, ...) | |
585 { | |
586 va_list ap; | |
587 va_start (ap, fmt); | |
588 if (sched_dump_to_dot_p) | |
589 { | |
590 char *message; | |
591 if (vasprintf (&message, fmt, ap) >= 0 && message != NULL) | |
592 { | |
593 message = (char *) xrealloc (message, 2 * strlen (message) + 1); | |
594 sel_prepare_string_for_dot_label (message); | |
595 fprintf (sched_dump, "%s", message); | |
596 free (message); | |
597 } | |
598 } | |
599 else | |
600 vfprintf (sched_dump, fmt, ap); | |
601 va_end (ap); | |
580 } | 602 } |
581 | 603 |
582 /* Dump INSN with FLAGS. */ | 604 /* Dump INSN with FLAGS. */ |
583 static void | 605 static void |
584 sel_dump_cfg_insn (insn_t insn, int flags) | 606 sel_dump_cfg_insn (insn_t insn, int flags) |
859 sel_dump_cfg_fileno = t2; | 881 sel_dump_cfg_fileno = t2; |
860 sel_dump_cfg_p = t1; | 882 sel_dump_cfg_p = t1; |
861 } | 883 } |
862 | 884 |
863 /* Dumps av_set AV to stderr. */ | 885 /* Dumps av_set AV to stderr. */ |
864 void | 886 DEBUG_FUNCTION void |
865 debug_av_set (av_set_t av) | 887 debug_av_set (av_set_t av) |
866 { | 888 { |
867 switch_dump (stderr); | 889 switch_dump (stderr); |
868 dump_av_set (av); | 890 dump_av_set (av); |
869 sel_print ("\n"); | 891 sel_print ("\n"); |
870 restore_dump (); | 892 restore_dump (); |
871 } | 893 } |
872 | 894 |
873 /* Dump LV to stderr. */ | 895 /* Dump LV to stderr. */ |
874 void | 896 DEBUG_FUNCTION void |
875 debug_lv_set (regset lv) | 897 debug_lv_set (regset lv) |
876 { | 898 { |
877 switch_dump (stderr); | 899 switch_dump (stderr); |
878 dump_lv_set (lv); | 900 dump_lv_set (lv); |
879 sel_print ("\n"); | 901 sel_print ("\n"); |
880 restore_dump (); | 902 restore_dump (); |
881 } | 903 } |
882 | 904 |
883 /* Dump an instruction list P to stderr. */ | 905 /* Dump an instruction list P to stderr. */ |
884 void | 906 DEBUG_FUNCTION void |
885 debug_ilist (ilist_t p) | 907 debug_ilist (ilist_t p) |
886 { | 908 { |
887 switch_dump (stderr); | 909 switch_dump (stderr); |
888 dump_ilist (p); | 910 dump_ilist (p); |
889 sel_print ("\n"); | 911 sel_print ("\n"); |
890 restore_dump (); | 912 restore_dump (); |
891 } | 913 } |
892 | 914 |
893 /* Dump a boundary list BNDS to stderr. */ | 915 /* Dump a boundary list BNDS to stderr. */ |
894 void | 916 DEBUG_FUNCTION void |
895 debug_blist (blist_t bnds) | 917 debug_blist (blist_t bnds) |
896 { | 918 { |
897 switch_dump (stderr); | 919 switch_dump (stderr); |
898 dump_blist (bnds); | 920 dump_blist (bnds); |
899 sel_print ("\n"); | 921 sel_print ("\n"); |
900 restore_dump (); | 922 restore_dump (); |
901 } | 923 } |
902 | 924 |
903 /* Dump an insn vector SUCCS. */ | 925 /* Dump an insn vector SUCCS. */ |
904 void | 926 DEBUG_FUNCTION void |
905 debug_insn_vector (rtx_vec_t succs) | 927 debug_insn_vector (rtx_vec_t succs) |
906 { | 928 { |
907 switch_dump (stderr); | 929 switch_dump (stderr); |
908 dump_insn_vector (succs); | 930 dump_insn_vector (succs); |
909 sel_print ("\n"); | 931 sel_print ("\n"); |
910 restore_dump (); | 932 restore_dump (); |
911 } | 933 } |
912 | 934 |
913 /* Dump a hard reg set SET to stderr. */ | 935 /* Dump a hard reg set SET to stderr. */ |
914 void | 936 DEBUG_FUNCTION void |
915 debug_hard_reg_set (HARD_REG_SET set) | 937 debug_hard_reg_set (HARD_REG_SET set) |
916 { | 938 { |
917 switch_dump (stderr); | 939 switch_dump (stderr); |
918 dump_hard_reg_set ("", set); | 940 dump_hard_reg_set ("", set); |
919 sel_print ("\n"); | 941 sel_print ("\n"); |
926 { | 948 { |
927 sel_debug_cfg_1 (sel_debug_cfg_flags); | 949 sel_debug_cfg_1 (sel_debug_cfg_flags); |
928 } | 950 } |
929 | 951 |
930 /* Print a current cselib value for X's address to stderr. */ | 952 /* Print a current cselib value for X's address to stderr. */ |
931 rtx | 953 DEBUG_FUNCTION rtx |
932 debug_mem_addr_value (rtx x) | 954 debug_mem_addr_value (rtx x) |
933 { | 955 { |
934 rtx t, addr; | 956 rtx t, addr; |
935 enum machine_mode address_mode; | 957 enum machine_mode address_mode; |
936 | 958 |
937 gcc_assert (MEM_P (x)); | 959 gcc_assert (MEM_P (x)); |
938 address_mode = targetm.addr_space.address_mode (MEM_ADDR_SPACE (x)); | 960 address_mode = targetm.addr_space.address_mode (MEM_ADDR_SPACE (x)); |
939 | 961 |
940 t = shallow_copy_rtx (x); | 962 t = shallow_copy_rtx (x); |
941 if (cselib_lookup (XEXP (t, 0), address_mode, 0)) | 963 if (cselib_lookup (XEXP (t, 0), address_mode, 0, GET_MODE (t))) |
942 XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0)); | 964 XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0), GET_MODE (t)); |
943 | 965 |
944 t = canon_rtx (t); | 966 t = canon_rtx (t); |
945 addr = get_addr (XEXP (t, 0)); | 967 addr = get_addr (XEXP (t, 0)); |
946 debug_rtx (t); | 968 debug_rtx (t); |
947 debug_rtx (addr); | 969 debug_rtx (addr); |