re PR target/14619 (Incorrect Dwarf 2 information in function prologue)
authorHans-Peter Nilsson <hp@axis.com>
Thu, 24 Feb 2005 22:17:42 +0000 (22:17 +0000)
committerHans-Peter Nilsson <hp@gcc.gnu.org>
Thu, 24 Feb 2005 22:17:42 +0000 (22:17 +0000)
PR target/14619
* config/cris/cris.c (cris_target_asm_function_prologue): Create
dwarf2 label manually and put it after, not before the prologue.

From-SVN: r95521

gcc/ChangeLog
gcc/config/cris/cris.c

index b8584768472e158d870b34ee436b6e3b3ab27033..59b1dceffa0865d08bdf4f181c44c69c2ea1a10f 100644 (file)
@@ -1,3 +1,9 @@
+2005-02-24  Hans-Peter Nilsson  <hp@axis.com>
+
+       PR target/14619
+       * config/cris/cris.c (cris_target_asm_function_prologue): Create
+       dwarf2 label manually and put it after, not before the prologue.
+
 2005-02-24  David Edelsohn  <edelsohn@gnu.org>
 
        PR target/19019
index a01fe1ec4d2a8e5eeeb34ae656ee44c0dc441943..3599e2dae05e2e425b45908e616541ecdd445675 100644 (file)
@@ -656,6 +656,10 @@ cris_fatal (char *arg)
   return 0;
 }
 
+/* This variable belongs to cris_target_asm_function_prologue but must
+   be located outside it for GTY reasons.  */
+static GTY(()) unsigned long cfa_label_num = 0;
+
 /* Textual function prologue.  */
 
 static void
@@ -670,7 +674,7 @@ cris_target_asm_function_prologue (FILE *file, HOST_WIDE_INT size)
   int framesize;
   int faked_args_size = 0;
   int cfa_write_offset = 0;
-  char *cfa_label = NULL;
+  static char cfa_label[30];
   int return_address_on_stack
     = regs_ever_live[CRIS_SRP_REGNUM]
     || cfun->machine->needs_return_address_on_stack != 0;
@@ -723,7 +727,8 @@ cris_target_asm_function_prologue (FILE *file, HOST_WIDE_INT size)
          cfa_offset += cris_initial_frame_pointer_offset ();
        }
 
-      cfa_label = dwarf2out_cfi_label ();
+      ASM_GENERATE_INTERNAL_LABEL (cfa_label, "LCFIT",
+                                  cfa_label_num++);
       dwarf2out_def_cfa (cfa_label, cfa_reg, cfa_offset);
 
       cfa_write_offset = - faked_args_size - 4;
@@ -921,6 +926,9 @@ cris_target_asm_function_prologue (FILE *file, HOST_WIDE_INT size)
             reg_names[PIC_OFFSET_TABLE_REGNUM],
             reg_names[PIC_OFFSET_TABLE_REGNUM]);
 
+  if (doing_dwarf)
+    ASM_OUTPUT_LABEL (file, cfa_label);
+
   if (TARGET_PDEBUG)
     fprintf (file,
             "; parm #%d @ %d; frame " HOST_WIDE_INT_PRINT_DEC