diff options
author | Jakub Jelinek <jakub@redhat.com> | 2000-10-31 17:02:45 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2000-10-31 17:02:45 +0100 |
commit | 681cb2337b00d65d62f78e653d6808b74ded295d (patch) | |
tree | d920483e11ab43928240149c1e181d5c0098cbaf | |
parent | e541461a498d47602918a711290095ed28041355 (diff) | |
download | gcc-681cb2337b00d65d62f78e653d6808b74ded295d.zip gcc-681cb2337b00d65d62f78e653d6808b74ded295d.tar.gz gcc-681cb2337b00d65d62f78e653d6808b74ded295d.tar.bz2 |
expr.c (do_store_flag): Pass operand_mode instead of GET_MODE (op0) to expand_shift.
* expr.c (do_store_flag): Pass operand_mode instead of GET_MODE (op0)
to expand_shift.
* g++.old-deja/g++.other/inline16.C: New test.
From-SVN: r37160
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/expr.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/inline16.C | 24 |
4 files changed, 34 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f4a90da..6d3e052 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-10-31 Jakub Jelinek <jakub@redhat.com> + + * expr.c (do_store_flag): Pass operand_mode instead of GET_MODE (op0) + to expand_shift. + Tue Oct 31 15:33:27 2000 J"orn Rennecke <amylaar@redhat.com> * sh-protos.h (reg_no_subreg_operand, emit_fpscr_use): Don't declare. @@ -10285,7 +10285,7 @@ do_store_flag (exp, target, mode, only_cheap) op0 = expand_expr (inner, subtarget, VOIDmode, 0); if (bitnum != 0) - op0 = expand_shift (RSHIFT_EXPR, GET_MODE (op0), op0, + op0 = expand_shift (RSHIFT_EXPR, operand_mode, op0, size_int (bitnum), subtarget, ops_unsignedp); if (GET_MODE (op0) != mode) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bb486a4..33002ac 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2000-10-31 Jakub Jelinek <jakub@redhat.com> + + * g++.old-deja/g++.other/inline16.C: New test. + 2000-10-31 Gabriel Dos Reis <gdr@codesourcery.com> * g++.old-deja/g++.pt/memtemp77.C (main): Adjust comparison against. diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline16.C b/gcc/testsuite/g++.old-deja/g++.other/inline16.C new file mode 100644 index 0000000..3404f43 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/inline16.C @@ -0,0 +1,24 @@ +// Build don't link: +// Origin: Jakub Jelinek <jakub@redhat.com> +// Special g++ Options: -O1 + +struct foo { + bool x; + inline void a (unsigned char y); + inline void b (void); + virtual ~foo (); +}; + +foo::~foo () +{ +} + +void foo::a (unsigned char y) +{ + x = ((y & 2) != 0); +} + +void foo::b (void) +{ + a(0x07); +} |