]> gcc.gnu.org Git - gcc.git/commitdiff
s390.c (s390_expand_tbegin): Remove jump over CC extraction in good case.
authorAndreas Krebbel <Andreas.Krebbel@de.ibm.com>
Fri, 10 Jan 2014 14:59:41 +0000 (14:59 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Fri, 10 Jan 2014 14:59:41 +0000 (14:59 +0000)
2014-01-10  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

* config/s390/s390.c (s390_expand_tbegin): Remove jump over CC
extraction in good case.

From-SVN: r206527

gcc/ChangeLog
gcc/config/s390/s390.c

index 7b5229136a734df00fd90f7c4092da16d7d497ae..3bf48320499c71bec05a2e308a0afdd399725d35 100644 (file)
@@ -1,3 +1,8 @@
+2014-01-10  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+       * config/s390/s390.c (s390_expand_tbegin): Remove jump over CC
+       extraction in good case.
+
 2014-01-10  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/59374
index 3d480fd631b2691f18ca462e1f8936e3ba3c48d7..eeccaedfb08cc27ab60156895bc375a70fd7e61e 100644 (file)
@@ -10005,16 +10005,9 @@ s390_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p,
 void
 s390_expand_tbegin (rtx dest, rtx tdb, rtx retry, bool clobber_fprs_p)
 {
-  const int CC0 = 1 << 3;
-  const int CC1 = 1 << 2;
-  const int CC3 = 1 << 0;
-  rtx abort_label = gen_label_rtx ();
-  rtx leave_label = gen_label_rtx ();
   rtx retry_plus_two = gen_reg_rtx (SImode);
   rtx retry_reg = gen_reg_rtx (SImode);
   rtx retry_label = NULL_RTX;
-  rtx jump;
-  int very_unlikely = REG_BR_PROB_BASE / 100 - 1;
 
   if (retry != NULL_RTX)
     {
@@ -10031,38 +10024,25 @@ s390_expand_tbegin (rtx dest, rtx tdb, rtx retry, bool clobber_fprs_p)
     emit_insn (gen_tbegin_nofloat_1 (gen_rtx_CONST_INT (VOIDmode, TBEGIN_MASK),
                                     tdb));
 
-  jump = s390_emit_jump (abort_label,
-                        gen_rtx_NE (VOIDmode,
-                                    gen_rtx_REG (CCRAWmode, CC_REGNUM),
-                                    gen_rtx_CONST_INT (VOIDmode, CC0)));
-
-  JUMP_LABEL (jump) = abort_label;
-  LABEL_NUSES (abort_label) = 1;
-  add_int_reg_note (jump, REG_BR_PROB, very_unlikely);
-
-  /* Initialize CC return value.  */
-  emit_move_insn (dest, const0_rtx);
-
-  s390_emit_jump (leave_label, NULL_RTX);
-  LABEL_NUSES (leave_label) = 1;
-  emit_barrier ();
-
-  /* Abort handler code.  */
-
-  emit_label (abort_label);
   emit_move_insn (dest, gen_rtx_UNSPEC (SImode,
                                        gen_rtvec (1, gen_rtx_REG (CCRAWmode,
                                                                   CC_REGNUM)),
                                        UNSPEC_CC_TO_INT));
   if (retry != NULL_RTX)
     {
+      const int CC0 = 1 << 3;
+      const int CC1 = 1 << 2;
+      const int CC3 = 1 << 0;
+      rtx jump;
       rtx count = gen_reg_rtx (SImode);
+      rtx leave_label = gen_label_rtx ();
+
+      /* Exit for success and permanent failures.  */
       jump = s390_emit_jump (leave_label,
                             gen_rtx_EQ (VOIDmode,
                               gen_rtx_REG (CCRAWmode, CC_REGNUM),
-                              gen_rtx_CONST_INT (VOIDmode, CC1 | CC3)));
-      LABEL_NUSES (leave_label) = 2;
-      add_int_reg_note (jump, REG_BR_PROB, very_unlikely);
+                              gen_rtx_CONST_INT (VOIDmode, CC0 | CC1 | CC3)));
+      LABEL_NUSES (leave_label) = 1;
 
       /* CC2 - transient failure. Perform retry with ppa.  */
       emit_move_insn (count, retry_plus_two);
@@ -10073,9 +10053,8 @@ s390_expand_tbegin (rtx dest, rtx tdb, rtx retry, bool clobber_fprs_p)
                                              retry_reg));
       JUMP_LABEL (jump) = retry_label;
       LABEL_NUSES (retry_label) = 1;
+      emit_label (leave_label);
     }
-
-  emit_label (leave_label);
 }
 
 /* Builtins.  */
This page took 0.071361 seconds and 5 git commands to generate.