Bug 20929 - [4.0 Regression] internal compiler error: verify_stmts failed.
Summary: [4.0 Regression] internal compiler error: verify_stmts failed.
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: tree-optimization (show other bugs)
Version: 4.0.0
: P2 critical
Target Milestone: 4.0.0
Assignee: Not yet assigned to anyone
URL:
Keywords: ice-on-valid-code, monitored
Depends on:
Blocks:
 
Reported: 2005-04-10 15:33 UTC by Andreas Jaeger
Modified: 2005-04-17 23:40 UTC (History)
6 users (show)

See Also:
Host: {i586,s390}-linux-gnu
Target:
Build:
Known to work: 4.1.0 3.4.0
Known to fail: 4.0.0
Last reconfirmed: 2005-04-13 16:48:45


Attachments
Preprocessed source file - i586 compilation (123.21 KB, application/octet-stream)
2005-04-10 15:34 UTC, Andreas Jaeger
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Jaeger 2005-04-10 15:33:34 UTC
Compiling mozilla on i586 (and also on s390) I see the following failure:

c++ -o nsTableFrame.o -c -DOSTYPE=\"Linux2.6\" -DOSARCH=\"Linux\"
-DDEBUG_TABLE_REFLOW_TIMING_off -DDEBUG_TABLE_STRATEGY_off -D_IMPL_NS_LAYOUT
-I./../../base/src -I./../../style/src -I./../../content/src
-I./../../../base/src  -I../../../../dist/include/xpcom
-I../../../../dist/include/string -I../../../../dist/include/dom
-I../../../../dist/include/content -I../../../../dist/include/gfx
-I../../../../dist/include/widget -I../../../../dist/include/locale
-I../../../../dist/include/view -I../../../../dist/include/accessibility
-I../../../../dist/include/necko -I../../../../dist/include/webshell
-I../../../../dist/include/layout -I../../../../dist/include
-I/usr/src/packages/BUILD/mozilla/dist/include/nspr     -I/usr/X11R6/include  
-fPIC  -I/usr/X11R6/include -fno-rtti -fno-exceptions -Wall -Wconversion
-Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy
-Wno-non-virtual-dtor -Wno-long-long -pedantic -O2 -march=i586 -mtune=i686
-fmessage-length=0 -Wall -fno-strict-aliasing -fshort-wchar -pthread -pipe 
-DNDEBUG -DTRIMMED -ffunction-sections -O2 -march=i586 -mtune=i686
-fmessage-length=0 -Wall -fno-strict-aliasing  -I/usr/X11R6/include
-DMOZILLA_CLIENT -include ../../../../mozilla-config.h
-Wp,-MD,.deps/nsTableFrame.pp nsTableFrame.cpp -v -save-temps
c++: warning: -pipe ignored because -save-temps specified
Using built-in specs.
Target: i586-suse-linux
Configured with: ../configure --enable-threads=posix --prefix=/usr
--with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man
--libdir=/usr/lib --libexecdir=/usr/lib
--enable-languages=c,c++,objc,f95,java,ada --enable-checking
--with-gxx-include-dir=/usr/include/c++/4.0.0 --with-slibdir=/lib
--with-system-zlib --enable-shared --enable-__cxa_atexit
--without-system-libunwind --host=i586-suse-linux
Thread model: posix
gcc version 4.0.0 20050410 (prerelease) (SUSE Linux)
 /usr/lib/gcc/i586-suse-linux/4.0.0/cc1plus -E -quiet -v -I./../../base/src
