Bug 68068 - [6 Regression] ICE: in get_untransformed_body, at cgraph.c:3268
Summary: [6 Regression] ICE: in get_untransformed_body, at cgraph.c:3268
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: middle-end (show other bugs)
Version: 6.0
: P3 normal
Target Milestone: 6.0
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-10-23 10:20 UTC by Markus Trippelsdorf
Modified: 2015-11-09 14:04 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2015-10-27 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Trippelsdorf 2015-10-23 10:20:17 UTC
Trying to build the Chromium browser with trunk shows:

markus@x4 Release % g++ -c -fno-strict-aliasing -O2 WebDOMActivityLogger.ii
../../third_party/WebKit/Source/web/WebDOMActivityLogger.cpp:102:1: internal compiler error: in get_untransformed_body, at cgraph.c:3268
 } // namespace blink
 ^
0x909133 cgraph_node::get_untransformed_body()
        ../../gcc/gcc/cgraph.c:3268
0x914c2f cgraph_node::expand()
        ../../gcc/gcc/cgraphunit.c:1955
0x9164e0 expand_all_functions
        ../../gcc/gcc/cgraphunit.c:2119
0x9164e0 symbol_table::compile()
        ../../gcc/gcc/cgraphunit.c:2472
0x918a57 symbol_table::compile()
        ../../gcc/gcc/cgraphunit.c:2536
0x918a57 symbol_table::finalize_compilation_unit()
        ../../gcc/gcc/cgraphunit.c:2562
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

Reducing...
Comment 1 Markus Trippelsdorf 2015-10-23 11:39:59 UTC
markus@x4 Release % cat WebDOMActivityLogger.ii
template <typename T> struct A {
  static void deletePtr(T *p1) { delete p1; }
};
template <typename> class PassOwnPtr;
template <typename T> PassOwnPtr<T> adoptPtr(T *);
template <typename T> class PassOwnPtr {
public:
  template <typename U> PassOwnPtr(U);
  ~PassOwnPtr() { A<T>::deletePtr(m_ptr); }
  T *m_ptr;
};

class WebDOMActivityLogger {
public:
  virtual ~WebDOMActivityLogger() {}
};
class V8DOMActivityLogger {
public:
  void operator delete(void *);
  virtual ~V8DOMActivityLogger() {}
  static void setActivityLogger(int, PassOwnPtr<V8DOMActivityLogger>);
};

WebDOMActivityLogger *a;
int b;
void setDOMActivityLogger() {
  V8DOMActivityLogger::setActivityLogger(b, adoptPtr(a));
}
Comment 2 Tom de Vries 2015-10-27 15:54:12 UTC
confirmed.
Comment 3 Markus Trippelsdorf 2015-11-09 14:04:08 UTC
Seems to be fixed. Closing.