[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

Nate Begeman natebegeman at mac.com
Sun Mar 8 12:25:15 PDT 2009


On Mar 8, 2009, at 11:55 AM, Eli Friedman wrote:

> On Sun, Mar 8, 2009 at 10:41 AM, Chris Lattner <clattner at apple.com>  
> wrote:
>> On Mar 8, 2009, at 3:36 AM, Duncan Sands wrote:
>>> Hi Chris,
>>>
>>>> +    // If this is a memcpy or memmove into or out of the whole
>>>> allocation, we
>>>> +    // can handle it like a load or store of the scalar type.
>>>
>>> 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.

Nate



More information about the llvm-commits mailing list