Commit 7552c36a by Jakub Jelinek Committed by Jakub Jelinek

re PR c++/91925 (-fpack-struct causes a decltype with template to ICE)

	PR c++/91925
	* c-warn.c (check_alignment_of_packed_member): Ignore FIELD_DECLs
	with NULL DECL_FIELD_OFFSET.

	* g++.dg/conversion/packed2.C: New test.

From-SVN: r276415
parent 04bf300e
2019-10-01 Jakub Jelinek <jakub@redhat.com>
PR c++/91925
* c-warn.c (check_alignment_of_packed_member): Ignore FIELD_DECLs
with NULL DECL_FIELD_OFFSET.
2019-10-01 Richard Sandiford <richard.sandiford@arm.com> 2019-10-01 Richard Sandiford <richard.sandiford@arm.com>
* c-pretty-print.c (pp_c_specifier_qualifier_list): If a vector type * c-pretty-print.c (pp_c_specifier_qualifier_list): If a vector type
......
...@@ -2798,6 +2798,8 @@ check_alignment_of_packed_member (tree type, tree field, bool rvalue) ...@@ -2798,6 +2798,8 @@ check_alignment_of_packed_member (tree type, tree field, bool rvalue)
/* Check alignment of the data member. */ /* Check alignment of the data member. */
if (TREE_CODE (field) == FIELD_DECL if (TREE_CODE (field) == FIELD_DECL
&& (DECL_PACKED (field) || TYPE_PACKED (TREE_TYPE (field))) && (DECL_PACKED (field) || TYPE_PACKED (TREE_TYPE (field)))
/* Ignore FIELDs not laid out yet. */
&& DECL_FIELD_OFFSET (field)
&& (!rvalue || TREE_CODE (TREE_TYPE (field)) == ARRAY_TYPE)) && (!rvalue || TREE_CODE (TREE_TYPE (field)) == ARRAY_TYPE))
{ {
/* Check the expected alignment against the field alignment. */ /* Check the expected alignment against the field alignment. */
......
2019-10-01 Jakub Jelinek <jakub@redhat.com>
PR c++/91925
* g++.dg/conversion/packed2.C: New test.
2019-10-01 Bill Schmidt <wschmdit@linux.ibm.com> 2019-10-01 Bill Schmidt <wschmdit@linux.ibm.com>
* gcc.target/powerpc/pr91275.c: New. * gcc.target/powerpc/pr91275.c: New.
......
// PR c++/91925
// { dg-do compile { target c++11 } }
// { dg-options "-fpack-struct" }
struct A {};
int foo (A);
struct B {
A a;
decltype (foo (a)) p;
};
template <typename T> T bar (T);
class C {
A a;
decltype (bar (a)) p;
};
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