http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51771
Bug #: 51771 Summary: trans-mem: abnormal edges get lost or corrupted Classification: Unclassified Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: torv...@gcc.gnu.org CC: al...@gcc.gnu.org, r...@gcc.gnu.org For each call to libitm we create an abnormal edge back to the transaction's begin, which models that libitm could restart. Those edges seem to be intact during the middle-end but get lost or corrupted somewhere after that. This leads to miscompilation of STAMP Genome on x86_64, for example. For 4.7, we can mark _ITM_beginTransaction as returns-twice. This seems to work but isn't optimal, so we should fix the handling of abnormal edges for 4.8.