Module Name:    src
Committed By:   joerg
Date:           Thu Mar 20 16:53:55 UTC 2014

Modified Files:
        src/external/gpl3/gcc/dist/gcc/config/vax: vax.c vax.h vax.md

Log Message:
Annotation for the Processor Status Word. Sensible DWARF frame layout.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c
cvs rdiff -u -r1.1.1.2 -r1.2 src/external/gpl3/gcc/dist/gcc/config/vax/vax.h
cvs rdiff -u -r1.6 -r1.7 src/external/gpl3/gcc/dist/gcc/config/vax/vax.md

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/gpl3/gcc/dist/gcc/config/vax/vax.c
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.4 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.5
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.4	Sat Mar  1 09:04:13 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.c	Thu Mar 20 16:53:55 2014
@@ -162,9 +162,13 @@ vax_expand_prologue (void)
   HOST_WIDE_INT size;
   rtx insn;
 
+  offset = 20;
   for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
     if (df_regs_ever_live_p (regno) && !call_used_regs[regno])
-      mask |= 1 << regno;
+      {
+        mask |= 1 << regno;
+        offset += 4;
+      }
 
   insn = emit_insn (gen_procedure_entry_mask (GEN_INT (mask)));
   RTX_FRAME_RELATED_P (insn) = 1;
@@ -186,11 +190,17 @@ vax_expand_prologue (void)
 
      The rest of the prologue will adjust the SP for the local frame.  */
 
-  vax_add_reg_cfa_offset (insn, 4, arg_pointer_rtx);
-  vax_add_reg_cfa_offset (insn, 8, frame_pointer_rtx);
-  vax_add_reg_cfa_offset (insn, 12, pc_rtx);
+  add_reg_note (insn, REG_CFA_DEF_CFA,
+                plus_constant (Pmode, frame_pointer_rtx, offset));
+  insn = emit_insn (gen_blockage ());
+  RTX_FRAME_RELATED_P (insn) = 1;
 
-  offset = 16;
+  vax_add_reg_cfa_offset (insn, 4, gen_rtx_REG (Pmode, PSW_REGNUM));
+  vax_add_reg_cfa_offset (insn, 8, arg_pointer_rtx);
+  vax_add_reg_cfa_offset (insn, 12, frame_pointer_rtx);
+  vax_add_reg_cfa_offset (insn, 16, pc_rtx);
+
+  offset = 20;
   for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
     if (mask & (1 << regno))
       {
@@ -198,12 +208,6 @@ vax_expand_prologue (void)
 	offset += 4;
       }
 
-  /* Because add_reg_note pushes the notes, adding this last means that
-     it will be processed first.  This is required to allow the other
-     notes be interpreted properly.  */
-  add_reg_note (insn, REG_CFA_DEF_CFA,
-		plus_constant (Pmode, frame_pointer_rtx, offset));
-
   /* Allocate the local stack frame.  */
   size = get_frame_size ();
   size -= STARTING_FRAME_OFFSET;

Index: src/external/gpl3/gcc/dist/gcc/config/vax/vax.h
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.h:1.1.1.2 src/external/gpl3/gcc/dist/gcc/config/vax/vax.h:1.2
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.h:1.1.1.2	Sat Mar  1 08:43:34 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.h	Thu Mar 20 16:53:55 2014
@@ -156,6 +156,9 @@ along with GCC; see the file COPYING3.  
 /* Specify the registers used for certain standard purposes.
    The values of these macros are register numbers.  */
 
+/* VAX PSW for DWARF-2 */
+#define PSW_REGNUM VAX_PSW_REGNUM
+
 /* VAX pc is overloaded on a register.  */
 #define PC_REGNUM VAX_PC_REGNUM
 

Index: src/external/gpl3/gcc/dist/gcc/config/vax/vax.md
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.6 src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.7
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.6	Sat Mar  1 09:44:50 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.md	Thu Mar 20 16:53:55 2014
@@ -40,6 +40,7 @@
    (VAX_FP_REGNUM 13)	    ; Register 13 contains the frame pointer
    (VAX_SP_REGNUM 14)	    ; Register 14 contains the stack pointer
    (VAX_PC_REGNUM 15)	    ; Register 15 contains the program counter
+   (VAX_PSW_REGNUM 16)	    ; Program Status Word
   ]
 )
 

Reply via email to