diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2005-02-24 22:17:42 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@gcc.gnu.org> | 2005-02-24 22:17:42 +0000 |
commit | b2142ad842e21775a20b1381dc8e406058473c78 (patch) | |
tree | a686db092c3578c7da7dd8b6de771a3628005c94 /gcc | |
parent | 589b3fda5756e4493795a176bdb1b47fefe268ec (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/cris/cris.c | 12 |
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 |