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

Reply via email to