diff options
author | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-04-28 02:40:58 +0000 |
---|---|---|
committer | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-04-28 02:40:58 +0000 |
commit | b0c53f6e6cf83417d524362c52a07f290054f802 (patch) | |
tree | 89011bc674059b1f753d7dcb509a311ee72ff7b4 /gcc | |
parent | d9af2c1c9ee540325ee5cd3d19e5ca46f0610b57 (diff) | |
download | ppe42-gcc-b0c53f6e6cf83417d524362c52a07f290054f802.tar.gz ppe42-gcc-b0c53f6e6cf83417d524362c52a07f290054f802.zip |
PR c++/27292
* tree.c (rvalue): Convert bitfields to their declared types.
PR c++/27292
* g++.dg/conversion/bitfield4.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113339 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/tree.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/conversion/bitfield4.C | 20 |
4 files changed, 31 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index aece2e85da0..17e3b291c21 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2006-04-27 Mark Mitchell <mark@codesourcery.com> + PR c++/27292 + * tree.c (rvalue): Convert bitfields to their declared types. + PR c++/27102 * typeck2.c (cxx_incomplete_type_diagnostic): Handle TYPENAME_TYPE. diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index a956205a136..60ba13f9936 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -372,8 +372,9 @@ rvalue (tree expr) if (real_lvalue_p (expr)) { type = is_bitfield_expr_with_lowered_type (expr); - if (!type) - type = TREE_TYPE (expr); + if (type) + return cp_convert (TYPE_MAIN_VARIANT (type), expr); + type = TREE_TYPE (expr); /* [basic.lval] Non-class rvalues always have cv-unqualified types. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5ae38b0e723..c8fc07c4798 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-04-27 Mark Mitchell <mark@codesourcery.com> + + PR c++/27292 + * g++.dg/conversion/bitfield4.C: New test. + 2006-04-27 Eric Christopher <echristo@apple.com> * gcc.dg/pragma-ms_struct.c: New. diff --git a/gcc/testsuite/g++.dg/conversion/bitfield4.C b/gcc/testsuite/g++.dg/conversion/bitfield4.C new file mode 100644 index 00000000000..75fe3016e14 --- /dev/null +++ b/gcc/testsuite/g++.dg/conversion/bitfield4.C @@ -0,0 +1,20 @@ +// PR c++/27292 + +enum ColorRole +{ + WindowText, Button +}; + +struct QPalette { + +ColorRole bg_role:8; + + bool hasBackground(); +}; + + +bool +QPalette::hasBackground () +{ + return (ColorRole (bg_role) != WindowText); +} |