[llvm-commits] [llvm-gcc-4.2] r126750 - in /llvm-gcc-4.2/trunk/gcc/config/arm: llvm-arm-target.h llvm-arm.cpp

Stuart Hastings stuart at apple.com
Tue Mar 1 08:58:00 PST 2011


Author: stuart
Date: Tue Mar  1 10:58:00 2011
New Revision: 126750

URL: http://llvm.org/viewvc/llvm-project?rev=126750&view=rev
Log:
Turn on ARM byval support in LLVM-GCC; followup to r126655.  Radar
7662569.

Modified:
    llvm-gcc-4.2/trunk/gcc/config/arm/llvm-arm-target.h
    llvm-gcc-4.2/trunk/gcc/config/arm/llvm-arm.cpp

Modified: llvm-gcc-4.2/trunk/gcc/config/arm/llvm-arm-target.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/arm/llvm-arm-target.h?rev=126750&r1=126749&r2=126750&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/arm/llvm-arm-target.h (original)
+++ llvm-gcc-4.2/trunk/gcc/config/arm/llvm-arm-target.h Tue Mar  1 10:58:00 2011
@@ -98,6 +98,13 @@
 #define LLVM_SHOULD_NOT_USE_SHADOW_RETURN(X, CC) \
     llvm_arm_should_pass_or_return_aggregate_in_regs((X), (CC))
 
+extern
+bool llvm_arm_should_pass_aggregate_in_memory(tree, const Type *);
+
+#define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X, TY)            \
+   (llvm_arm_should_pass_aggregate_in_memory((X), (TY)))
+
+
 /* Vectors bigger than 128 are returned using sret.  */
 #define LLVM_SHOULD_RETURN_VECTOR_AS_SHADOW(X, isBuiltin) \
   (TREE_INT_CST_LOW(TYPE_SIZE(X)) > 128)

Modified: llvm-gcc-4.2/trunk/gcc/config/arm/llvm-arm.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/arm/llvm-arm.cpp?rev=126750&r1=126749&r2=126750&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/arm/llvm-arm.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/config/arm/llvm-arm.cpp Tue Mar  1 10:58:00 2011
@@ -2880,4 +2880,14 @@
   return result && !TREE_ADDRESSABLE(TreeType);
 }
 
+/* Target hook for llvm-abi.h. It returns true if an aggregate of the
+   specified type should be passed in memory. */
+bool llvm_arm_should_pass_aggregate_in_memory(tree TreeType, const Type *Ty) {
+  enum machine_mode Mode = TYPE_MODE(TreeType);
+  HOST_WIDE_INT Bytes =
+    (Mode == BLKmode) ? int_size_in_bytes(TreeType) : (int) GET_MODE_SIZE(Mode);
+
+  return Bytes > 32;
+}
+
 /* LLVM LOCAL end (ENTIRE FILE!)  */





More information about the llvm-commits mailing list