Commit bced8304 by Alexandre Oliva Committed by Alexandre Oliva

re PR c++/35909 (ICE with bit-field and const references)

gcc/cp/ChangeLog:
PR c++/35909
* call.c (convert_like_real): Convert bitfield to desired type
before creating temporary.
gcc/testsuite/ChangeLog:
PR c++/35909
* g++.dg/conversion/bitfield9.C: New.

From-SVN: r135969
parent 48c655bb
2008-05-27 Alexandre Oliva <aoliva@redhat.com>
PR c++/35909
* call.c (convert_like_real): Convert bitfield to desired type
before creating temporary.
2008-05-26 Daniel Franke <franke.daniel@gmail.com> 2008-05-26 Daniel Franke <franke.daniel@gmail.com>
* Makefile.in: Adjusted dependencies on c-incpath.o. * Makefile.in: Adjusted dependencies on c-incpath.o.
......
...@@ -4580,7 +4580,10 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum, ...@@ -4580,7 +4580,10 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
return error_mark_node; return error_mark_node;
} }
if (lvalue & clk_bitfield) if (lvalue & clk_bitfield)
expr = convert_bitfield_to_declared_type (expr); {
expr = convert_bitfield_to_declared_type (expr);
expr = fold_convert (type, expr);
}
expr = build_target_expr_with_type (expr, type); expr = build_target_expr_with_type (expr, type);
} }
......
2008-05-27 Alexandre Oliva <aoliva@redhat.com>
PR c++/35909
* g++.dg/conversion/bitfield9.C: New.
2008-05-26 Arnaud Charlet <charlet@adacore.com> 2008-05-26 Arnaud Charlet <charlet@adacore.com>
* gnat.dg/specs/array_no_def_init.ads: New test. * gnat.dg/specs/array_no_def_init.ads: New test.
......
// PR c++/35909
// { dg-do compile }
struct MidiCommand
{
unsigned data1 : 8;
};
void g(const unsigned char &);
void h(const unsigned int &);
void f(MidiCommand mc)
{
g(mc.data1);
h(mc.data1);
}
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