https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63813
Bug ID: 63813 Summary: [5 Regression][UBSAN] ICE in ubsan_type_descriptor, at ubsan.c:346 Product: gcc Version: 5.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: sanitizer Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org, jakub at gcc dot gnu.org, kcc at gcc dot gnu.org, mpolacek at gcc dot gnu.org With yesterdays's GCC, compiling our big code fails with: $ g++ -S -w -fsanitize=undefined -O1 poly21.ii poly21.ii: In member function ‘void sfm::PolygonBuilder::ProcessSingleExternalTopRight(const sfm::PolygonSingleEvent&)’: poly21.ii:23:8: internal compiler error: in ubsan_type_descriptor, at ubsan.c:346 void PolygonBuilder::ProcessSingleExternalTopRight ( ^ 0xcaaebc ubsan_type_descriptor(tree_node*, ubsan_print_style) ../../gcc/ubsan.c:346 0xcac58c ubsan_expand_null_ifn(gimple_stmt_iterator*) ../../gcc/ubsan.c:766 It was working on 7 November. ---------<cut>------------------------------- namespace sfm { class PolygonFragment { }; typedef long AttributeValue; class CrossingEvent { public: inline AttributeValue GetValue () const; }; class SingleCrossingEvent : public CrossingEvent { }; class PolygonSingleEvent : public SingleCrossingEvent { public: inline PolygonFragment &GetFragment () const; }; PolygonFragment &PolygonSingleEvent::GetFragment () const { return *reinterpret_cast <PolygonFragment *>(GetValue ()); } class PolygonBuilder { void ProcessSingleExternalTopRight (const PolygonSingleEvent &inEvent); inline void CloseExternal (PolygonFragment &ioLeft, PolygonFragment &ioRight); PolygonFragment *mCarryBelow; }; void PolygonBuilder::ProcessSingleExternalTopRight ( const PolygonSingleEvent &inEvent) { CloseExternal (*mCarryBelow, inEvent.GetFragment ()); } }