Bug 42217 - [4.5 Regression] ICE with zero-length bit-field
Summary: [4.5 Regression] ICE with zero-length bit-field
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.5.0
: P1 normal
Target Milestone: 4.5.0
Assignee: Dodji Seketeli
URL:
Keywords: ice-on-valid-code, monitored
Depends on:
Blocks:
 
Reported: 2009-11-29 15:18 UTC by Volker Reichelt
Modified: 2009-12-03 09:44 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2009-11-30 11:12:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Volker Reichelt 2009-11-29 15:18:56 UTC
The following valid code snippet triggers an ICE on trunk:

==================
struct A
{
  int : 0;
};

A a = A();
==================

bug.cc:6:9: internal compiler error: in int_or_pointer_precision, at tree.c:10593
Please submit a full bug report, [etc.]
Comment 1 Richard Biener 2009-11-29 15:45:15 UTC
Confirmed.

C++ issue.  It calls convert_to_integer with

#9  0x082b3dd6 in ocp_convert (type=0xb7d48ba0, expr=0xb7cac5b8, convtype=15, 
    flags=35) at /home/richard/src/trunk/gcc/cp/cvt.c:700
700	      return fold_if_not_in_template (convert_to_integer (type, e));
(gdb) p e
$1 = (tree) 0xb7cac5b8
(gdb) call debug_tree ($1)
 <integer_cst 0xb7cac5b8 type <integer_type 0xb7cc02a0 int> constant 0>
(gdb) p type
$2 = (tree) 0xb7d48ba0
(gdb) call debug_tree ($2)
 <integer_type 0xb7d48ba0 QI
    size <integer_cst 0xb7cac138 type <integer_type 0xb7cc0060 bit_size_type> constant 8>
    unit size <integer_cst 0xb7cac150 type <integer_type 0xb7cc0000 unsigned int> constant 1>
    align 8 symtab 0 alias set -1 canonical type 0xb7d48ba0 precision 0 min <integer_cst 0xb7d425b8 -2147483648> max <integer_cst 0xb7d42b88 2147483647>>

thus an integer type with TYPE_PRECISION zero.  That's invalid.
Comment 2 Dodji Seketeli 2009-11-30 22:39:04 UTC
Submitted a patch to http://gcc.gnu.org/ml/gcc-patches/2009-11/msg01767.html
Comment 3 Dodji Seketeli 2009-12-03 08:33:13 UTC
Subject: Bug 42217

Author: dodji
Date: Thu Dec  3 08:33:03 2009
New Revision: 154938

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=154938
Log:
Fix PR c++/42217

gcc/cp/ChangeLog
	PR c++/42217
	* class.c (remove_zero_width_bit_fields): The width of the bit field is
	in DECL_SIZE, not in DECL_INITIAL.

gcc/testsuite/ChangeLog
	PR c++/42217
	* g++.dg/other/bitfield4.C: New test.

Added:
    trunk/gcc/testsuite/g++.dg/other/bitfield4.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/class.c
    trunk/gcc/testsuite/ChangeLog

Comment 4 Dodji Seketeli 2009-12-03 09:44:36 UTC
Fixed in 4.5
Comment 5 hjl@gcc.gnu.org 2009-12-11 23:38:07 UTC
Subject: Bug 42217

Author: hjl
Date: Fri Dec 11 23:36:24 2009
New Revision: 155184

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=155184
Log:
Backport testcases from trunk.

2009-12-11  H.J. Lu  <hongjiu.lu@intel.com>

	Backport from mainline:
	2009-12-11  Dodji Seketeli  <dodji@redhat.com>

	PR c++/42225
	* g++.dg/template/typedef24.C: New test.
	* g++.dg/template/typedef25.C: New test.

	2009-12-11  Dodji Seketeli  <dodji@redhat.com>

	PR c++/42251
	* g++.dg/template/const3.C: New test.

	2009-12-10  Jakub Jelinek  <jakub@redhat.com>

	PR c++/42317
	* g++.dg/opt/dtor2.C: New test.
	* g++.dg/opt/dtor2.h: New file.
	* g++.dg/opt/dtor2-aux.cc: New file.

	2009-12-10  Jan Hubicka  <jh@suse.cz>

	PR middle-end/42110
	* g++.dg/torture/pr42110.C: new file.

	2009-12-07  Jakub Jelinek  <jakub@redhat.com>

	PR debug/42244
	* gcc.dg/debug/pr42244.c: New test.

	2009-12-04  David Daney  <ddaney@caviumnetworks.com>

	PR rtl-optimization/42164
	* gcc.c-torture/compile/pr42164.c: New test.

	2009-12-03  Jason Merrill  <jason@redhat.com>

	PR c++/41611
	* g++.dg/abi/guard2.C: New.

	2009-12-03  Dodji Seketeli  <dodji@redhat.com>

	PR c++/42217
	* g++.dg/other/bitfield4.C: New test.

	2009-12-03  Jakub Jelinek  <jakub@redhat.com>

	PR c++/42256
	* g++.dg/inherit/thunk11.C: New test.
	* g++.dg/inherit/thunk11.h: New file.
	* g++.dg/inherit/thunk11-aux.cc: New file.

	2009-12-01  Martin Jambor  <mjambor@suse.cz>

	PR tree-optimization/42237
	* gcc.c-torture/compile/pr42237.c: New test.

	2009-12-01  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/42057
	* g++.dg/parse/crash54.C: New.

	2009-11-30  Martin Jambor  <mjambor@suse.cz>

	PR middle-end/42196
	* gcc.c-torture/compile/pr42196-1.c: New test.
	* gcc.c-torture/compile/pr42196-2.c: New test.
	* gcc.c-torture/compile/pr42196-3.c: New test.

	2009-11-30  Dodji Seketeli  <dodji@redhat.com>

	PR c++/42069
	* g++.dg/template/typedef23.C: New test.

	2009-11-29  H.J. Lu  <hongjiu.lu@intel.com>

	PR tree-optimization/41961
	* g++.dg/tree-ssa/pr41961.C: New.

	2009-11-29  Ira Rosen  <irar@il.ibm.com>

	PR tree-optimization/42193
	* gcc.dg/vect/pr42193.c: New test.

	2009-11-28  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/42183
	* g++.dg/torture/pr42183.C: New testcase.

	2009-11-27  Martin Jambor  <mjambor@suse.cz>

	PR middle-end/42006
	* gcc.c-torture/execute/pr42006.c: New test.

	2009-11-27  Michael Matz  <matz@suse.de>

	PR rtl-optimization/42084
	* gcc.dg/pr42084.c: New test.

	2009-11-27  Michael Matz  <matz@suse.de>

	PR c++/41906
	* g++.dg/tree-ssa/pr41906.C: New testcase.

	2009-11-26  Michael Matz  <matz@suse.de>

	PR tree-optimization/41905
	* g++.dg/tree-ssa/pr41905.C: New testcase.

	2009-11-24  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/42142
	* gcc.c-torture/execute/pr42142.c: New testcase.

	2009-11-24  Martin Jambor  <mjambor@suse.cz>

	PR tree-optimization/42154
	* gcc.c-torture/execute/pr42154.c: New test.

	2009-11-21  Martin Jambor  <mjambor@suse.cz>

	PR middle-end/42025
	* gcc.c-torture/compile/pr42025-1.c: New test.
	* gcc.c-torture/compile/pr42025-2.c: New test.

	2009-11-21  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/42078
	* gcc.dg/pr42078.c: New test.

