diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/combine.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/pr42691.c | 40 |
4 files changed, 2 insertions, 57 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f1f6e5c..80151a7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,9 +1,3 @@ -2010-01-15 Jing Yu <jingyu@google.com> - - PR rtl-optimization/42691 - * combine.c (try_combine): Set changed_i3_dest to 1 when I2 and I3 set - a pseudo to a constant and are merged, and adjust comments. - 2010-01-15 Eric Botcazou <ebotcazou@adacore.com> * config/i386/sse.md (avx_vperm2f128<mode>3): Fix typo. diff --git a/gcc/combine.c b/gcc/combine.c index e5d4c5a..5ae557c 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -2663,16 +2663,10 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p) i2dest = SET_DEST (temp); i2dest_killed = dead_or_set_p (i2, i2dest); - /* Replace the source in I2 with the new constant and make the - resulting insn the new pattern for I3. Then skip to where we - validate the pattern. Everything was set up above. */ SUBST (SET_SRC (temp), immed_double_const (olo, ohi, GET_MODE (SET_DEST (temp)))); newpat = PATTERN (i2); - - /* The dest of I3 has been replaced with the dest of I2. */ - changed_i3_dest = 1; goto validate_replacement; } } @@ -3044,6 +3038,8 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p) } } + /* We come here when we are replacing a destination in I2 with the + destination of I3. */ validate_replacement: /* Note which hard regs this insn has as inputs. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 89469ad..990ea36 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,8 +1,3 @@ -2010-01-15 Jing Yu <jingyu@google.com> - - PR rtl-optimization/42691 - * gcc.c-torture/execute/pr42691.c: New. - 2010-01-15 Richard Guenther <rguenther@suse.de> PR middle-end/42739 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr42691.c b/gcc/testsuite/gcc.c-torture/execute/pr42691.c deleted file mode 100644 index 321ac1b..0000000 --- a/gcc/testsuite/gcc.c-torture/execute/pr42691.c +++ /dev/null @@ -1,40 +0,0 @@ -extern void abort (void); - -union _D_rep -{ - unsigned short rep[4]; - double val; -}; - -int add(double* key, double* table) -{ - unsigned i = 0; - double* deletedEntry = 0; - while (1) { - double* entry = table + i; - - if (*entry == *key) - break; - - union _D_rep _D_inf = {{ 0, 0, 0, 0x7ff0 }}; - if (*entry != _D_inf.val) - abort (); - - union _D_rep _D_inf2 = {{ 0, 0, 0, 0x7ff0 }}; - if (!_D_inf2.val) - deletedEntry = entry; - - i++; - } - *deletedEntry = 0.0; - return 0; -} - -int main () -{ - union _D_rep infinit = {{ 0, 0, 0, 0x7ff0 }}; - double table[2] = { infinit.val, 23 }; - double key = 23; - int ret = add (&key, table); - return ret; -} |