diff options
author | Jeff Law <law@redhat.com> | 2015-05-27 15:13:25 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2015-05-27 15:13:25 -0600 |
commit | b60685a379cabc5be2a633696318fb0364b45a78 (patch) | |
tree | 6305227d026e8f9a61cead8154aa08900a9fda30 /gcc | |
parent | 8ed501f167373f40d9a5187323b5771725550b69 (diff) | |
download | gcc-b60685a379cabc5be2a633696318fb0364b45a78.zip gcc-b60685a379cabc5be2a633696318fb0364b45a78.tar.gz gcc-b60685a379cabc5be2a633696318fb0364b45a78.tar.bz2 |
re PR target/39726 ([cond-optab] ColdFire pessimizations on QImode/HImode tests)
PR target/39726
* gcc.dg/target/m68k/pr39726-1.c: New test.
From-SVN: r223781
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/m68k/pr39726.c | 65 |
3 files changed, 71 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 76bb537..6528d42 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -2964,6 +2964,7 @@ 2015-05-07 Jeff Law <law@redhat.com> + PR target/39726 * match.pd (bit_and (plus/minus (convert @0) (convert @1) mask): New simplifier to narrow arithmetic. * generic-match-head.c: (types_match, single_use): New functions. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1923a2f..a1a242e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-05-27 Jeff Law <law@redhat.com> + + PR target/39726 + * gcc.dg/target/m68k/pr39726-1.c: New test. + 2015-05-27 Nathan Sidwell <nathan@acm.org> PR c++/66270 diff --git a/gcc/testsuite/gcc.target/m68k/pr39726.c b/gcc/testsuite/gcc.target/m68k/pr39726.c new file mode 100644 index 0000000..94d41ba --- /dev/null +++ b/gcc/testsuite/gcc.target/m68k/pr39726.c @@ -0,0 +1,65 @@ +/* { dg-do assemble } /* +/* { dg-options "-O2 -fomit-frame-pointer" } */ +/* { dg-final { object-size text <= 228 } } */ + +unsigned char v; + +int a0bs (unsigned char u, unsigned char w) +{ + if ((u - w) & 0x80) + v = 1; +} + +int a1bs (unsigned char u, unsigned char w) +{ + if ((u + w) & 0x80) + v = 1; +} + +int a0b (unsigned char u, unsigned char w) +{ + if ((u - w) & 0x22) + v = 1; +} + +int a1b (unsigned char u, unsigned char w) +{ + if ((u + w) & 0x22) + v = 1; +} + +int a0ws (unsigned short u, unsigned short w) +{ + if ((u - w) & 0x8000) + v = 1; +} + +int a1ws (unsigned short u, unsigned short w) +{ + if ((u + w) & 0x8000) + v = 1; +} + +int a0wbs (unsigned short u, unsigned short w) +{ + if ((u - w) & 0x80) + v = 1; +} + +int a1wbs (unsigned short u, unsigned short w) +{ + if ((u + w) & 0x80) + v = 1; +} + +int a0w (unsigned short u, unsigned short w) +{ + if ((u - w) & 0x8421) + v = 1; +} + +int a1w (unsigned short u, unsigned short w) +{ + if ((u + w) & 0x8421) + v = 1; +} |