Take the following two files:
typedef struct _xmlDict xmlDict;
struct _xmlDict {
 int ref_counter;
};
void xmlDictCreate(void) {
  xmlDict * dict;
}
--- CUT ---
typedef struct _xmlDict xmlDict;
struct _xmlDoc {
  struct _xmlDict *dict;
};
void xmlAddEntity(struct _xmlDoc *a) {
  xmlDict * dict = a->dict;
  xmlHashCreateDict(0, dict);
}

--- CUT ---

Currently if the first file is included first it ICEs but if the second files
is done first on the command line, it works.
The ICE is:
lto1: error: non-trivial conversion at assignment
struct _xmlDict *
struct _xmlDict *
# VUSE <.MEM_3(D)>
dict_2 = a_1(D)->dict;


-- 
           Summary: ICE with lto and incomplete types
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: lto
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pinskia at gcc dot gnu dot org


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

Reply via email to