mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-23 04:10:26 +08:00
re PR tree-optimization/82387 (wrong code at -O1 and -Os on x86_64-linux-gnu in 64-bit mode)
PR tree-optimization/82387 PR tree-optimization/82388 PR tree-optimization/82389 * tree-ssa-dse.c (dse_classify_store): Test byte_tracking_enabled instead of live_bytes non-NULL. * gcc.c-torture/compile/pr82389.c: New test. * gcc.c-torture/execute/pr82387.c: New test. * gcc.c-torture/execute/pr82388.c: New test. From-SVN: r253356
This commit is contained in:
parent
804b7cc438
commit
f240a23075
@ -1,3 +1,11 @@
|
||||
2017-10-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/82387
|
||||
PR tree-optimization/82388
|
||||
PR tree-optimization/82389
|
||||
* tree-ssa-dse.c (dse_classify_store): Test byte_tracking_enabled
|
||||
instead of live_bytes non-NULL.
|
||||
|
||||
2017-10-02 Georg-Johann Lay <avr@gjlay.de>
|
||||
|
||||
PR target/41076
|
||||
|
@ -1,3 +1,12 @@
|
||||
2017-10-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/82387
|
||||
PR tree-optimization/82388
|
||||
PR tree-optimization/82389
|
||||
* gcc.c-torture/compile/pr82389.c: New test.
|
||||
* gcc.c-torture/execute/pr82387.c: New test.
|
||||
* gcc.c-torture/execute/pr82388.c: New test.
|
||||
|
||||
2017-10-02 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/79180
|
||||
|
13
gcc/testsuite/gcc.c-torture/compile/pr82389.c
Normal file
13
gcc/testsuite/gcc.c-torture/compile/pr82389.c
Normal file
@ -0,0 +1,13 @@
|
||||
/* PR tree-optimization/82389 */
|
||||
|
||||
void bar (short);
|
||||
|
||||
void
|
||||
foo (void)
|
||||
{
|
||||
short a[5];
|
||||
int b;
|
||||
for (b = -1290603998; b < 5; b++)
|
||||
a[b] = 0;
|
||||
bar (a[3]);
|
||||
}
|
27
gcc/testsuite/gcc.c-torture/execute/pr82387.c
Normal file
27
gcc/testsuite/gcc.c-torture/execute/pr82387.c
Normal file
@ -0,0 +1,27 @@
|
||||
/* PR tree-optimization/82387 */
|
||||
|
||||
struct A { int b; };
|
||||
int f = 1;
|
||||
|
||||
struct A
|
||||
foo (void)
|
||||
{
|
||||
struct A h[] = {
|
||||
{1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1},
|
||||
{1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1},
|
||||
{1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1},
|
||||
{1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1},
|
||||
{1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1},
|
||||
{1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1},
|
||||
{1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1},
|
||||
};
|
||||
return h[24];
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
struct A i = foo (), j = i;
|
||||
j.b && (f = 0);
|
||||
return f;
|
||||
}
|
17
gcc/testsuite/gcc.c-torture/execute/pr82388.c
Normal file
17
gcc/testsuite/gcc.c-torture/execute/pr82388.c
Normal file
@ -0,0 +1,17 @@
|
||||
/* PR tree-optimization/82388 */
|
||||
|
||||
struct A { int b; int c; int d; } e;
|
||||
|
||||
struct A
|
||||
foo (void)
|
||||
{
|
||||
struct A h[30] = {{0,0,0}};
|
||||
return h[29];
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
e = foo ();
|
||||
return e.b;
|
||||
}
|
@ -577,10 +577,10 @@ dse_classify_store (ao_ref *ref, gimple *stmt, gimple **use_stmt,
|
||||
/* If the statement is a use the store is not dead. */
|
||||
else if (ref_maybe_used_by_stmt_p (use_stmt, ref))
|
||||
{
|
||||
/* Handle common cases where we can easily build a ao_ref
|
||||
/* Handle common cases where we can easily build an ao_ref
|
||||
structure for USE_STMT and in doing so we find that the
|
||||
references hit non-live bytes and thus can be ignored. */
|
||||
if (live_bytes && (!gimple_vdef (use_stmt) || !temp))
|
||||
if (byte_tracking_enabled && (!gimple_vdef (use_stmt) || !temp))
|
||||
{
|
||||
if (is_gimple_assign (use_stmt))
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user