]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR debug/55794 (FAIL: g++.dg/debug/dwarf2/non-virtual-thunk.C -std=gnu++98 and...
authorJohn David Anglin <danglin@gcc.gnu.org>
Sun, 6 Apr 2014 15:17:41 +0000 (15:17 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Sun, 6 Apr 2014 15:17:41 +0000 (15:17 +0000)
PR debug/55794
* config/pa/pa.c (pa_output_function_epilogue): Skip address and code
size accounting for thunks.
(pa_asm_output_mi_thunk): Use final_start_function() and
final_end_function() to output function start and end directives.

From-SVN: r209163

gcc/ChangeLog
gcc/config/pa/pa.c

index da2eff779380d6a8ebd5d02fa0071d14f0c5509a..80a39f85ccc5323ea6f50a9b48d53ccdd3ad2f40 100644 (file)
@@ -1,3 +1,11 @@
+2014-04-06  John David Anglin  <danglin@gcc.gnu.org>
+
+       PR debug/55794
+       * config/pa/pa.c (pa_output_function_epilogue): Skip address and code
+       size accounting for thunks.
+       (pa_asm_output_mi_thunk): Use final_start_function() and
+       final_end_function() to output function start and end directives.
+
 2014-04-05  Pitchumani Sivanupandi  <Pitchumani.S@atmel.com>
 
        * config/avr/avr-arch.h (avr_mcu_t): Add dev_attribute field to have device
index fb698d20d803add1f207b0dd87c4c76b0dd63e68..871e4e5c6e8e7f5a1749bbdafb9c5cbe23915258 100644 (file)
@@ -4187,13 +4187,17 @@ pa_output_function_epilogue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
 
   if (TARGET_SOM && TARGET_GAS)
     {
-      /* We done with this subspace except possibly for some additional
+      /* We are done with this subspace except possibly for some additional
         debug information.  Forget that we are in this subspace to ensure
         that the next function is output in its own subspace.  */
       in_section = NULL;
       cfun->machine->in_nsubspa = 2;
     }
 
+  /* Thunks do their own accounting.  */
+  if (cfun->is_thunk)
+    return;
+
   if (INSN_ADDRESSES_SET_P ())
     {
       insn = get_last_nonnote_insn ();
@@ -8259,8 +8263,7 @@ pa_asm_output_mi_thunk (FILE *file, tree thunk_fndecl, HOST_WIDE_INT delta,
   xoperands[1] = XEXP (DECL_RTL (thunk_fndecl), 0);
   xoperands[2] = GEN_INT (delta);
 
-  ASM_OUTPUT_LABEL (file, XSTR (xoperands[1], 0));
-  fprintf (file, "\t.PROC\n\t.CALLINFO FRAME=0,NO_CALLS\n\t.ENTRY\n");
+  final_start_function (emit_barrier (), file, 1);
 
   /* Output the thunk.  We know that the function is in the same
      translation unit (i.e., the same space) as the thunk, and that
@@ -8466,16 +8469,7 @@ pa_asm_output_mi_thunk (FILE *file, tree thunk_fndecl, HOST_WIDE_INT delta,
        }
     }
 
-  fprintf (file, "\t.EXIT\n\t.PROCEND\n");
-
-  if (TARGET_SOM && TARGET_GAS)
-    {
-      /* We done with this subspace except possibly for some additional
-        debug information.  Forget that we are in this subspace to ensure
-        that the next function is output in its own subspace.  */
-      in_section = NULL;
-      cfun->machine->in_nsubspa = 2;
-    }
+  final_end_function ();
 
   if (TARGET_SOM && flag_pic && TREE_PUBLIC (function))
     {