diff options
-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); +} |