[LLVMdev] [llvm-commits] [llvm] r166875 - in /llvm/trunk: lib/Transforms/Scalar/LoopIdiomRecognize.cpp test/Transforms/LoopIdiom/basic.ll

Chris Lattner clattner at apple.com
Sat Oct 27 21:11:13 PDT 2012


I think it would be possible according to the gcc spec, but still a bad idea.  We regularly get bug reports from people using freestanding and getting grumpy about getting calls to memcpy for struct copies...

I think that if someone is asking for freestanding we should just forget about any performance win for stuff like this and be as least surprising as possible.

-Chris

On Oct 27, 2012, at 10:32 AM, Benjamin Kramer <benny.kra at gmail.com> wrote:

> 
> On 27.10.2012, at 18:24, Benjamin Kramer <benny.kra at gmail.com> wrote:
> 
>> 
>> On 27.10.2012, at 18:15, Sean Silva <silvas at purdue.edu> wrote:
>> 
>>> How does this affect freestanding implementations?
>> 
>> This transform is disabled with -fno-builtin or -ffreestanding.
> 
> Thinking a bit more about this, it looks like the way -ffreestanding is implemented in clang is too conservative. Currently -ffreestanding disables optimizing all builtin functions, just like -fno-builtin. However, the GCC manual says:
> 
>> GCC requires the freestanding environment provide memcpy,memmove, memset and memcmp.
> 
> Should we enable those functions selectively in a freestanding environment? LLVM will start optimizing calls to them, and turn loops into one of those functions if possible. I'm not sure if that behavior is acceptable with -ffreestanding.
> 
> - Ben
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-dev mailing list