-I./../../style/src -I./../../content/src -I./../../../base/src
-I../../../../dist/include/xpcom -I../../../../dist/include/string
-I../../../../dist/include/dom -I../../../../dist/include/content
-I../../../../dist/include/gfx -I../../../../dist/include/widget
-I../../../../dist/include/locale -I../../../../dist/include/view
-I../../../../dist/include/accessibility -I../../../../dist/include/necko
-I../../../../dist/include/webshell -I../../../../dist/include/layout
-I../../../../dist/include -I/usr/src/packages/BUILD/mozilla/dist/include/nspr
-I/usr/X11R6/include -I/usr/X11R6/include -I/usr/X11R6/include -D_GNU_SOURCE
-D_REENTRANT -DOSTYPE="Linux2.6" -DOSARCH="Linux"
-DDEBUG_TABLE_REFLOW_TIMING_off -DDEBUG_TABLE_STRATEGY_off -D_IMPL_NS_LAYOUT
-DNDEBUG -DTRIMMED -DMOZILLA_CLIENT -include ../../../../mozilla-config.h -MD
.deps/nsTableFrame.pp nsTableFrame.cpp -march=i586 -mtune=i686 -march=i586
-mtune=i686 -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual
-Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wno-long-long -pedantic
-Wall -Wall -fPIC -fno-rtti -fno-exceptions -fmessage-length=0
-fno-strict-aliasing -fshort-wchar -ffunction-sections -fmessage-length=0
-fno-strict-aliasing -O2 -O2 -fpch-preprocess -o nsTableFrame.ii
ignoring nonexistent directory "./../../content/src"
ignoring duplicate directory "/usr/X11R6/include"
ignoring duplicate directory "/usr/X11R6/include"
#include "..." search starts here:
#include <...> search starts here:
 ./../../base/src
 ./../../style/src
 ./../../../base/src
 ../../../../dist/include/xpcom
 ../../../../dist/include/string
 ../../../../dist/include/dom
 ../../../../dist/include/content
 ../../../../dist/include/gfx
 ../../../../dist/include/widget
 ../../../../dist/include/locale
 ../../../../dist/include/view
 ../../../../dist/include/accessibility
 ../../../../dist/include/necko
 ../../../../dist/include/webshell
 ../../../../dist/include/layout
 ../../../../dist/include
 /usr/src/packages/BUILD/mozilla/dist/include/nspr
 /usr/X11R6/include
 /usr/include/c++/4.0.0
 /usr/include/c++/4.0.0/i586-suse-linux
 /usr/include/c++/4.0.0/backward
 /usr/local/include
 /usr/lib/gcc/i586-suse-linux/4.0.0/include
 /usr/lib/gcc/i586-suse-linux/4.0.0/../../../../i586-suse-linux/include
 /usr/include
End of search list.
 /usr/lib/gcc/i586-suse-linux/4.0.0/cc1plus -fpreprocessed nsTableFrame.ii
-quiet -dumpbase nsTableFrame.cpp -march=i586 -mtune=i686 -march=i586
-mtune=i686 -auxbase-strip nsTableFrame.o -O2 -O2 -Wall -Wconversion
-Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy
-Wno-non-virtual-dtor -Wno-long-long -pedantic -Wall -Wall -version -fPIC
-fno-rtti -fno-exceptions -fmessage-length=0 -fno-strict-aliasing -fshort-wchar
-ffunction-sections -fmessage-length=0 -fno-strict-aliasing -o nsTableFrame.s
GNU C++ version 4.0.0 20050410 (prerelease) (SUSE Linux) (i586-suse-linux)
        compiled by GNU C version 4.0.0 20050410 (prerelease) (SUSE Linux).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
