---
 gcc/dwarf2out.c |   14 +++++++-------
 gcc/dwarf2out.h |    2 ++
 gcc/print-rtl.c |    9 +++++++++
 3 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 097e57f..2736477 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -822,8 +822,8 @@ output_cfi (dw_cfi_ref cfi, dw_fde_ref fde, int for_eh)
 
 /* Similar, but do it via assembler directives instead.  */
 
-static void
-output_cfi_directive (dw_cfi_ref cfi)
+void
+output_cfi_directive (FILE *asm_out_file, dw_cfi_ref cfi)
 {
   unsigned long r, r2;
 
@@ -925,7 +925,7 @@ void
 dwarf2out_emit_cfi (dw_cfi_ref cfi)
 {
   if (dwarf2out_do_cfi_asm ())
-    output_cfi_directive (cfi);
+    output_cfi_directive (asm_out_file, cfi);
 }
 
 /* Output CFIs from VEC, up to index UPTO, to bring current FDE to the
@@ -1032,7 +1032,7 @@ output_cfis (cfi_vec vec, int upto, bool do_cfi_asm,
                  && cfi2->dw_cfi_opc != DW_CFA_restore_extended)
                {
                  if (do_cfi_asm)
-                   output_cfi_directive (cfi2);
+                   output_cfi_directive (asm_out_file, cfi2);
                  else
                    output_cfi (cfi2, fde, for_eh);
                }
@@ -1066,7 +1066,7 @@ output_cfis (cfi_vec vec, int upto, bool do_cfi_asm,
          if (cfi_cfa)
            {
              if (do_cfi_asm)
-               output_cfi_directive (cfi_cfa);
+               output_cfi_directive (asm_out_file, cfi_cfa);
              else
                output_cfi (cfi_cfa, fde, for_eh);
            }
@@ -1076,7 +1076,7 @@ output_cfis (cfi_vec vec, int upto, bool do_cfi_asm,
              && cfi_args_size->dw_cfi_oprnd1.dw_cfi_offset)
            {
              if (do_cfi_asm)
-               output_cfi_directive (cfi_args_size);
+               output_cfi_directive (asm_out_file, cfi_args_size);
              else
                output_cfi (cfi_args_size, fde, for_eh);
            }
@@ -1087,7 +1087,7 @@ output_cfis (cfi_vec vec, int upto, bool do_cfi_asm,
              return;
            }
          else if (do_cfi_asm)
-           output_cfi_directive (cfi);
+           output_cfi_directive (asm_out_file, cfi);
          else
            output_cfi (cfi, fde, for_eh);
          break;
diff --git a/gcc/dwarf2out.h b/gcc/dwarf2out.h
index 7122dee..19bae4a 100644
--- a/gcc/dwarf2out.h
+++ b/gcc/dwarf2out.h
@@ -241,6 +241,8 @@ extern enum dw_cfi_oprnd_type dw_cfi_oprnd1_desc
 extern enum dw_cfi_oprnd_type dw_cfi_oprnd2_desc
   (enum dwarf_call_frame_info cfi);
 
+extern void output_cfi_directive (FILE *f, struct dw_cfi_struct *cfi);
+
 extern void dwarf2out_decl (tree);
 extern void dwarf2out_emit_cfi (dw_cfi_ref cfi);
 
diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c
index c20ff6c..d7fd73b 100644
--- a/gcc/print-rtl.c
+++ b/gcc/print-rtl.c
@@ -43,6 +43,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-pretty-print.h"
 #include "cselib.h"
 #include "tree-pass.h"
+#include "dwarf2out.h"
 #endif
 
 static FILE *outfile;
@@ -309,6 +310,14 @@ print_rtx (const_rtx in_rtx)
 #endif
                break;
 
+             case NOTE_INSN_CFI:
+#ifndef GENERATOR_FILE
+               fputc ('\n', outfile);
+               output_cfi_directive (outfile, NOTE_CFI (in_rtx));
+               fputc ('\t', outfile);
+#endif
+               break;
+
              default:
                break;
              }
-- 
1.7.5.4

Reply via email to