Commit a5afbdd6 by Marek Polacek Committed by Marek Polacek

re PR c++/81607 (Conditional operator: "type mismatch in shift expression" error)

	PR c++/81607
	* cp-gimplify.c (cp_fold): If folding exposed a branch of
	a COND_EXPR, convert it to the original type of the COND_EXPR, if
	they differ.		   

	* g++.dg/other/bitfield6.C: New test.

From-SVN: r250948
parent 314e6352
2017-08-08 Marek Polacek <polacek@redhat.com>
PR c++/81607
* cp-gimplify.c (cp_fold): If folding exposed a branch of
a COND_EXPR, convert it to the original type of the COND_EXPR, if
they differ.
2017-08-08 Martin Liska <mliska@suse.cz>
* call.c: Include header files.
......
......@@ -2316,9 +2316,9 @@ cp_fold (tree x)
/* A COND_EXPR might have incompatible types in branches if one or both
arms are bitfields. If folding exposed such a branch, fix it up. */
if (TREE_CODE (x) != code)
if (tree type = is_bitfield_expr_with_lowered_type (x))
x = fold_convert (type, x);
if (TREE_CODE (x) != code
&& !useless_type_conversion_p (TREE_TYPE (org_x), TREE_TYPE (x)))
x = fold_convert (TREE_TYPE (org_x), x);
break;
......
2017-08-08 Marek Polacek <polacek@redhat.com>
PR c++/81607
* g++.dg/other/bitfield6.C: New test.
2017-08-07 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/81593
......
// PR c++/81607
int a;
struct b {
long c : 32;
} d;
char f = (903092 ? int(d.c) : 0) << a;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment