Bug 45393 - [4.5 Regression] ICE in redirect_eh_edge_1, at tree-eh.c:2135
Summary: [4.5 Regression] ICE in redirect_eh_edge_1, at tree-eh.c:2135
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: middle-end (show other bugs)
Version: 4.5.1
: P3 normal
Target Milestone: 4.5.2
Assignee: Richard Biener
URL:
Keywords:
: 46214 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-08-24 06:48 UTC by Petr Sup
Modified: 2010-11-03 21:37 UTC (History)
5 users (show)

See Also:
Host:
Target:
Build:
Known to work: 4.4.4 4.5.2 4.6.0
Known to fail: 4.5.0 4.5.1
Last reconfirmed: 2010-08-25 08:43:49


Attachments
Preprocessed file (119.41 KB, text/plain)
2010-08-24 06:52 UTC, Petr Sup
Details
Preprocessed file (119.41 KB, application/octet-stream)
2010-08-24 06:56 UTC, Petr Sup
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Petr Sup 2010-08-24 06:48:18 UTC
When I tried to compile library Qt 4.6.3 in 64-bit mode, I got internal compiler error.

* Version gcc -v       
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-4.5.1/libexec/gcc/i386-pc-solaris2.10/4.5.1/lto-wrapper
Target: i386-pc-solaris2.10
Configured with: ../configure --prefix=/usr/local/gcc-4.5.1 --with-gnu-as --with-as=/opt/csw/bin/gas --without-gnu-ld --with-ld=/usr/ccs/bin/ld --enable-nls --with-included-gettext --with-libiconv-prefix=/opt/csw --with-x --with-mpfr=/usr/local --with-gmp=/usr/local --with-mpc=/usr/local --enable-libssp --enable-objc-gc --enable-threads=posix --enable-languages=c,c++,objc,obj-c++
Thread model: posix
gcc version 4.5.1 (GCC)

* System version: Solaris 10 10/09 s10x_u8wos_08a X86

