Revision: 127367 Author: johannes Date: 2007-05-17 16:47:22 -0700 (Thu, 17 May 2007)
Log Message: ----------- Make ARM more aggressive about using target-dependent memcpy expansion for aggregate copy. Modified Paths: -------------- apple-local/branches/llvm/gcc/config/arm/arm.h apple-local/branches/llvm/gcc/llvm-convert.cpp Modified: apple-local/branches/llvm/gcc/config/arm/arm.h =================================================================== --- apple-local/branches/llvm/gcc/config/arm/arm.h 2007-05-17 21:04:42 UTC (rev 127366) +++ apple-local/branches/llvm/gcc/config/arm/arm.h 2007-05-17 23:47:22 UTC (rev 127367) @@ -2923,4 +2923,8 @@ #define LLVM_OVERRIDE_TARGET_ARCH() \ (TARGET_THUMB ? "thumb" : "") +/* Doing struct copy by partial-word loads and stores is not a good idea on ARM. */ +#define TARGET_LLVM_MIN_BYTES_COPY_BY_MEMCPY 4 +/* APPLE LOCAL end llvm */ + #endif /* ! GCC_ARM_H */ Modified: apple-local/branches/llvm/gcc/llvm-convert.cpp =================================================================== --- apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-05-17 21:04:42 UTC (rev 127366) +++ apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-05-17 23:47:22 UTC (rev 127367) @@ -1120,6 +1120,10 @@ } } +#ifndef TARGET_LLVM_MIN_BYTES_COPY_BY_MEMCPY +#define TARGET_LLVM_MIN_BYTES_COPY_BY_MEMCPY 64 +#endif + /// EmitAggregateCopy - Copy the elements from SrcPtr to DestPtr, using the /// GCC type specified by GCCType to know which elements to copy. void TreeToLLVM::EmitAggregateCopy(Value *DestPtr, Value *SrcPtr, tree type, @@ -1129,7 +1133,8 @@ // If the type is small, copy the elements instead of using a block copy. if (TREE_CODE(TYPE_SIZE(type)) == INTEGER_CST && - TREE_INT_CST_LOW(TYPE_SIZE_UNIT(type)) < 64) { + TREE_INT_CST_LOW(TYPE_SIZE_UNIT(type)) < + TARGET_LLVM_MIN_BYTES_COPY_BY_MEMCPY) { const Type *LLVMTy = ConvertType(type); if (CountAggregateElements(LLVMTy) <= 8) { DestPtr = CastToType(Instruction::BitCast, DestPtr, _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits