OSDN Git Service

* config/s390/linux.h (ASM_OUTPUT_LABELREF): Remove.
authoruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 8 Jan 2002 13:11:23 +0000 (13:11 +0000)
committeruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 8 Jan 2002 13:11:23 +0000 (13:11 +0000)
* config/s390/s390.c (s390_emit_epilog): Add REG_FRAME_RELATED_EXPR
to insn adjusting stack/frame pointer.
* config/s390/s390.md (reload_la_64, reload_la_31): Do not
accept operands that cause the insn to be non-splittable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48643 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/s390/linux.h
gcc/config/s390/s390.c
gcc/config/s390/s390.md

index 2165b08..bf21f7b 100644 (file)
@@ -1,3 +1,11 @@
+2002-01-08  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * config/s390/linux.h (ASM_OUTPUT_LABELREF): Remove.
+       * config/s390/s390.c (s390_emit_epilog): Add REG_FRAME_RELATED_EXPR
+       to insn adjusting stack/frame pointer.
+       * config/s390/s390.md (reload_la_64, reload_la_31): Do not 
+       accept operands that cause the insn to be non-splittable.
+
 2002-01-08  Graham Stott  <grahams@redhat.com>
 
        * c-tree.h (C_TYPE_FIELDS_READONLY): Uppercase macro parameter.
index 9c01e58..55c602e 100644 (file)
@@ -82,9 +82,6 @@ Boston, MA 02111-1307, USA.  */
 /* Prefix for internally generated assembler labels.  */
 #define LPREFIX ".L"
 
-#define ASM_OUTPUT_LABELREF(FILE, NAME) \
-  fprintf (FILE, "%s", NAME);  
-
 
 /* This is how to output the definition of a user-level label named NAME,
    such as the label on a static function or variable NAME.  */
index cc409e3..83de4da 100644 (file)
@@ -3078,6 +3078,12 @@ s390_emit_epilogue ()
 
       insn = emit_insn (gen_add2_insn (frame_pointer, frame_off));
       RTX_FRAME_RELATED_P (insn) = 1;
+      REG_NOTES (insn) = 
+       gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR,
+                          gen_rtx_SET (VOIDmode, frame_pointer,
+                                  gen_rtx_PLUS (Pmode, frame_pointer,
+                                  GEN_INT (frame.frame_size - offset))),
+                          REG_NOTES (insn));
     }
 
   /* Restore call saved fprs.  */
index a056110..31822c9 100644 (file)
   [(set (match_operand:DI 0 "register_operand" "=d")
         (plus:DI (match_operand:DI 1 "general_operand" "g")
                  (match_operand:DI 2 "general_operand" "g")))]
-  "TARGET_64BIT && reload_in_progress"
+  "TARGET_64BIT && reload_in_progress
+   && !address_operand (gen_rtx_PLUS (DImode, operands[1], operands[2]), QImode)
+   && !rtx_equal_p (operands[0], operands[1])
+   && !rtx_equal_p (operands[0], operands[2])"
   "#")
 
 (define_split
     operands[1] = force_const_mem (DImode, operands[1]);
 }")
 
-
 (define_split
   [(set (match_operand:DI 0 "register_operand" "")
         (plus:DI (match_operand:DI 1 "register_operand" "")
   [(set (match_operand:SI 0 "register_operand" "=d")
         (plus:SI (match_operand:SI 1 "general_operand" "g")
                  (match_operand:SI 2 "general_operand" "g")))]
-  "reload_in_progress"
+  "reload_in_progress
+   && !address_operand (gen_rtx_PLUS (SImode, operands[1], operands[2]), QImode)
+   && !rtx_equal_p (operands[0], operands[1])
+   && !rtx_equal_p (operands[0], operands[2])"
   "#")
 
 (define_split
       && !legitimate_reload_constant_p (operands[2]))
     operands[2] = force_const_mem (SImode, operands[2]);
 }")
+
 
 ;
 ; addhi3 instruction pattern(s).