* commandline:
g++ -c -m64 -save-temps -D_XOPEN_SOURCE=500 -D__EXTENSIONS__ -Wreturn-type -fno-strict-aliasing -ffunction-sections -fdata-sections -O2 -I/opt/csw/include -I/opt/csw/include/freetype2 -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DBUILDING_QT__=1 -DNDEBUG -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DBUILD_WEBKIT -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_DATABASE=1 -DENABLE_EVENTSOURCE=1 -DENABLE_OFFLINE_WEB_APPLICATIONS=1 -DENABLE_DOM_STORAGE=1 -DENABLE_ICONDATABASE=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_SQLITE=1 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_FILTERS=0 -DENABLE_XPATH=1 -DENABLE_WCSS=0 -DENABLE_WML=0 -DENABLE_SHARED_WORKERS=1 -DENABLE_WORKERS=1 -DENABLE_XHTMLMP=0 -DENABLE_DATAGRID=0 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_SVG_FOREIGN_OBJECT=1 -DENABLE_SVG_ANIMATION=1 -DENABLE_SVG_AS_IMAGE=1 -DENABLE_SVG_USE=1 -DENABLE_RUBY=1 -DENABLE_VIDEO=0 -DENABLE_DATALIST=1 -DENABLE_NETSCAPE_PLUGIN_API=1 -DENABLE_WEB_SOCKETS=0 -DENABLE_XSLT=1 -DWTF_USE_JAVASCRIPTCORE_BINDINGS=1 -DWTF_CHANGES=1 -DBUILDING_QT__ -DBUILDING_JavaScriptCore -DBUILDING_WTF -DENABLE_JIT=1 -DENABLE_YARR_JIT=1 -DENABLE_YARR=1 -DXP_UNIX -DSQLITE_CORE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DQT_NO_DEBUG -DQT_XMLPATTERNS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../../../mkspecs/solaris-g++-64 -I. -I../../../../include/QtCore -I../../../../include/QtNetwork -I../../../../include/QtGui -I../../../../include/QtXmlPatterns -I../../../../include -Ibridge/qt -Ipage/qt -Iplatform/graphics/qt -Iplatform/network/qt -Iplatform/qt -I../WebKit/qt/WebCoreSupport -I. -Iaccessibility -Ibindings/js -Ibridge -Ibridge/c -Icss -Idom -Idom/default -Iediting -Ihistory -Ihtml -Ihtml/canvas -Iinspector -Iloader -Iloader/appcache -Iloader/archive -Iloader/icon -Inotifications -Ipage -Ipage/animation -Iplatform -Iplatform/animation -Iplatform/graphics -Iplatform/graphics/filters -Iplatform/graphics/transforms -Iplatform/image-decoders -Iplatform/mock -Iplatform/network -Iplatform/sql -Iplatform/text -Iplugins -Irendering -Irendering/style -Istorage -Isvg -Isvg/animation -Isvg/graphics -Isvg/graphics/filters -Iwebsockets -Iwml -Iworkers -Ixml -Igenerated -I../JavaScriptCore -I../../webkit -I../JavaScriptCore/assembler -I../JavaScriptCore/bytecode -I../JavaScriptCore/bytecompiler -I../JavaScriptCore/debugger -I../JavaScriptCore/interpreter -I../JavaScriptCore/jit -I../JavaScriptCore/parser -I../JavaScriptCore/profiler -I../JavaScriptCore/runtime -I../JavaScriptCore/wrec -I../JavaScriptCore/wtf -I../JavaScriptCore/wtf/symbian -I../JavaScriptCore/wtf/unicode -I../JavaScriptCore/yarr -I../JavaScriptCore/API -I../JavaScriptCore/ForwardingHeaders -Igenerated -I../WebKit/qt/Api -I../../../../include/QtWebKit -I.rcc/release-shared -I../JavaScriptCore/pcre -I/Users/petrsup/tmp/qt-everywhere-opensource-src-4.6.3/src/3rdparty/webkit/WebKitBuild/Release/JavaScriptCore/tmp -I../../sqlite -I/usr/openwin/share/include -I.moc/release-shared -I/usr/sfw/include -o obj/release/Path.o platform/graphics/Path.cpp

* error message:
platform/graphics/Path.cpp: In static member function 'static WebCore::Path WebCore::Path::createEllipse(const WebCore::FloatPoint&, float, float)':
platform/graphics/Path.cpp:222:6: internal compiler error: in redirect_eh_edge_1, at tree-eh.c:2135
Comment 1 Petr Sup 2010-08-24 06:52:08 UTC
Created attachment 21552 [details]
Preprocessed file

Preprocessed file on which compiler failed.
Comment 2 Petr Sup 2010-08-24 06:56:20 UTC
Created attachment 21553 [details]
Preprocessed file

Preprocessed file on which compiler fails. (with correct mime-type)
Comment 3 Richard Biener 2010-08-24 08:52:36 UTC
Reducing.
Comment 4 Richard Biener 2010-08-24 09:12:56 UTC
Confirmed.  Reduced testcase, ICEs at -O1:

class FloatPoint;
class Path {
public:
    ~Path();
    void moveTo(const FloatPoint&);
    static void createEllipse(const FloatPoint& center, float rx, float ry);
};
extern "C" {
    extern float cosf (float);
    extern float sinf (float);
}
const float piFloat = static_cast<float>(3.14159265358979323846);
class FloatPoint {
public:
    FloatPoint(float x, float y) : m_x(x), m_y(y) { }
    float x() const;
    float y() const;
    float m_x, m_y;
};
void Path::createEllipse(const FloatPoint& center, float rx, float ry) 
{
  float cx = center.x();
  float cy = center.y();
  Path path;
  float x = cx;
  float y = cy;
  unsigned step = 0, num = 100;
  while (1) {
      float angle = static_cast<float>(step) / num * 2.0f * piFloat;
      x = cx + cosf(angle) * rx;
      y = cy + sinf(angle) * ry;
      step++;
      if (step == 1)
        path.moveTo(FloatPoint(x, y));
  }
}
Comment 5 H.J. Lu 2010-08-24 13:58:35 UTC
For gcc 4.3 and 4.4, I got