Added:
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/abi/guard2.C
      - copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/abi/guard2.C
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/inherit/thunk11-aux.cc
      - copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/inherit/thunk11-aux.cc
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/inherit/thunk11.C
      - copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/inherit/thunk11.C
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/inherit/thunk11.h
      - copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/inherit/thunk11.h
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/opt/dtor2-aux.cc
      - copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/opt/dtor2-aux.cc
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/opt/dtor2.C
      - copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/opt/dtor2.C
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/opt/dtor2.h
      - copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/opt/dtor2.h
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/other/bitfield4.C
      - copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/other/bitfield4.C
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/parse/crash54.C
      - copied unchanged from r155172, trunk/gcc/testsuite/g++.dg/parse/crash54.C
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/template/const3.C
      - copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/template/const3.C
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/template/typedef23.C
      - copied unchanged from r155181, trunk/gcc/testsuite/g++.dg/template/typedef23.C
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/template/typedef24.C
      - copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/template/typedef24.C
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/template/typedef25.C
      - copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/template/typedef25.C
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/torture/pr42110.C
      - copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/torture/pr42110.C
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/torture/pr42183.C
      - copied unchanged from r155181, trunk/gcc/testsuite/g++.dg/torture/pr42183.C
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/tree-ssa/pr41905.C
      - copied unchanged from r155182, trunk/gcc/testsuite/g++.dg/tree-ssa/pr41905.C
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/tree-ssa/pr41906.C
      - copied unchanged from r155182, trunk/gcc/testsuite/g++.dg/tree-ssa/pr41906.C
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/tree-ssa/pr41961.C
      - copied unchanged from r155181, trunk/gcc/testsuite/g++.dg/tree-ssa/pr41961.C
    branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42025-1.c
      - copied unchanged from r155182, trunk/gcc/testsuite/gcc.c-torture/compile/pr42025-1.c
    branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42025-2.c
      - copied unchanged from r155182, trunk/gcc/testsuite/gcc.c-torture/compile/pr42025-2.c
    branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42164.c
      - copied unchanged from r155170, trunk/gcc/testsuite/gcc.c-torture/compile/pr42164.c
    branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42196-1.c
      - copied unchanged from r155181, trunk/gcc/testsuite/gcc.c-torture/compile/pr42196-1.c
    branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42196-2.c
      - copied unchanged from r155181, trunk/gcc/testsuite/gcc.c-torture/compile/pr42196-2.c
    branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42196-3.c
      - copied unchanged from r155181, trunk/gcc/testsuite/gcc.c-torture/compile/pr42196-3.c
    branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42237.c
      - copied unchanged from r155171, trunk/gcc/testsuite/gcc.c-torture/compile/pr42237.c
    branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/execute/pr42006.c
      - copied unchanged from r155181, trunk/gcc/testsuite/gcc.c-torture/execute/pr42006.c
    branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/execute/pr42142.c
      - copied unchanged from r155182, trunk/gcc/testsuite/gcc.c-torture/execute/pr42142.c
    branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/execute/pr42154.c
      - copied unchanged from r155182, trunk/gcc/testsuite/gcc.c-torture/execute/pr42154.c
    branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/debug/pr42244.c
      - copied unchanged from r155170, trunk/gcc/testsuite/gcc.dg/debug/pr42244.c
    branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/pr42078.c
      - copied unchanged from r155182, trunk/gcc/testsuite/gcc.dg/pr42078.c
    branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/pr42084.c
      - copied unchanged from r155182, trunk/gcc/testsuite/gcc.dg/pr42084.c
    branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/vect/pr42193.c
      - copied unchanged from r155181, trunk/gcc/testsuite/gcc.dg/vect/pr42193.c
Modified:
    branches/gcc-4_4-branch/gcc/testsuite/ChangeLog