summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrbr <chrbr@138bc75d-0d04-0410-961f-82ee72b054a4>2015-04-14 12:14:04 +0000
committerchrbr <chrbr@138bc75d-0d04-0410-961f-82ee72b054a4>2015-04-14 12:14:04 +0000
commit2d4340b00ca8c9a91e2ad7417dc264501a02a458 (patch)
tree5b555c5627dc6d0c7b289f3d35d2db0bd9f48c15
parent31bb40e95c77fc406d5f8c267a35f605f1766742 (diff)
downloadgcc-2d4340b00ca8c9a91e2ad7417dc264501a02a458.tar.gz
15-04-14 Christian Bruel <christian.bruel@st.com>
* execute_dwarf2_frame (dw_frame_pointer_regnum): Reinitialize for each function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222084 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/dwarf2cfi.c4
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f44fd64533a..71d31b9b729 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2015-04-14 Christian Bruel <christian.bruel@st.com>
+
+ * execute_dwarf2_frame (dw_frame_pointer_regnum): Reinitialize for each
+ function.
+
2015-04-14 Marc Glisse <marc.glisse@inria.fr>
PR tree-optimization/63387
diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c
index 27474cba07d..ec2acc961d7 100644
--- a/gcc/dwarf2cfi.c
+++ b/gcc/dwarf2cfi.c
@@ -2941,7 +2941,6 @@ create_cie_data (void)
dw_trace_info cie_trace;
dw_stack_pointer_regnum = DWARF_FRAME_REGNUM (STACK_POINTER_REGNUM);
- dw_frame_pointer_regnum = DWARF_FRAME_REGNUM (HARD_FRAME_POINTER_REGNUM);
memset (&cie_trace, 0, sizeof (cie_trace));
cur_trace = &cie_trace;
@@ -2994,6 +2993,9 @@ create_cie_data (void)
static unsigned int
execute_dwarf2_frame (void)
{
+ /* Different HARD_FRAME_POINTER_REGNUM might coexist in the same file. */
+ dw_frame_pointer_regnum = DWARF_FRAME_REGNUM (HARD_FRAME_POINTER_REGNUM);
+
/* The first time we're called, compute the incoming frame state. */
if (cie_cfi_vec == NULL)
create_cie_data ();