../../../../dist/include/xpcom/nsISupportsBase.h:80: warning: ‘class
nsISupports’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsIProgrammingLanguage.h:32: warning: ‘class
nsIProgrammingLanguage’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsIClassInfo.h:33: warning: ‘class nsIClassInfo’
has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsCOMPtr.h:332: warning: ‘class nsCOMPtr_helper’
has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsCOMPtr.h: In instantiation of
‘nsDerivedSafe<nsISupports>’:
../../../../dist/include/xpcom/nsCOMPtr.h:1392:   instantiated from here
../../../../dist/include/xpcom/nsCOMPtr.h:197: warning: ‘class
nsDerivedSafe<nsISupports>’ has virtual functions but non-virtual destructor
../../../../dist/include/string/nsTAString.h:45: warning: ‘class
nsStringComparator’ has virtual functions but non-virtual destructor
../../../../dist/include/string/nsTAString.h:61: warning: ‘class
nsDefaultStringComparator’ has virtual functions but non-virtual destructor
../../../../dist/include/string/nsTAString.h:45: warning: ‘class
nsCStringComparator’ has virtual functions but non-virtual destructor
../../../../dist/include/string/nsTAString.h:61: warning: ‘class
nsDefaultCStringComparator’ has virtual functions but non-virtual destructor
../../../../dist/include/string/nsAString.h:73: warning: ‘class
nsCaseInsensitiveCStringComparator’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsIMemory.h:54: warning: ‘class nsIMemory’ has
virtual functions but non-virtual destructor
../../../../dist/include/necko/nsIRequest.h:34: warning: ‘class nsIRequest’ has
virtual functions but non-virtual destructor
../../../../dist/include/layout/nsIPresShell.h:121: warning: ‘class
nsIPresShell’ has virtual functions but non-virtual destructor
../../../../dist/include/widget/nsIMouseListener.h:55: warning: ‘class
nsIMouseListener’ has virtual functions but non-virtual destructor
../../../../dist/include/widget/nsIMenuListener.h:58: warning: ‘class
nsIMenuListener’ has virtual functions but non-virtual destructor
../../../../dist/include/widget/nsIWidget.h:254: warning: ‘class nsIWidget’ has
virtual functions but non-virtual destructor
../../../../dist/include/gfx/nsIDrawingSurface.h:74: warning: ‘class
nsIDrawingSurface’ has virtual functions but non-virtual destructor
../../../../dist/include/gfx/nsIRenderingContext.h:108: warning: ‘class
nsIRenderingContext’ has virtual functions but non-virtual destructor
../../../../dist/include/gfx/nsIDeviceContext.h:213: warning: ‘class
nsIDeviceContext’ has virtual functions but non-virtual destructor
../../../../dist/include/layout/nsIPresContext.h:117: warning: ‘class
nsIPresContext’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsIAtom.h:27: warning: ‘class nsIAtom’ has
virtual functions but non-virtual destructor
../../../../dist/include/locale/nsILanguageAtom.h:29: warning: ‘class
nsILanguageAtom’ has virtual functions but non-virtual destructor
../../../../dist/include/necko/nsIURI.h:72: warning: ‘class nsIURI’ has virtual
functions but non-virtual destructor
../../../../dist/include/content/nsIStyleRule.h:85: warning: ‘class
nsIStyleRule’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsCOMPtr.h: In instantiation of
‘nsDerivedSafe<nsIURI>’:
../../../../dist/include/content/nsCSSValue.h:219:   instantiated from here
../../../../dist/include/xpcom/nsCOMPtr.h:197: warning: ‘class
nsDerivedSafe<nsIURI>’ has virtual functions but non-virtual destructor
../../../../dist/include/locale/nsILanguageAtomService.h:29: warning: ‘class
nsILanguageAtomService’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsCOMPtr.h: In instantiation of
‘nsDerivedSafe<nsIStyleRule>’:
../../../../dist/include/content/nsRuleNode.h:556:   instantiated from here
../../../../dist/include/xpcom/nsCOMPtr.h:197: warning: ‘class
nsDerivedSafe<nsIStyleRule>’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsCOMPtr.h: In instantiation of
‘nsDerivedSafe<nsIAtom>’:
../../../../dist/include/content/nsStyleContext.h:81:   instantiated from here
../../../../dist/include/xpcom/nsCOMPtr.h:197: warning: ‘class
nsDerivedSafe<nsIAtom>’ has virtual functions but non-virtual destructor
../../../../dist/include/content/nsIContent.h:70: warning: ‘class nsIContent’
has virtual functions but non-virtual destructor
../../../../dist/include/layout/nsIFrame.h:398: warning: ‘class nsIFrame’ has
virtual functions but non-virtual destructor
../../../../dist/include/layout/nsIFocusTracker.h:54: warning: ‘class
nsIFocusTracker’ has virtual functions but non-virtual destructor
../../../../dist/include/content/nsISelection.h:36: warning: ‘class
nsISelection’ has virtual functions but non-virtual destructor
../../../../dist/include/content/nsISelectionDisplay.h:25: warning: ‘class
nsISelectionDisplay’ has virtual functions but non-virtual destructor
../../../../dist/include/content/nsISelectionController.h:41: warning: ‘class
nsISelectionController’ has virtual functions but non-virtual destructor
../../../../dist/include/layout/nsIFrameSelection.h:132: warning: ‘class
nsIFrameSelection’ has virtual functions but non-virtual destructor
../../../../dist/include/layout/nsITableLayout.h:56: warning: ‘class
nsITableLayout’ has virtual functions but non-virtual destructor
./../../base/src/nsFrame.h:392: warning: ‘virtual void*
nsFrame::GetProperty(nsIPresContext*, nsIAtom*, PRBool) const’ was hidden
nsTableFrame.h:210: warning:   by ‘static void*
nsTableFrame::GetProperty(nsIPresContext*, nsIFrame*, nsIAtom*, PRBool)’
../../../../dist/include/layout/nsITableCellLayout.h:54: warning: ‘class
nsITableCellLayout’ has virtual functions but non-virtual destructor
../../../../dist/include/layout/nsIPercentHeightObserver.h:54: warning: ‘class
nsIPercentHeightObserver’ has virtual functions but non-virtual destructor
./../../base/src/nsILineIterator.h:70: warning: ‘class nsILineIterator’ has
virtual functions but non-virtual destructor
./../../base/src/nsILineIterator.h:144: warning: ‘class
nsILineIteratorNavigator’ has virtual functions but non-virtual destructor
../../../../dist/include/content/nsCSSPseudoElements.h:45: warning: ‘class
nsICSSPseudoElement’ has virtual functions but non-virtual destructor
../../../../dist/include/webshell/nsILinkHandler.h:73: warning: ‘class
nsILinkHandler’ has virtual functions but non-virtual destructor
../../../../dist/include/content/nsIStyleRuleProcessor.h:175: warning: ‘class
nsIStyleRuleProcessor’ has virtual functions but non-virtual destructor
../../../../dist/include/content/nsIStyleSheet.h:58: warning: ‘class
nsIStyleSheet’ has virtual functions but non-virtual destructor
../../../../dist/include/content/nsICSSStyleSheet.h:56: warning: ‘class
nsICSSStyleSheet’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsISerializable.h:29: warning: ‘class
nsISerializable’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsISimpleEnumerator.h:34: warning: ‘class
nsISimpleEnumerator’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsIEnumerator.h:28: warning: ‘class
nsIEnumerator’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsIEnumerator.h:145: warning: ‘class
nsIBidirectionalEnumerator’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsICollection.h:29: warning: ‘class
nsICollection’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsICollection.h:180: warning: ‘class
nsQueryElementAt’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsISupportsArray.h:44: warning: ‘class
nsISupportsArray’ has virtual functions but non-virtual destructor
../../../../dist/include/content/nsIStyleRuleSupplier.h:15: warning: ‘class
nsIStyleRuleSupplier’ has virtual functions but non-virtual destructor
../../../../dist/include/xpcom/nsCOMPtr.h: In instantiation of
‘nsDerivedSafe<nsIStyleRuleSupplier>’:
../../../../dist/include/content/nsStyleSet.h:148:   instantiated from here
../../../../dist/include/xpcom/nsCOMPtr.h:197: warning: ‘class
nsDerivedSafe<nsIStyleRuleSupplier>’ has virtual functions but non-virtual
destructor
../../../../dist/include/view/nsIView.h:145: warning: ‘class nsIView_base’ has
virtual functions but non-virtual destructor
../../../../dist/include/content/nsCSSAnonBoxes.h:45: warning: ‘class
nsICSSAnonBoxPseudo’ has virtual functions but non-virtual destructor
../../../../dist/include/dom/nsIDOMNode.h:25: warning: ‘class nsIDOMNode’ has
virtual functions but non-virtual destructor
../../../../dist/include/dom/nsIDOMElement.h:25: warning: ‘class nsIDOMElement’
has virtual functions but non-virtual destructor
../../../../dist/include/dom/nsIDOMHTMLElement.h:25: warning: ‘class
nsIDOMHTMLElement’ has virtual functions but non-virtual destructor
../../../../dist/include/dom/nsIDOMHTMLBodyElement.h:34: warning: ‘class
nsIDOMHTMLBodyElement’ has virtual functions but non-virtual destructor
../../../../dist/include/view/nsIViewManager.h:69: warning: ‘class
nsIViewManager’ has virtual functions but non-virtual destructor
../../../../dist/include/layout/nsIScrollableViewProvider.h:36: warning: ‘class
nsIScrollableViewProvider’ has virtual functions but non-virtual destructor
../../../../dist/include/layout/nsIScrollableFrame.h:56: warning: ‘class
nsIScrollableFrame’ has virtual functions but non-virtual destructor
../../../../dist/include/layout/nsIStatefulFrame.h:15: warning: ‘class
nsIStatefulFrame’ has virtual functions but non-virtual destructor
../../../../dist/include/layout/nsIPresState.h:11: warning: ‘class nsIPresState’
has virtual functions but non-virtual destructor
../../../../dist/include/layout/nsILayoutHistoryState.h:13: warning: ‘class
nsILayoutHistoryState’ has virtual functions but non-virtual destructor
../../../../dist/include/content/nsIXBLService.h:65: warning: ‘class
nsIXBLService’ has virtual functions but non-virtual destructor
nsTableFrame.cpp: In member function ‘void
nsTableFrame::SetColumnDimensions(nscoord, const nsMargin&)’:
nsTableFrame.cpp:1618: warning: unused variable ‘numCols’
nsTableFrame.cpp: In member function ‘void BCCellBorder::Reset(PRUint32, PRUint32)’:
nsTableFrame.cpp:5428: warning: converting negative value ‘-0x000000001’ to
‘PRUint16’
nsTableFrame.cpp: In member function ‘void
nsTableFrame::PaintBCBorders(nsIPresContext*, nsIRenderingContext&, const nsRect&)’:
nsTableFrame.cpp:6773: warning: ‘ownerSide’ may be used uninitialized in this
function
nsTableFrame.cpp:6776: warning: ‘isSegStart’ may be used uninitialized in this
function
nsTableFrame.cpp:6772: warning: ‘borderOwner’ may be used uninitialized in this
function
nsTableFrame.cpp:6778: warning: ‘bevel’ may be used uninitialized in this function
nsTableFrame.cpp: In member function ‘void
nsTableFrame::CalcBCBorders(nsIPresContext&)’:
nsTableFrame.cpp:5656: error: Invalid operand to unary operator
-iD.57042_1993;

