mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-28 16:01:00 +08:00
Revert revision 155944 due to the broken testcase.
From-SVN: r155946
This commit is contained in:
parent
1018d41ac2
commit
5a869057b4
@ -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.
|
||||
|
@ -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. */
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user