2015-07-08 Kito Cheng <kito.cheng@gmail.com>
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Jul 2015 03:51:21 +0000 (03:51 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 9 Jul 2015 03:51:21 +0000 (03:51 +0000)
* function.c (stack_protect_epilogue): Use if rather than switch for
check targetm.have_stack_protect_test.

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

gcc/ChangeLog
gcc/function.c

index c54e138..7747a59 100644 (file)
@@ -1,3 +1,8 @@
+2015-07-08  Kito Cheng  <kito.cheng@gmail.com>
+
+       * function.c (stack_protect_epilogue): Use if rather than switch for
+       check targetm.have_stack_protect_test.
+
 2015-07-08  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
 
        * defaults.h: Provide default for WORD_REGISTER_OPERATIONS.
index 972cdc8..b87aef6 100644 (file)
@@ -4874,26 +4874,18 @@ stack_protect_epilogue (void)
   tree guard_decl = targetm.stack_protect_guard ();
   rtx_code_label *label = gen_label_rtx ();
   rtx x, y, tmp;
+  rtx_insn *seq;
 
   x = expand_normal (crtl->stack_protect_guard);
   y = expand_normal (guard_decl);
 
   /* Allow the target to compare Y with X without leaking either into
      a register.  */
-  switch (targetm.have_stack_protect_test ())
-    {
-    case 1:
-      if (rtx_insn *seq = targetm.gen_stack_protect_test (x, y, label))
-       {
-         emit_insn (seq);
-         break;
-       }
-      /* FALLTHRU */
-
-    default:
-      emit_cmp_and_jump_insns (x, y, EQ, NULL_RTX, ptr_mode, 1, label);
-      break;
-    }
+  if (targetm.have_stack_protect_test ()
+      && ((seq = targetm.gen_stack_protect_test (x, y, label)) != NULL_RTX))
+    emit_insn (seq);
+  else
+    emit_cmp_and_jump_insns (x, y, EQ, NULL_RTX, ptr_mode, 1, label);
 
   /* The noreturn predictor has been moved to the tree level.  The rtl-level
      predictors estimate this branch about 20%, which isn't enough to get