Author: Armin Rigo <ar...@tunes.org>
Branch: use-gcc
Changeset: r1895:a89f21f5670b
Date: 2015-07-08 15:09 +0200
http://bitbucket.org/pypy/stmgc/changeset/a89f21f5670b/

Log:    Count the extra segment prefix in the estimation of instruction
        sizes

diff --git a/gcc-seg-gs/gcc-5.1.0-patch.diff b/gcc-seg-gs/gcc-5.1.0-patch.diff
--- a/gcc-seg-gs/gcc-5.1.0-patch.diff
+++ b/gcc-seg-gs/gcc-5.1.0-patch.diff
@@ -120,14 +120,37 @@
        x = XEXP (x, 0);
        /* Avoid (%rip) for call operands.  */
        if (CONSTANT_ADDRESS_P (x) && code == 'P'
-@@ -51816,6 +51830,130 @@
+@@ -26015,6 +26029,7 @@
+   for (i = recog_data.n_operands - 1; i >= 0; --i)
+     if (MEM_P (recog_data.operand[i]))
+       {
++      int addr_space;
+         constrain_operands_cached (insn, reload_completed);
+         if (which_alternative != -1)
+         {
+@@ -26030,7 +26045,13 @@
+           if (*constraints == 'X')
+             continue;
+         }
+-      return memory_address_length (XEXP (recog_data.operand[i], 0), false);
++
++      /**** <AR> ****/
++      addr_space = MEM_ADDR_SPACE(recog_data.operand[i]);
++      /* account for one byte segment prefix for SEG_FS/SEG_GS addr spaces */
++      return (addr_space == ADDR_SPACE_GENERIC ? 0 : 1)
++      /**** </AR> ****/
++        + memory_address_length (XEXP (recog_data.operand[i], 0), false);
+       }
+   return 0;
+ }
+@@ -51816,6 +51837,130 @@
  }
  #endif
  
 +
 +/***** <AR> *****/
 +
-+/*** GS segment register addressing mode ***/
++/*** FS/GS segment register addressing mode ***/
 +
 +static machine_mode
 +ix86_addr_space_pointer_mode (addr_space_t as)
@@ -182,7 +205,7 @@
 +
 +/* The default, SEG_FS and SEG_GS address spaces are all "subsets" of
 +   each other. */
-+bool static 
++bool static
 +ix86_addr_space_subset_p (addr_space_t subset, addr_space_t superset)
 +{
 +  gcc_assert (subset == ADDR_SPACE_GENERIC ||
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to