diff options
author | jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-01 00:13:07 +0000 |
---|---|---|
committer | jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-01 00:13:07 +0000 |
commit | 673748080b9aa1e0367e472e95100a1ac6f47284 (patch) | |
tree | 3fd19bde977d95685385a4d951bcbc502b5b3b5c | |
parent | 65d26e11e7f386872407f865c77c442ca645040c (diff) |
Backport:
2005-08-08 Josh Conner <jconner@apple.com>
PR rtl-optimization/23241
* combine.c (simplify_comparison): Fix error in determining
whether to lift a subreg from comparison.
* gcc.dg/char-compare.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/csl-3_4_3-linux-branch@110456 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | ChangeLog.csl | 10 | ||||
-rw-r--r-- | gcc/combine.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/char-compare.c | 23 |
3 files changed, 34 insertions, 1 deletions
diff --git a/ChangeLog.csl b/ChangeLog.csl index e2faabeaaf6..92ea8e6f5e6 100644 --- a/ChangeLog.csl +++ b/ChangeLog.csl @@ -1,3 +1,13 @@ +2006-01-31 Joseph Myers <joseph@codesourcery.com> + + Backport: + 2005-08-08 Josh Conner <jconner@apple.com> + + PR rtl-optimization/23241 + * combine.c (simplify_comparison): Fix error in determining + whether to lift a subreg from comparison. + * gcc.dg/char-compare.c: New test. + 2006-01-21 Joseph Myers <joseph@codesourcery.com> * gcc/c-incpath.c (dir_separator_str): New. diff --git a/gcc/combine.c b/gcc/combine.c index f6ae431ee70..fec035ee0d4 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -10739,7 +10739,7 @@ simplify_comparison (enum rtx_code code, rtx *pop0, rtx *pop1) /* (A - C1) always sign-extends, like C2. */ && num_sign_bit_copies (a, inner_mode) > (unsigned int) (GET_MODE_BITSIZE (inner_mode) - - mode_width - 1))) + - (mode_width - 1)))) { op0 = SUBREG_REG (op0); continue; diff --git a/gcc/testsuite/gcc.dg/char-compare.c b/gcc/testsuite/gcc.dg/char-compare.c new file mode 100644 index 00000000000..f8b2fb968b0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/char-compare.c @@ -0,0 +1,23 @@ +/* PR rtl-optimization/23241 */ +/* Origin: Josh Conner <jconner@apple.com> */ + +/* { dg-do run } */ +/* { dg-options "-O2" } */ + +extern void abort(void); + +struct fbs { + unsigned char uc; +} fbs1 = {255}; + +void fn(struct fbs *fbs_ptr) +{ + if ((fbs_ptr->uc != 255) && (fbs_ptr->uc != 0)) + abort(); +} + +int main(void) +{ + fn(&fbs1); + return 0; +} |