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);