nsTableFrame.cpp:5656: error: Invalid operand to unary operator
-iD.57056_1973;

nsTableFrame.cpp:5656: error: Invalid operand to unary operator
-iD.57070_1837;

nsTableFrame.cpp:5656: error: Invalid operand to unary operator
-iD.57084_1849;

nsTableFrame.cpp:5656: internal compiler error: verify_stmts failed.
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.suse.de/feedback> for instructions.
Comment 1 Andreas Jaeger 2005-04-10 15:34:38 UTC
Created attachment 8580 [details]
Preprocessed source file - i586 compilation
Comment 2 Andrew Pinski 2005-04-10 20:32:01 UTC
This was fixed on the mainline by:
2005-03-16  Daniel Berlin  <dberlin@dberlin.org>

        Fix PR tree-optimization/20490

        * tree-ssa-pre.c (create_expression_by_pieces): Use
        force_gimple_operand on result of fold.
Comment 3 Daniel Berlin 2005-04-11 02:54:09 UTC
Somebody  must have moved the fold-const changes  that caused this over to the
4.0 branch.

Mark, do you want this fix in 4.0?
It's been in mainline for a while now.
It's incredibly low risk.  It only changes how we build the statements, not what
it contains:

IE we now force the result of fold to be GIMPLE by splitting it into multiple
statements if necessary, whereas we always assumed it was GIMPLE before (which
is no longer something we can count on).

