From: ktietz Date: Tue, 28 Jun 2011 10:36:48 +0000 (+0000) Subject: 2011-06-28 Kai Tietz X-Git-Tag: upstream/4.9.2~19708 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0ec31268b52b7d12b20a4e72ecf60ef4c76b5258;p=platform%2Fupstream%2Flinaro-gcc.git 2011-06-28 Kai Tietz * tree-ssa-math-opts.c (execute_optimize_bswap): Search within BB from last to first. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175580 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2e744e8..f655761 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-06-28 Kai Tietz + + * tree-ssa-math-opts.c (execute_optimize_bswap): Search + within BB from last to first. + 2011-06-28 Joseph Myers * genattr-common.c: New. Based on genattr.c. diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index 4da4018..49ec360 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -1821,7 +1821,11 @@ execute_optimize_bswap (void) { gimple_stmt_iterator gsi; - for (gsi = gsi_after_labels (bb); !gsi_end_p (gsi); gsi_next (&gsi)) + /* We do a reverse scan for bswap patterns to make sure we get the + widest match. As bswap pattern matching doesn't handle + previously inserted smaller bswap replacements as sub- + patterns, the wider variant wouldn't be detected. */ + for (gsi = gsi_last_bb (bb); !gsi_end_p (gsi); gsi_prev (&gsi)) { gimple stmt = gsi_stmt (gsi); tree bswap_src, bswap_type;