15-04-14 Christian Bruel <christian.bruel@st.com>
authorChristian Bruel <christian.bruel@st.com>
Tue, 14 Apr 2015 12:14:04 +0000 (14:14 +0200)
committerChristian Bruel <chrbr@gcc.gnu.org>
Tue, 14 Apr 2015 12:14:04 +0000 (14:14 +0200)
* execute_dwarf2_frame (dw_frame_pointer_regnum): Reinitialize for each
function.

From-SVN: r222084

gcc/ChangeLog
gcc/dwarf2cfi.c

index f44fd64..71d31b9 100644 (file)
@@ -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
index 27474cb..ec2acc9 100644 (file)
@@ -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 ();