From 26d40c3d4bd444bcd3dc2d44d1a405dfb8db07ec Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Sat, 13 Jul 2013 19:10:17 -0400 Subject: re PR c++/57793 (ICE with bitfields in get_bit_range) PR c++/57793 c/ * c-decl.c (finish_struct): Check for too-large class. cp/ * class.c (layout_class_type): Check for too-large class. From-SVN: r200938 --- gcc/c/ChangeLog | 5 +++++ gcc/c/c-decl.c | 6 ++++++ 2 files changed, 11 insertions(+) (limited to 'gcc/c') diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 43cc839..15bc1aa 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,8 @@ +2013-07-13 Jason Merrill + + PR c++/57793 + * c-decl.c (finish_struct): Check for too-large class. + 2013-07-04 Joern Rennecke PR c/57821 diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index 8170a80..f7ae648 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -7210,6 +7210,12 @@ finish_struct (location_t loc, tree t, tree fieldlist, tree attributes, layout_type (t); + if (TYPE_SIZE_UNIT (t) + && TREE_CODE (TYPE_SIZE_UNIT (t)) == INTEGER_CST + && !TREE_OVERFLOW (TYPE_SIZE_UNIT (t)) + && !valid_constant_size_p (TYPE_SIZE_UNIT (t))) + error ("type %qT is too large", t); + /* Give bit-fields their proper types. */ { tree *fieldlistp = &fieldlist; -- cgit v1.1