Commit c50e614b by Jakub Jelinek Committed by Jakub Jelinek

re PR tree-optimization/69164 (ICE in create_tmp_var, at gimple-expr.c:468)

	PR c++/69164
	* class.c (layout_class_type): Use copy_node to copy FIELD_DECLs.

	* g++.dg/opt/pr69164.C: New test.

From-SVN: r232187
parent fe71aa4e
2016-01-09 Jakub Jelinek <jakub@redhat.com>
PR c++/69164
* class.c (layout_class_type): Use copy_node to copy FIELD_DECLs.
2016-01-08 Jason Merrill <jason@redhat.com>
PR c++/69158
......
......@@ -6484,18 +6484,11 @@ layout_class_type (tree t, tree *virtuals_p)
for (field = TYPE_FIELDS (t); field; field = DECL_CHAIN (field))
if (TREE_CODE (field) == FIELD_DECL)
{
*next_field = build_decl (input_location,
FIELD_DECL,
DECL_NAME (field),
TREE_TYPE (field));
*next_field = copy_node (field);
DECL_CONTEXT (*next_field) = base_t;
DECL_FIELD_OFFSET (*next_field) = DECL_FIELD_OFFSET (field);
DECL_FIELD_BIT_OFFSET (*next_field)
= DECL_FIELD_BIT_OFFSET (field);
DECL_SIZE (*next_field) = DECL_SIZE (field);
DECL_MODE (*next_field) = DECL_MODE (field);
next_field = &DECL_CHAIN (*next_field);
}
*next_field = NULL_TREE;
/* Record the base version of the type. */
CLASSTYPE_AS_BASE (t) = base_t;
......
2016-01-09 Jakub Jelinek <jakub@redhat.com>
PR c++/69164
* g++.dg/opt/pr69164.C: New test.
2016-01-08 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/69167
......
// PR c++/69164
// { dg-do compile { target c++11 } }
// { dg-options "-O2" }
struct A {
struct B {
B () {}
bool : 1;
};
B foo () { B r; return r; }
};
struct C {
struct D {
D (C *x) : d (x->c.foo ()) {}
A::B d;
};
A c;
};
struct F : C {
D f = this;
F (int, int) {}
};
void
bar (int a, int b)
{
F (b, 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