aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2005-02-24 22:17:42 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2005-02-24 22:17:42 +0000
commitb2142ad842e21775a20b1381dc8e406058473c78 (patch)
treea686db092c3578c7da7dd8b6de771a3628005c94 /gcc
parent589b3fda5756e4493795a176bdb1b47fefe268ec (diff)
downloadgcc-b2142ad842e21775a20b1381dc8e406058473c78.zip
gcc-b2142ad842e21775a20b1381dc8e406058473c78.tar.gz
gcc-b2142ad842e21775a20b1381dc8e406058473c78.tar.bz2
re PR target/14619 (Incorrect Dwarf 2 information in function prologue)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/cris/cris.c12
2 files changed, 16 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b858476..59b1dce 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c
index a01fe1e..3599e2d 100644
--- a/gcc/config/cris/cris.c
+++ b/gcc/config/cris/cris.c
@@ -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