i386.c (ix86_decompose_address): Do not check for register RTX when looking at index_...
authorUros Bizjak <uros@gcc.gnu.org>
Tue, 25 Jul 2017 14:48:55 +0000 (16:48 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Tue, 25 Jul 2017 14:48:55 +0000 (16:48 +0200)
* config/i386/i386.c (ix86_decompose_address): Do not check for
register RTX when looking at index_reg or base_reg.
* config/i386/i386.h (INCOMING_RETURN_ADDR_RTX): Use stack_pointer_rtx.

From-SVN: r250526

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.h

index cb7b47d9419a263e9000df400b34da446ae2ca23..aa3cb92b87ebc35a3ca6c78329c40cd405fc79ed 100644 (file)
@@ -1,3 +1,9 @@
+2017-07-25  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.c (ix86_decompose_address): Do not check for
+       register RTX when looking at index_reg or base_reg.
+       * config/i386/i386.h (INCOMING_RETURN_ADDR_RTX): Use stack_pointer_rtx.
+
 2017-07-25  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gimple.c (gimple_assign_set_rhs_with_ops): Do not ask gsi_replace
 2017-07-25  Martin Liska  <mliska@suse.cz>
 
        PR ipa/81520
-       * ipa-visibility.c (function_and_variable_visibility): Make the redirection
-       just on target that do supporting aliasing.  Fix GNU coding style.
+       * ipa-visibility.c (function_and_variable_visibility): Make the
+       redirection just on target that supports aliasing.
+       Fix GNU coding style.
 
 2017-07-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
 
index b7ef5544bfd17b3c42a82ab93f22fa33ea2bf65d..084b4a6a0dbff37b2b24d4c90bdfe51e773fd688 100644 (file)
@@ -13594,8 +13594,7 @@ ix86_minimum_incoming_stack_boundary (bool sibcall)
 {
   unsigned int incoming_stack_boundary;
 
-  /* Stack of interrupt handler is aligned to 128 bits in 64bit
-     mode.  */
+  /* Stack of interrupt handler is aligned to 128 bits in 64bit mode.  */
   if (cfun->machine->func_type != TYPE_NORMAL)
     incoming_stack_boundary = TARGET_64BIT ? 128 : MIN_STACK_BOUNDARY;
   /* Prefer the one specified at command line. */
@@ -16187,9 +16186,9 @@ ix86_decompose_address (rtx addr, struct ix86_address *out)
 
   /* Allow arg pointer and stack pointer as index if there is not scaling.  */
   if (base_reg && index_reg && scale == 1
-      && (index_reg == arg_pointer_rtx
-         || index_reg == frame_pointer_rtx
-         || (REG_P (index_reg) && REGNO (index_reg) == STACK_POINTER_REGNUM)))
+      && (REGNO (index_reg) == ARG_POINTER_REGNUM
+         || REGNO (index_reg) == FRAME_POINTER_REGNUM
+         || REGNO (index_reg) == SP_REG))
     {
       std::swap (base, index);
       std::swap (base_reg, index_reg);
@@ -16197,14 +16196,11 @@ ix86_decompose_address (rtx addr, struct ix86_address *out)
 
   /* Special case: %ebp cannot be encoded as a base without a displacement.
      Similarly %r13.  */
-  if (!disp
-      && base_reg
-      && (base_reg == hard_frame_pointer_rtx
-         || base_reg == frame_pointer_rtx
-         || base_reg == arg_pointer_rtx
-         || (REG_P (base_reg)
-             && (REGNO (base_reg) == HARD_FRAME_POINTER_REGNUM
-                 || REGNO (base_reg) == R13_REG))))
+  if (!disp && base_reg
+      && (REGNO (base_reg) == ARG_POINTER_REGNUM
+         || REGNO (base_reg) == FRAME_POINTER_REGNUM
+         || REGNO (base_reg) == BP_REG
+         || REGNO (base_reg) == R13_REG))
     disp = const0_rtx;
 
   /* Special case: on K6, [%esi] makes the instruction vector decoded.
@@ -16213,7 +16209,7 @@ ix86_decompose_address (rtx addr, struct ix86_address *out)
      to test cfun for being non-NULL. */
   if (TARGET_K6 && cfun && optimize_function_for_speed_p (cfun)
       && base_reg && !index_reg && !disp
-      && REG_P (base_reg) && REGNO (base_reg) == SI_REG)
+      && REGNO (base_reg) == SI_REG)
     disp = const0_rtx;
 
   /* Special case: encode reg+reg instead of reg*2.  */
index a2ae9b4e24295dbdc2e7e856a2cdc2f7ef09e4a3..682745ae06babc901185aa5a2b47a2b192f7e81e 100644 (file)
@@ -2165,7 +2165,7 @@ extern int const svr4_dbx_register_map[FIRST_PSEUDO_REGISTER];
 
 /* Before the prologue, RA is at 0(%esp).  */
 #define INCOMING_RETURN_ADDR_RTX \
-  gen_rtx_MEM (Pmode, gen_rtx_REG (Pmode, STACK_POINTER_REGNUM))
+  gen_rtx_MEM (Pmode, stack_pointer_rtx)
 
 /* After the prologue, RA is at -4(AP) in the current frame.  */
 #define RETURN_ADDR_RTX(COUNT, FRAME)                                  \