mirror of git://gcc.gnu.org/git/gcc.git
re PR c++/65556 (ICE: verify_gimple failed (type precision mismatch in switch statement))
PR c++/65556 * semantics.c (finish_switch_cond): If the unlowered type is not an enum, use the type of the condition. * c-c++-common/pr65556.c: New test. From-SVN: r221738
This commit is contained in:
parent
0b7dccc63e
commit
5964a3a672
|
|
@ -1,3 +1,9 @@
|
||||||
|
2015-03-27 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
|
PR c++/65556
|
||||||
|
* semantics.c (finish_switch_cond): If the unlowered type is not an
|
||||||
|
enum, use the type of the condition.
|
||||||
|
|
||||||
2015-03-27 Jason Merrill <jason@redhat.com>
|
2015-03-27 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
PR c++/65509
|
PR c++/65509
|
||||||
|
|
|
||||||
|
|
@ -1165,6 +1165,8 @@ finish_switch_cond (tree cond, tree switch_stmt)
|
||||||
}
|
}
|
||||||
/* We want unlowered type here to handle enum bit-fields. */
|
/* We want unlowered type here to handle enum bit-fields. */
|
||||||
orig_type = unlowered_expr_type (cond);
|
orig_type = unlowered_expr_type (cond);
|
||||||
|
if (TREE_CODE (orig_type) != ENUMERAL_TYPE)
|
||||||
|
orig_type = TREE_TYPE (cond);
|
||||||
if (cond != error_mark_node)
|
if (cond != error_mark_node)
|
||||||
{
|
{
|
||||||
/* Warn if the condition has boolean value. */
|
/* Warn if the condition has boolean value. */
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2015-03-27 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
|
PR c++/65556
|
||||||
|
* c-c++-common/pr65556.c: New test.
|
||||||
|
|
||||||
2015-03-27 Jan Hubicka <hubicka@ucw.cz>
|
2015-03-27 Jan Hubicka <hubicka@ucw.cz>
|
||||||
|
|
||||||
PR ipa/65600
|
PR ipa/65600
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
/* PR c++/65556 */
|
||||||
|
/* { dg-do compile } */
|
||||||
|
|
||||||
|
struct S
|
||||||
|
{
|
||||||
|
long l: 1;
|
||||||
|
long l2: 41;
|
||||||
|
unsigned long ul: 1;
|
||||||
|
unsigned long ul2: 41;
|
||||||
|
} s;
|
||||||
|
|
||||||
|
void
|
||||||
|
fn ()
|
||||||
|
{
|
||||||
|
switch (s.l)
|
||||||
|
case 0:;
|
||||||
|
switch (s.ul)
|
||||||
|
case 0:;
|
||||||
|
switch (s.l2)
|
||||||
|
case 0:;
|
||||||
|
switch (s.ul2)
|
||||||
|
case 0:;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue