00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifdef GENERATOR_FILE
00025 #include "bconfig.h"
00026 #else
00027 #include "config.h"
00028 #endif
00029
00030 #include "system.h"
00031 #include "coretypes.h"
00032 #include "tm.h"
00033 #include "rtl.h"
00034
00035
00036
00037 #ifndef GENERATOR_FILE
00038 #include "tree.h"
00039 #include "real.h"
00040 #include "flags.h"
00041 #include "hard-reg-set.h"
00042 #include "basic-block.h"
00043 #endif
00044
00045 static FILE *outfile;
00046
00047 static int sawclose = 0;
00048
00049 static int indent;
00050
00051 static void print_rtx (rtx);
00052
00053
00054
00055
00056 const char *print_rtx_head = "";
00057
00058
00059
00060
00061 int flag_dump_unnumbered = 0;
00062
00063
00064 int flag_simple = 0;
00065
00066
00067 int dump_for_graph;
00068
00069 #ifndef GENERATOR_FILE
00070 static void
00071 print_decl_name (FILE *outfile, tree node)
00072 {
00073 if (DECL_NAME (node))
00074 fputs (IDENTIFIER_POINTER (DECL_NAME (node)), outfile);
00075 else
00076 {
00077 if (TREE_CODE (node) == LABEL_DECL && LABEL_DECL_UID (node) != -1)
00078 fprintf (outfile, "L." HOST_WIDE_INT_PRINT_DEC, LABEL_DECL_UID (node));
00079 else
00080 {
00081 char c = TREE_CODE (node) == CONST_DECL ? 'C' : 'D';
00082 fprintf (outfile, "%c.%u", c, DECL_UID (node));
00083 }
00084 }
00085 }
00086
00087 void
00088 print_mem_expr (FILE *outfile, tree expr)
00089 {
00090 if (TREE_CODE (expr) == COMPONENT_REF)
00091 {
00092 if (TREE_OPERAND (expr, 0))
00093 print_mem_expr (outfile, TREE_OPERAND (expr, 0));
00094 else
00095 fputs (" <variable>", outfile);
00096 fputc ('.', outfile);
00097 print_decl_name (outfile, TREE_OPERAND (expr, 1));
00098 }
00099 else if (TREE_CODE (expr) == INDIRECT_REF)
00100 {
00101 fputs (" (*", outfile);
00102 print_mem_expr (outfile, TREE_OPERAND (expr, 0));
00103 fputs (")", outfile);
00104 }
00105 else if (TREE_CODE (expr) == ALIGN_INDIRECT_REF)
00106 {
00107 fputs (" (A*", outfile);
00108 print_mem_expr (outfile, TREE_OPERAND (expr, 0));
00109 fputs (")", outfile);
00110 }
00111 else if (TREE_CODE (expr) == MISALIGNED_INDIRECT_REF)
00112 {
00113 fputs (" (M*", outfile);
00114 print_mem_expr (outfile, TREE_OPERAND (expr, 0));
00115 fputs (")", outfile);
00116 }
00117 else if (TREE_CODE (expr) == RESULT_DECL)
00118 fputs (" <result>", outfile);
00119 else
00120 {
00121 fputc (' ', outfile);
00122 print_decl_name (outfile, expr);
00123 }
00124 }
00125 #endif
00126
00127
00128
00129 static void
00130 print_rtx (rtx in_rtx)
00131 {
00132 int i = 0;
00133 int j;
00134 const char *format_ptr;
00135 int is_insn;
00136
00137 if (sawclose)
00138 {
00139 if (flag_simple)
00140 fputc (' ', outfile);
00141 else
00142 fprintf (outfile, "\n%s%*s", print_rtx_head, indent * 2, "");
00143 sawclose = 0;
00144 }
00145
00146 if (in_rtx == 0)
00147 {
00148 fputs ("(nil)", outfile);
00149 sawclose = 1;
00150 return;
00151 }
00152 else if (GET_CODE (in_rtx) > NUM_RTX_CODE)
00153 {
00154 fprintf (outfile, "(??? bad code %d\n)", GET_CODE (in_rtx));
00155 sawclose = 1;
00156 return;
00157 }
00158
00159 is_insn = INSN_P (in_rtx);
00160
00161
00162
00163 if (dump_for_graph
00164 && (is_insn || NOTE_P (in_rtx)
00165 || LABEL_P (in_rtx) || BARRIER_P (in_rtx)))
00166 {
00167 i = 3;
00168 indent = 0;
00169 }
00170 else
00171 {
00172
00173 if (flag_simple && GET_CODE (in_rtx) == CONST_INT)
00174 fputc ('(', outfile);
00175 else
00176 fprintf (outfile, "(%s", GET_RTX_NAME (GET_CODE (in_rtx)));
00177
00178 if (! flag_simple)
00179 {
00180 if (RTX_FLAG (in_rtx, in_struct))
00181 fputs ("/s", outfile);
00182
00183 if (RTX_FLAG (in_rtx, volatil))
00184 fputs ("/v", outfile);
00185
00186 if (RTX_FLAG (in_rtx, unchanging))
00187 fputs ("/u", outfile);
00188
00189 if (RTX_FLAG (in_rtx, frame_related))
00190 fputs ("/f", outfile);
00191
00192 if (RTX_FLAG (in_rtx, jump))
00193 fputs ("/j", outfile);
00194
00195 if (RTX_FLAG (in_rtx, call))
00196 fputs ("/c", outfile);
00197
00198 if (RTX_FLAG (in_rtx, return_val))
00199 fputs ("/i", outfile);
00200
00201
00202 if (GET_CODE (in_rtx) == EXPR_LIST
00203 || GET_CODE (in_rtx) == INSN_LIST)
00204 fprintf (outfile, ":%s",
00205 GET_REG_NOTE_NAME (GET_MODE (in_rtx)));
00206
00207
00208 else if (GET_MODE (in_rtx) != VOIDmode)
00209 fprintf (outfile, ":%s", GET_MODE_NAME (GET_MODE (in_rtx)));
00210 }
00211 }
00212
00213 #ifndef GENERATOR_FILE
00214 if (GET_CODE (in_rtx) == CONST_DOUBLE && FLOAT_MODE_P (GET_MODE (in_rtx)))
00215 i = 5;
00216 #endif
00217
00218
00219
00220 format_ptr = GET_RTX_FORMAT (GET_CODE (in_rtx)) + i;
00221 for (; i < GET_RTX_LENGTH (GET_CODE (in_rtx)); i++)
00222 switch (*format_ptr++)
00223 {
00224 const char *str;
00225
00226 case 'T':
00227 str = XTMPL (in_rtx, i);
00228 goto string;
00229
00230 case 'S':
00231 case 's':
00232 str = XSTR (in_rtx, i);
00233 string:
00234
00235 if (str == 0)
00236 fputs (dump_for_graph ? " \\\"\\\"" : " \"\"", outfile);
00237 else
00238 {
00239 if (dump_for_graph)
00240 fprintf (outfile, " (\\\"%s\\\")", str);
00241 else
00242 fprintf (outfile, " (\"%s\")", str);
00243 }
00244 sawclose = 1;
00245 break;
00246
00247
00248
00249
00250 case '0':
00251 if (i == 1 && REG_P (in_rtx))
00252 {
00253 if (REGNO (in_rtx) != ORIGINAL_REGNO (in_rtx))
00254 fprintf (outfile, " [%d]", ORIGINAL_REGNO (in_rtx));
00255 }
00256 #ifndef GENERATOR_FILE
00257 else if (i == 1 && GET_CODE (in_rtx) == SYMBOL_REF)
00258 {
00259 int flags = SYMBOL_REF_FLAGS (in_rtx);
00260 if (flags)
00261 fprintf (outfile, " [flags 0x%x]", flags);
00262 }
00263 else if (i == 2 && GET_CODE (in_rtx) == SYMBOL_REF)
00264 {
00265 tree decl = SYMBOL_REF_DECL (in_rtx);
00266 if (decl)
00267 print_node_brief (outfile, "", decl, 0);
00268 }
00269 #endif
00270 else if (i == 4 && NOTE_P (in_rtx))
00271 {
00272 switch (NOTE_LINE_NUMBER (in_rtx))
00273 {
00274 case NOTE_INSN_EH_REGION_BEG:
00275 case NOTE_INSN_EH_REGION_END:
00276 if (flag_dump_unnumbered)
00277 fprintf (outfile, " #");
00278 else
00279 fprintf (outfile, " %d", NOTE_EH_HANDLER (in_rtx));
00280 sawclose = 1;
00281 break;
00282
00283 case NOTE_INSN_BLOCK_BEG:
00284 case NOTE_INSN_BLOCK_END:
00285 fprintf (outfile, " ");
00286 if (flag_dump_unnumbered)
00287 fprintf (outfile, "#");
00288 else
00289 fprintf (outfile, HOST_PTR_PRINTF,
00290 (char *) NOTE_BLOCK (in_rtx));
00291 sawclose = 1;
00292 break;
00293
00294 case NOTE_INSN_BASIC_BLOCK:
00295 {
00296 #ifndef GENERATOR_FILE
00297 basic_block bb = NOTE_BASIC_BLOCK (in_rtx);
00298 if (bb != 0)
00299 fprintf (outfile, " [bb %d]", bb->index);
00300 #endif
00301 break;
00302 }
00303
00304 case NOTE_INSN_EXPECTED_VALUE:
00305 indent += 2;
00306 if (!sawclose)
00307 fprintf (outfile, " ");
00308 print_rtx (NOTE_EXPECTED_VALUE (in_rtx));
00309 indent -= 2;
00310 break;
00311
00312 case NOTE_INSN_DELETED_LABEL:
00313 {
00314 const char *label = NOTE_DELETED_LABEL_NAME (in_rtx);
00315 if (label)
00316 fprintf (outfile, " (\"%s\")", label);
00317 else
00318 fprintf (outfile, " \"\"");
00319 }
00320 break;
00321
00322 case NOTE_INSN_UNLIKELY_EXECUTED_CODE:
00323 {
00324 #ifndef GENERATOR_FILE
00325 basic_block bb = NOTE_BASIC_BLOCK (in_rtx);
00326 if (bb != 0)
00327 fprintf (outfile, " [bb %d]", bb->index);
00328 #endif
00329 break;
00330 }
00331
00332 case NOTE_INSN_VAR_LOCATION:
00333 #ifndef GENERATOR_FILE
00334 fprintf (outfile, " (");
00335 print_mem_expr (outfile, NOTE_VAR_LOCATION_DECL (in_rtx));
00336 fprintf (outfile, " ");
00337 print_rtx (NOTE_VAR_LOCATION_LOC (in_rtx));
00338 fprintf (outfile, ")");
00339 #endif
00340 break;
00341
00342 default:
00343 {
00344 const char * const str = X0STR (in_rtx, i);
00345
00346 if (NOTE_LINE_NUMBER (in_rtx) < 0)
00347 ;
00348 else if (str == 0)
00349 fputs (dump_for_graph ? " \\\"\\\"" : " \"\"", outfile);
00350 else
00351 {
00352 if (dump_for_graph)
00353 fprintf (outfile, " (\\\"%s\\\")", str);
00354 else
00355 fprintf (outfile, " (\"%s\")", str);
00356 }
00357 break;
00358 }
00359 }
00360 }
00361 break;
00362
00363 case 'e':
00364 do_e:
00365 indent += 2;
00366 if (!sawclose)
00367 fprintf (outfile, " ");
00368 print_rtx (XEXP (in_rtx, i));
00369 indent -= 2;
00370 break;
00371
00372 case 'E':
00373 case 'V':
00374 indent += 2;
00375 if (sawclose)
00376 {
00377 fprintf (outfile, "\n%s%*s",
00378 print_rtx_head, indent * 2, "");
00379 sawclose = 0;
00380 }
00381 fputs (" [", outfile);
00382 if (NULL != XVEC (in_rtx, i))
00383 {
00384 indent += 2;
00385 if (XVECLEN (in_rtx, i))
00386 sawclose = 1;
00387
00388 for (j = 0; j < XVECLEN (in_rtx, i); j++)
00389 print_rtx (XVECEXP (in_rtx, i, j));
00390
00391 indent -= 2;
00392 }
00393 if (sawclose)
00394 fprintf (outfile, "\n%s%*s", print_rtx_head, indent * 2, "");
00395
00396 fputs ("]", outfile);
00397 sawclose = 1;
00398 indent -= 2;
00399 break;
00400
00401 case 'w':
00402 if (! flag_simple)
00403 fprintf (outfile, " ");
00404 fprintf (outfile, HOST_WIDE_INT_PRINT_DEC, XWINT (in_rtx, i));
00405 if (! flag_simple)
00406 fprintf (outfile, " [" HOST_WIDE_INT_PRINT_HEX "]",
00407 XWINT (in_rtx, i));
00408 break;
00409
00410 case 'i':
00411 if (i == 4 && INSN_P (in_rtx))
00412 {
00413 #ifndef GENERATOR_FILE
00414
00415
00416
00417 if (INSN_LOCATOR (in_rtx) && insn_file (in_rtx))
00418 fprintf(outfile, " %s:%i", insn_file (in_rtx), insn_line (in_rtx));
00419 #endif
00420 }
00421 else if (i == 6 && NOTE_P (in_rtx))
00422 {
00423
00424
00425 if (NOTE_LINE_NUMBER (in_rtx) == NOTE_INSN_DELETED_LABEL)
00426 fprintf (outfile, " %d", XINT (in_rtx, i));
00427 }
00428 else
00429 {
00430 int value = XINT (in_rtx, i);
00431 const char *name;
00432
00433 #ifndef GENERATOR_FILE
00434 if (REG_P (in_rtx) && value < FIRST_PSEUDO_REGISTER)
00435 fprintf (outfile, " %d %s", REGNO (in_rtx),
00436 reg_names[REGNO (in_rtx)]);
00437 else if (REG_P (in_rtx)
00438 && value <= LAST_VIRTUAL_REGISTER)
00439 {
00440 if (value == VIRTUAL_INCOMING_ARGS_REGNUM)
00441 fprintf (outfile, " %d virtual-incoming-args", value);
00442 else if (value == VIRTUAL_STACK_VARS_REGNUM)
00443 fprintf (outfile, " %d virtual-stack-vars", value);
00444 else if (value == VIRTUAL_STACK_DYNAMIC_REGNUM)
00445 fprintf (outfile, " %d virtual-stack-dynamic", value);
00446 else if (value == VIRTUAL_OUTGOING_ARGS_REGNUM)
00447 fprintf (outfile, " %d virtual-outgoing-args", value);
00448 else if (value == VIRTUAL_CFA_REGNUM)
00449 fprintf (outfile, " %d virtual-cfa", value);
00450 else
00451 fprintf (outfile, " %d virtual-reg-%d", value,
00452 value-FIRST_VIRTUAL_REGISTER);
00453 }
00454 else
00455 #endif
00456 if (flag_dump_unnumbered
00457 && (is_insn || NOTE_P (in_rtx)))
00458 fputc ('#', outfile);
00459 else
00460 fprintf (outfile, " %d", value);
00461
00462 #ifndef GENERATOR_FILE
00463 if (REG_P (in_rtx) && REG_ATTRS (in_rtx))
00464 {
00465 fputs (" [", outfile);
00466 if (ORIGINAL_REGNO (in_rtx) != REGNO (in_rtx))
00467 fprintf (outfile, "orig:%i", ORIGINAL_REGNO (in_rtx));
00468 if (REG_EXPR (in_rtx))
00469 print_mem_expr (outfile, REG_EXPR (in_rtx));
00470
00471 if (REG_OFFSET (in_rtx))
00472 fprintf (outfile, "+" HOST_WIDE_INT_PRINT_DEC,
00473 REG_OFFSET (in_rtx));
00474 fputs (" ]", outfile);
00475 }
00476 #endif
00477
00478 if (is_insn && &INSN_CODE (in_rtx) == &XINT (in_rtx, i)
00479 && XINT (in_rtx, i) >= 0
00480 && (name = get_insn_name (XINT (in_rtx, i))) != NULL)
00481 fprintf (outfile, " {%s}", name);
00482 sawclose = 0;
00483 }
00484 break;
00485
00486
00487
00488 case 'n':
00489 if (XINT (in_rtx, i) >= (int) NOTE_INSN_BIAS
00490 && XINT (in_rtx, i) < (int) NOTE_INSN_MAX)
00491 fprintf (outfile, " %s", GET_NOTE_INSN_NAME (XINT (in_rtx, i)));
00492 else
00493 fprintf (outfile, " %d", XINT (in_rtx, i));
00494 sawclose = 0;
00495 break;
00496
00497 case 'u':
00498 if (XEXP (in_rtx, i) != NULL)
00499 {
00500 rtx sub = XEXP (in_rtx, i);
00501 enum rtx_code subc = GET_CODE (sub);
00502
00503 if (GET_CODE (in_rtx) == LABEL_REF)
00504 {
00505 if (subc == NOTE
00506 && NOTE_LINE_NUMBER (sub) == NOTE_INSN_DELETED_LABEL)
00507 {
00508 if (flag_dump_unnumbered)
00509 fprintf (outfile, " [# deleted]");
00510 else
00511 fprintf (outfile, " [%d deleted]", INSN_UID (sub));
00512 sawclose = 0;
00513 break;
00514 }
00515
00516 if (subc != CODE_LABEL)
00517 goto do_e;
00518 }
00519
00520 if (flag_dump_unnumbered)
00521 fputs (" #", outfile);
00522 else
00523 fprintf (outfile, " %d", INSN_UID (sub));
00524 }
00525 else
00526 fputs (" 0", outfile);
00527 sawclose = 0;
00528 break;
00529
00530 case 'b':
00531 #ifndef GENERATOR_FILE
00532 if (XBITMAP (in_rtx, i) == NULL)
00533 fputs (" {null}", outfile);
00534 else
00535 bitmap_print (outfile, XBITMAP (in_rtx, i), " {", "}");
00536 #endif
00537 sawclose = 0;
00538 break;
00539
00540 case 't':
00541 fprintf (outfile, " " HOST_PTR_PRINTF, (void *) XTREE (in_rtx, i));
00542 break;
00543
00544 case '*':
00545 fputs (" Unknown", outfile);
00546 sawclose = 0;
00547 break;
00548
00549 case 'B':
00550 #ifndef GENERATOR_FILE
00551 if (XBBDEF (in_rtx, i))
00552 fprintf (outfile, " %i", XBBDEF (in_rtx, i)->index);
00553 #endif
00554 break;
00555
00556 default:
00557 fprintf (stderr,
00558 "switch format wrong in rtl.print_rtx(). format was: %c.\n",
00559 format_ptr[-1]);
00560 abort ();
00561 }
00562
00563 switch (GET_CODE (in_rtx))
00564 {
00565 #ifndef GENERATOR_FILE
00566 case MEM:
00567 fprintf (outfile, " [" HOST_WIDE_INT_PRINT_DEC, MEM_ALIAS_SET (in_rtx));
00568
00569 if (MEM_EXPR (in_rtx))
00570 print_mem_expr (outfile, MEM_EXPR (in_rtx));
00571
00572 if (MEM_OFFSET (in_rtx))
00573 fprintf (outfile, "+" HOST_WIDE_INT_PRINT_DEC,
00574 INTVAL (MEM_OFFSET (in_rtx)));
00575
00576 if (MEM_SIZE (in_rtx))
00577 fprintf (outfile, " S" HOST_WIDE_INT_PRINT_DEC,
00578 INTVAL (MEM_SIZE (in_rtx)));
00579
00580 if (MEM_ALIGN (in_rtx) != 1)
00581 fprintf (outfile, " A%u", MEM_ALIGN (in_rtx));
00582
00583 fputc (']', outfile);
00584 break;
00585
00586 case CONST_DOUBLE:
00587 if (FLOAT_MODE_P (GET_MODE (in_rtx)))
00588 {
00589 char s[60];
00590
00591 real_to_decimal (s, CONST_DOUBLE_REAL_VALUE (in_rtx),
00592 sizeof (s), 0, 1);
00593 fprintf (outfile, " %s", s);
00594
00595 real_to_hexadecimal (s, CONST_DOUBLE_REAL_VALUE (in_rtx),
00596 sizeof (s), 0, 1);
00597 fprintf (outfile, " [%s]", s);
00598 }
00599 break;
00600 #endif
00601
00602 case CODE_LABEL:
00603 fprintf (outfile, " [%d uses]", LABEL_NUSES (in_rtx));
00604 switch (LABEL_KIND (in_rtx))
00605 {
00606 case LABEL_NORMAL: break;
00607 case LABEL_STATIC_ENTRY: fputs (" [entry]", outfile); break;
00608 case LABEL_GLOBAL_ENTRY: fputs (" [global entry]", outfile); break;
00609 case LABEL_WEAK_ENTRY: fputs (" [weak entry]", outfile); break;
00610 default: abort();
00611 }
00612 break;
00613
00614 default:
00615 break;
00616 }
00617
00618 if (dump_for_graph
00619 && (is_insn || NOTE_P (in_rtx)
00620 || LABEL_P (in_rtx) || BARRIER_P (in_rtx)))
00621 sawclose = 0;
00622 else
00623 {
00624 fputc (')', outfile);
00625 sawclose = 1;
00626 }
00627 }
00628
00629
00630
00631
00632 void
00633 print_inline_rtx (FILE *outf, rtx x, int ind)
00634 {
00635 int oldsaw = sawclose;
00636 int oldindent = indent;
00637
00638 sawclose = 0;
00639 indent = ind;
00640 outfile = outf;
00641 print_rtx (x);
00642 sawclose = oldsaw;
00643 indent = oldindent;
00644 }
00645
00646
00647
00648 void
00649 debug_rtx (rtx x)
00650 {
00651 outfile = stderr;
00652 sawclose = 0;
00653 print_rtx (x);
00654 fprintf (stderr, "\n");
00655 }
00656
00657
00658
00659
00660 int debug_rtx_count = 0;
00661
00662
00663
00664
00665
00666
00667
00668 void
00669 debug_rtx_list (rtx x, int n)
00670 {
00671 int i,count;
00672 rtx insn;
00673
00674 count = n == 0 ? 1 : n < 0 ? -n : n;
00675
00676
00677
00678 if (n < 0)
00679 for (i = count / 2; i > 0; i--)
00680 {
00681 if (PREV_INSN (x) == 0)
00682 break;
00683 x = PREV_INSN (x);
00684 }
00685
00686 for (i = count, insn = x; i > 0 && insn != 0; i--, insn = NEXT_INSN (insn))
00687 {
00688 debug_rtx (insn);
00689 fprintf (stderr, "\n");
00690 }
00691 }
00692
00693
00694
00695 void
00696 debug_rtx_range (rtx start, rtx end)
00697 {
00698 while (1)
00699 {
00700 debug_rtx (start);
00701 fprintf (stderr, "\n");
00702 if (!start || start == end)
00703 break;
00704 start = NEXT_INSN (start);
00705 }
00706 }
00707
00708
00709
00710
00711
00712 rtx
00713 debug_rtx_find (rtx x, int uid)
00714 {
00715 while (x != 0 && INSN_UID (x) != uid)
00716 x = NEXT_INSN (x);
00717 if (x != 0)
00718 {
00719 debug_rtx_list (x, debug_rtx_count);
00720 return x;
00721 }
00722 else
00723 {
00724 fprintf (stderr, "insn uid %d not found\n", uid);
00725 return 0;
00726 }
00727 }
00728
00729
00730
00731
00732
00733
00734
00735 void
00736 print_rtl (FILE *outf, rtx rtx_first)
00737 {
00738 rtx tmp_rtx;
00739
00740 outfile = outf;
00741 sawclose = 0;
00742
00743 if (rtx_first == 0)
00744 {
00745 fputs (print_rtx_head, outf);
00746 fputs ("(nil)\n", outf);
00747 }
00748 else
00749 switch (GET_CODE (rtx_first))
00750 {
00751 case INSN:
00752 case JUMP_INSN:
00753 case CALL_INSN:
00754 case NOTE:
00755 case CODE_LABEL:
00756 case BARRIER:
00757 for (tmp_rtx = rtx_first; tmp_rtx != 0; tmp_rtx = NEXT_INSN (tmp_rtx))
00758 if (! flag_dump_unnumbered
00759 || !NOTE_P (tmp_rtx) || NOTE_LINE_NUMBER (tmp_rtx) < 0)
00760 {
00761 fputs (print_rtx_head, outfile);
00762 print_rtx (tmp_rtx);
00763 fprintf (outfile, "\n");
00764 }
00765 break;
00766
00767 default:
00768 fputs (print_rtx_head, outfile);
00769 print_rtx (rtx_first);
00770 }
00771 }
00772
00773
00774
00775
00776 int
00777 print_rtl_single (FILE *outf, rtx x)
00778 {
00779 outfile = outf;
00780 sawclose = 0;
00781 if (! flag_dump_unnumbered
00782 || !NOTE_P (x) || NOTE_LINE_NUMBER (x) < 0)
00783 {
00784 fputs (print_rtx_head, outfile);
00785 print_rtx (x);
00786 putc ('\n', outf);
00787 return 1;
00788 }
00789 return 0;
00790 }
00791
00792
00793
00794
00795
00796 void
00797 print_simple_rtl (FILE *outf, rtx x)
00798 {
00799 flag_simple = 1;
00800 print_rtl (outf, x);
00801 flag_simple = 0;
00802 }