[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 03:36:17 PDT 2009


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.  Also, a memcpy/memmove of i33 may not the same as a load+store, due to
the extra bits off the end (load of an i33 is only defined if the original
value was stored using an i33 store - this way we can assume any extra bits
are zero, because the store puts zero there; if someone wanted to avoid this
undefinedness they might have used memcpy/memmove).

> +    // 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.

Maybe the above comment belongs here, I don't understand how this code works
so I'm just guessing :)

Ciao,

Duncan.



More information about the llvm-commits mailing list