The patch can be found here
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-pre.c.diff?r1=2.70&r2=2.71


Comment 4 Mark Mitchell 2005-04-11 04:27:00 UTC
Subject: Re:  [4.0 Regression] internal compiler
 error: verify_stmts failed.

dberlin at gcc dot gnu dot org wrote:
> ------- Additional Comments From dberlin at gcc dot gnu dot org  2005-04-11 02:54 -------
> Somebody  must have moved the fold-const changes  that caused this over to the
> 4.0 branch.
> 
> Mark, do you want this fix in 4.0?

Not sure yet, but I've added it to my list of patches to consider.

Thanks!

Comment 5 Volker Reichelt 2005-04-13 16:48:43 UTC
Confirmed.

Here's a reduced testcase (compile with -O2):

=======================================================
typedef int INT;

int i;

int foo(INT j) { return (i>0 ? (i<3?j:0) : i) - i; }
=======================================================

(The stupid typedef is indeed crucial.)
Comment 6 Mark Mitchell 2005-04-17 02:44:49 UTC
This patch is OK for 4.0.0 RC2.  Please apply.
Comment 7 Daniel Berlin 2005-04-17 23:40:20 UTC
Committed to 4.0 branch, as okay'd by mark, and fixed
Comment 8 GCC Commits 2005-04-17 23:40:47 UTC
Subject: Bug 20929

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-4_0-branch
Changes by:	dberlin@gcc.gnu.org	2005-04-17 23:40:32

Modified files:
	gcc            : ChangeLog tree-ssa-pre.c 

Log message:
	2005-04-17  Daniel Berlin  <dberlin@dberlin.org>
	
	Fix PR tree-optimization/20490
	Fix PR tree-optimization/20929
	
	* tree-ssa-pre.c (create_expression_by_pieces): Use
	force_gimple_operand on result of fold, value number
	gimple_operand result.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.168&r2=2.7592.2.169
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-pre.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.65.4.1&r2=2.65.4.2