x.h
---
class cObject {
public:
    cObject *firstchildp;
};
class cHead : public cObject {
public:
    cObject *find(const char *objname) const;
};

chead.min.cpp:
--------------
#include "x.h"
cObject *cHead::find(const char *objname) const
{
    return firstchildp;
}
class cNetworkType : public cObject { };
cNetworkType *networktype;

slaveapp.min.cpp:
-----------------
#include "x.h"
extern cHead networks;
class cNetworkType;
inline cNetworkType *findNetwork(const char *s)   
{
  return (cNetworkType *)networks.find(s);
}
int run(const char *opt_network_name)
{
  cNetworkType *network = findNetwork(opt_network_name);
  if (!network)
    throw 1;
}

> g++ -c slaveapp.min.cpp chead.min.cpp -O2 -flto
> lto1 -quiet slaveapp.min.o chead.min.o -o /dev/null -O2
In file included from :2:0:
slaveapp.min.cpp: In function 'findNetwork':
slaveapp.min.cpp:4:22: error: non-trivial conversion at assignment
struct cNetworkType *
struct cObject *
D.1922_2 = D.1931_5;

slaveapp.min.cpp:4:22: internal compiler error: verify_stmts failed
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.


-- 
           Summary: error: non-trivial conversion at assignment
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code, ice-checking
          Severity: normal
          Priority: P3
         Component: lto
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rguenth at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41808

Reply via email to