OSDN Git Service

PR target/50603
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 7 Oct 2011 06:43:17 +0000 (06:43 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 7 Oct 2011 06:43:17 +0000 (06:43 +0000)
* config/i386/i386.c (ix86_fixup_binary_operands): Force src2 of
integer PLUS RTX to a register to improve address combine.

testsuite/ChangeLog:

PR target/50603
* gcc.target/i386/pr50603.c: New test.

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

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr50603.c [new file with mode: 0644]

index 2af56eb..21e7ee3 100644 (file)
@@ -1,3 +1,10 @@
+2011-10-07  Uros Bizjak  <ubizjak@gmail.com>
+           H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/50603
+       * config/i386/i386.c (ix86_fixup_binary_operands): Force src2 of
+       integer PLUS RTX to a register to improve address combine.
+
 2011-10-06  Richard Henderson  <rth@redhat.com>
 
        * combine-stack-adjust.c (maybe_move_args_size_note): Add after
@@ -31,9 +38,8 @@
 
 2011-10-06  Bernd Schmidt  <bernds@codesourcery.com>
 
-       * function.c (thread_prologue_and_epilogue_insns): Emit split
-       prologue on the orig_entry_edge. Don't account for it in
-       prologue_clobbered.
+       * function.c (thread_prologue_and_epilogue_insns): Emit split prologue
+       on the orig_entry_edge. Don't account for it in prologue_clobbered.
 
 2011-10-06  Jakub Jelinek  <jakub@redhat.com>
 
index 2fdf540..85dccf9 100644 (file)
@@ -15798,6 +15798,12 @@ ix86_fixup_binary_operands (enum rtx_code code, enum machine_mode mode,
   if (MEM_P (src1) && !rtx_equal_p (dst, src1))
     src1 = force_reg (mode, src1);
 
+  /* Improve address combine.  */
+  if (code == PLUS
+      && GET_MODE_CLASS (mode) == MODE_INT
+      && MEM_P (src2))
+    src2 = force_reg (mode, src2);
+
   operands[1] = src1;
   operands[2] = src2;
   return dst;
index 97dac17..23065b8 100644 (file)
@@ -1,3 +1,9 @@
+2011-10-07  Uros Bizjak  <ubizjak@gmail.com>
+           H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/50603
+       * gcc.target/i386/pr50603.c: New test.
+
 2011-10-06  Jason Merrill  <jason@redhat.com>
 
        PR c++/39164
 
 2011-10-04  Artem Shinkarov  <artyom.shinkaroff@gmail.com>
 
-       * gcc.c-torture/execute/vector-compare-1.c: Fix trailing white
-       spaces.
+       * gcc.c-torture/execute/vector-compare-1.c: Fix trailing white spaces.
        (main): Use __typeof to get result type of comparison.
 
 2011-10-04  Ira Rosen  <ira.rosen@linaro.org>
        PR testsuite/50485
        * gcc.target/i386/sse4_1-blendps.c: Include <stdlib.h>.
        (TEST): Initialize src3 with random floats.
-       * gcc.target/i386/sse4_1-blendps-2.c (sse4_1_test): Remove field i from
-       union src3.  Initialize src3 with random floats.
+       * gcc.target/i386/sse4_1-blendps-2.c (sse4_1_test): Remove field i
+       from union src3.  Initialize src3 with random floats.
 
 2011-09-27  Oleg Endo  <oleg.endo@t-online.de>
 
 2011-09-20  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR testsuite/50469
-       * gfortran.dg/storage_size_2.f08: Replace "must be be" with
-       "must be".
+       * gfortran.dg/storage_size_2.f08: Replace "must be be" with "must be".
 
 2011-09-20  Jason Merrill  <jason@redhat.com>
 
        gcc.dg/vect/vect-54.c, gcc.dg/vect/vect-46.c, gcc.dg/vect/vect-48.c,
        gcc.dg/vect/vect-96.c, gcc.dg/vect/vect-multitypes-3.c,
        gcc.dg/vect/vect-40.c: Likewise.
-       * gcc.dg/vect/vect-outer-5.c: Remove quad-vectors option as
-       redundant.
+       * gcc.dg/vect/vect-outer-5.c: Remove quad-vectors option as redundant.
        * gcc.dg/vect/vect-109.c, gcc.dg/vect/vect-peel-1.c,
        gcc.dg/vect/vect-peel-2.c, gcc.dg/vect/slp-25.c,
        gcc.dg/vect/vect-multitypes-1.c, gcc.dg/vect/slp-3.c,
 
 2011-09-05  Georg-Johann Lay  <avr@gjlay.de>
 
-       * gcc.dg/ipa/ipcp-3.c (mark_cell): Use mask 1 << 14 instead of 1
-       << 18 to avoid warning on int=16 platforms..
+       * gcc.dg/ipa/ipcp-3.c (mark_cell): Use mask 1 << 14 instead of 1 << 18
+       to avoid warning on int=16 platforms..
 
 2011-09-05  Jakub Jelinek  <jakub@redhat.com>
 
diff --git a/gcc/testsuite/gcc.target/i386/pr50603.c b/gcc/testsuite/gcc.target/i386/pr50603.c
new file mode 100644 (file)
index 0000000..101ef85
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+extern int *foo;
+
+int
+bar (int x)
+{
+  return foo[x];
+}
+/* { dg-final { scan-assembler-not "lea\[lq\]" } } */