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.
Created attachment 8580 [details] Preprocessed source file - i586 compilation
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.
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
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!
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.)
This patch is OK for 4.0.0 RC2. Please apply.
Committed to 4.0 branch, as okay'd by mark, and fixed
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