Commit 0fad9ab9 by Nick Clifton Committed by Nick Clifton

frvbegin.c: Fix location of unwind-dw2-fde.h header file.

	* config/frv/frvbegin.c: Fix location of unwind-dw2-fde.h header
	file.
	* config/frv/frvend.c: Likewise.
	* config/frv/frv.c (frv_function_prologue): Move misplaced
	CALL_ARG_LOCATION notes back to their proper locations.

Co-Authored-By: Bernd Schmidt <bernds@codesourcery.com>

From-SVN: r179363
parent b24a9835
2011-09-29 Nick Clifton <nickc@redhat.com>
Bernd Schmidt <bernds@codesourcery.com>
* config/frv/frvbegin.c: Fix location of unwind-dw2-fde.h header
file.
* config/frv/frvend.c: Likewise.
* config/frv/frv.c (frv_function_prologue): Move misplaced
CALL_ARG_LOCATION notes back to their proper locations.
2011-09-29 Georg-Johann Lay <avr@gjlay.de> 2011-09-29 Georg-Johann Lay <avr@gjlay.de>
PR target/50566 PR target/50566
...@@ -1424,6 +1424,8 @@ frv_function_contains_far_jump (void) ...@@ -1424,6 +1424,8 @@ frv_function_contains_far_jump (void)
static void static void
frv_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED) frv_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
{ {
rtx insn, next, last_call;
/* If no frame was created, check whether the function uses a call /* If no frame was created, check whether the function uses a call
instruction to implement a far jump. If so, save the link in gr3 and instruction to implement a far jump. If so, save the link in gr3 and
replace all returns to LR with returns to GR3. GR3 is used because it replace all returns to LR with returns to GR3. GR3 is used because it
...@@ -1464,6 +1466,32 @@ frv_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED) ...@@ -1464,6 +1466,32 @@ frv_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
/* Allow the garbage collector to free the nops created by frv_reorg. */ /* Allow the garbage collector to free the nops created by frv_reorg. */
memset (frv_nops, 0, sizeof (frv_nops)); memset (frv_nops, 0, sizeof (frv_nops));
/* Locate CALL_ARG_LOCATION notes that have been misplaced
and move them back to where they should be located. */
last_call = NULL_RTX;
for (insn = get_insns (); insn; insn = next)
{
next = NEXT_INSN (insn);
if (CALL_P (insn)
|| (INSN_P (insn) && GET_CODE (PATTERN (insn)) == SEQUENCE
&& CALL_P (XVECEXP (PATTERN (insn), 0, 0))))
last_call = insn;
if (!NOTE_P (insn) || NOTE_KIND (insn) != NOTE_INSN_CALL_ARG_LOCATION)
continue;
if (NEXT_INSN (last_call) == insn)
continue;
NEXT_INSN (PREV_INSN (insn)) = NEXT_INSN (insn);
PREV_INSN (NEXT_INSN (insn)) = PREV_INSN (insn);
PREV_INSN (insn) = last_call;
NEXT_INSN (insn) = NEXT_INSN (last_call);
PREV_INSN (NEXT_INSN (insn)) = insn;
NEXT_INSN (PREV_INSN (insn)) = insn;
last_call = insn;
}
} }
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include "defaults.h" #include "defaults.h"
#include <stddef.h> #include <stddef.h>
#include "unwind-dw2-fde.h" #include "../libgcc/unwind-dw2-fde.h"
#include "gbl-ctors.h" #include "gbl-ctors.h"
/* Declare a pointer to void function type. */ /* Declare a pointer to void function type. */
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#include "defaults.h" #include "defaults.h"
#include <stddef.h> #include <stddef.h>
#include "unwind-dw2-fde.h" #include "../libgcc/unwind-dw2-fde.h"
#ifdef __FRV_UNDERSCORE__ #ifdef __FRV_UNDERSCORE__
#define UNDERSCORE "_" #define UNDERSCORE "_"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment