Because of the decomposition of structures in tree-ssa, the middle end is emitting RTL code that can read uninitialized registers. On IA-64, this can result in a NaT consumption fault if the uninitialized register has its NaT bit set.
Before tree-ssa, we would have had a constructor, and store_constructor takes pains to ensure that a register is initialized to zero before we start setting fields in it. Since we do not yet have speculation support in the IA-64 backend, this problem will be very hard to trigger without a synthetic example. There is some hand written code in glibc that uses speculation, and hence can generate NaT bits. Also, there is code in the kernel that can generate NaT bits. -- Summary: IA-64 NaT consumption faults due to uninitialized register reads Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: wilson at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org GCC target triplet: ia64-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21111