With 4.3 branch at revision 143494 (probably also at least 135713, but that has local patches I don't care to revert to verify) the attached code puts the p->next load in the delay-slot of the NULL-check branch, yielding a NULL access. I'm guessing a reorg.c bug...
(It doesn't seem to happen at HEAD/4.4 at 143507 which instead has some weird and suboptimal cross-jumping behavior.) -- Summary: [4.3 Regression] NULL access in delay-slot Product: gcc Version: 4.3.3 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hp at gcc dot gnu dot org GCC host triplet: x86_64-unknown-linux-gnu, i686-unknown-linux-gnu GCC target triplet: cris-*-* and crisv32-*-* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38921