diff options
author | Jan Hubicka <jh@suse.cz> | 2005-08-02 02:12:50 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2005-08-02 00:12:50 +0000 |
commit | 5e5a504e300285125a09fb0ea3031187f98f4e68 (patch) | |
tree | 4f22c96f262454dcd5fa7e0ea8d297439b65cbfe /gcc | |
parent | 4dbdb061864825507e4d964c8904c82970fcb17d (diff) | |
download | gcc-5e5a504e300285125a09fb0ea3031187f98f4e68.zip gcc-5e5a504e300285125a09fb0ea3031187f98f4e68.tar.gz gcc-5e5a504e300285125a09fb0ea3031187f98f4e68.tar.bz2 |
tree-ssa-dom.c (thread_across_edge): Remove updating here.
* tree-ssa-dom.c (thread_across_edge): Remove updating here.
(thread_block): Add it here.
* update-threading.c: New test.
From-SVN: r102648
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/update-threading.c | 24 | ||||
-rw-r--r-- | gcc/tree-ssa-dom.c | 2 | ||||
-rw-r--r-- | gcc/tree-ssa-threadupdate.c | 2 |
5 files changed, 35 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bc765ff..3be4e21 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-08-02 Jan Hubicka <jh@suse.cz> + + * tree-ssa-dom.c (thread_across_edge): Remove updating here. + * tree-ssa-threadupdate.c (thread_block): Add it here. + 2005-08-01 James E Wilson <wilson@specifix.com> * config/mips/mips.c (mips_encode_section_info, mips_attribute_table, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5ca88a2..2efa499 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-08-02 Jan Hubicka <jh@suse.cz> + + * update-threading.c: New test. + 2005-08-01 Andrew Pinski <pinskia@physics.uc.edu> * gcc.c-torture/compile/20050801-1.c: New test. diff --git a/gcc/testsuite/gcc.dg/tree-ssa/update-threading.c b/gcc/testsuite/gcc.dg/tree-ssa/update-threading.c new file mode 100644 index 0000000..d9fdac8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/update-threading.c @@ -0,0 +1,24 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-optimized" } */ + +typedef struct { unsigned short a; } A; + +extern void abort (void); +extern void exit (int); + +void foo (unsigned int x) +{ + if (x != 0x800 && x != 0x810) + abort (); +} + +int +main (int argc, char **argv) +{ + int i; + for (i = 0; i < 2; ++i) + foo (((A) { ((!(i >> 4) ? 8 : 64 + (i >> 4)) << 8) + (i << 4) } ).a); + exit (0); +} +/* { dg-final { scan-tree-dump-times ".optimized" 0 "Invalid sum"} } */ +/* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index 1a59e9e..6d99e54 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -848,8 +848,6 @@ thread_across_edge (struct dom_walk_data *walk_data, edge e) { struct edge_info *edge_info; - update_bb_profile_for_threading (e->dest, EDGE_FREQUENCY (e), - e->count, taken_edge); if (e->aux) edge_info = e->aux; else diff --git a/gcc/tree-ssa-threadupdate.c b/gcc/tree-ssa-threadupdate.c index 6181b27..ab748ad 100644 --- a/gcc/tree-ssa-threadupdate.c +++ b/gcc/tree-ssa-threadupdate.c @@ -724,6 +724,8 @@ thread_block (basic_block bb) else { edge e2 = e->aux; + update_bb_profile_for_threading (e->dest, EDGE_FREQUENCY (e), + e->count, e->aux); /* If we thread to a loop exit edge, then we will need to rediscover the loop exit edges. While it may seem that |