pr45393.cc:20: error: BB 4 can not throw but has EH edges
pr45393.cc:20: error: BB 5 can not throw but has EH edges
pr45393.cc:20: internal compiler error: verify_flow_info failed
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

when checking is enabled.
Comment 6 H.J. Lu 2010-08-24 15:38:23 UTC
Revision 146776:

http://gcc.gnu.org/ml/gcc-cvs/2009-04/msg01418.html

turns

pr45393.cc:20: error: BB 4 can not throw but has EH edges
pr45393.cc:20: error: BB 5 can not throw but has EH edges
pr45393.cc:20: internal compiler error: verify_flow_info failed
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

into

pr45393.cc:20: internal compiler error: in redirect_eh_edge, at tree-eh.c:2042
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
Comment 7 H.J. Lu 2010-08-24 19:16:03 UTC
(In reply to comment #5)
> For gcc 4.3 and 4.4, I got
> 
> pr45393.cc:20: error: BB 4 can not throw but has EH edges
> pr45393.cc:20: error: BB 5 can not throw but has EH edges
> pr45393.cc:20: internal compiler error: verify_flow_info failed
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See <http://gcc.gnu.org/bugs.html> for instructions.
> 
> when checking is enabled.
> 

This bug is triggered by revision 121052:

http://gcc.gnu.org/ml/gcc-cvs/2007-01/msg00757.html
Comment 8 Richard Biener 2010-08-25 08:43:49 UTC
Mine then.
Comment 9 Richard Biener 2010-08-25 10:48:05 UTC
Subject: Bug 45393

Author: rguenth
Date: Wed Aug 25 10:47:50 2010
New Revision: 163541

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=163541
Log:
2010-08-25  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/45393
	* tree-ssa-math-opts.c (execute_cse_sincos_1): Properly transfer
	and clean EH info.  Avoid SSA update.
	(execute_cse_sincos): Cleanup the CFG if it has changed.

	* g++.dg/torture/pr45393.C: New testcase.

Added:
    trunk/gcc/testsuite/g++.dg/torture/pr45393.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-ssa-math-opts.c

Comment 10 Richard Biener 2010-08-25 10:48:17 UTC
Fixed on trunk sofar.
Comment 11 hjl@gcc.gnu.org 2010-08-30 13:32:37 UTC
Subject: Bug 45393

Author: hjl
Date: Mon Aug 30 13:32:18 2010
New Revision: 163642

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=163642
Log:
Properly transfer and clean EH info when CSE sincos.

gcc/

2010-08-30  H.J. Lu  <hongjiu.lu@intel.com>

	Backport from mainline
	2010-08-25  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/45393
	* tree-ssa-math-opts.c (execute_cse_sincos_1): Properly transfer
	and clean EH info.  Avoid SSA update.
	(execute_cse_sincos): Cleanup the CFG if it has changed.

gcc/testsuite/

2010-08-30  H.J. Lu  <hongjiu.lu@intel.com>

	Backport from mainline
	2010-08-25  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/45393
	* g++.dg/torture/pr45393.C: New testcase.

Added:
    branches/gcc-4_5-branch/gcc/testsuite/g++.dg/torture/pr45393.C
Modified:
    branches/gcc-4_5-branch/gcc/ChangeLog
    branches/gcc-4_5-branch/gcc/testsuite/ChangeLog
    branches/gcc-4_5-branch/gcc/tree-ssa-math-opts.c

Comment 12 Richard Biener 2010-08-30 16:00:08 UTC
Fixed.
Comment 13 Andrew Pinski 2010-11-03 21:37:56 UTC
*** Bug 46214 has been marked as a duplicate of this bug. ***