[llvm-commits] [llvm] r66366 - in /llvm/trunk: lib/Transforms/Scalar/ScalarReplAggregates.cpp test/Transforms/ScalarRepl/2008-06-22-LargeArray.ll test/Transforms/ScalarRepl/vector_memcpy.ll
Duncan Sands
baldrick at free.fr
Sun Mar 8 12:48:37 PDT 2009
Hi Nate,
> >>> a load+store of a floating point type might trap, while a memcpy/
> >>> memmove would
> >>> not.
> >>
> >> How so? Load of double works on any bit pattern, so long as the
> >> address is correct and the alignment is right etc.
> >
> > That's not true for x87 FP: SNaNs either crash or get silently changed
> > into QNaNs, depending on the control word. I haven't read the code
> > carefully enough to see whether that applies here, though.
>
> I guess the question is, is that also the behavior that we want for
> LLVM IR? I'm not sure the body of existing code which depends on
> trapping on an x87 SNaN load is large enough or important enough to
> automatically rule out this transformation.
x86 has other problems when copying using floats. This came up in llvm-gcc,
see http://llvm.org/PR2680 Quoting from the bug report "Bottom line, 387 FP
copies can't be relied on to do bitwise copies".
Ciao,
Duncan.
More information about the llvm-commits
mailing list