[llvm-commits] [llvm-gcc-4.2] r46004 - in /llvm-gcc-4.2/trunk/gcc: config/i386/i386.c config/i386/llvm-i386-target.h llvm-abi.h
Evan Cheng
evan.cheng at apple.com
Tue Jan 15 00:18:26 PST 2008
Author: evancheng
Date: Tue Jan 15 02:18:25 2008
New Revision: 46004
URL: http://llvm.org/viewvc/llvm-project?rev=46004&view=rev
Log:
Make use of existing gcc facility to determine if an aggregate argument should be passed ByVal in x86-64 mode.
Modified:
llvm-gcc-4.2/trunk/gcc/config/i386/i386.c
llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h
llvm-gcc-4.2/trunk/gcc/llvm-abi.h
Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/i386.c?rev=46004&r1=46003&r2=46004&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/i386/i386.c (original)
+++ llvm-gcc-4.2/trunk/gcc/config/i386/i386.c Tue Jan 15 02:18:25 2008
@@ -21524,4 +21524,18 @@
return DW_EH_PE_absptr;
}
+
+/* APPLE LOCAL begin LLVM */
+
+/* Target hook for llvm-abi.h. It returns true if an aggregate of the
+ specified type should be passed in memory. This is only called for
+ x86-64. */
+int llvm_x86_64_should_pass_aggregate_in_memory(tree type) {
+ int needed_intregs, needed_sseregs;
+ enum machine_mode mode = type_natural_mode (type);
+ return !examine_argument(mode, type, 1, &needed_intregs, &needed_sseregs);
+}
+
+/* APPLE LOCAL end LLVM */
+
#include "gt-i386.h"
Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h?rev=46004&r1=46003&r2=46004&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h (original)
+++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h Tue Jan 15 02:18:25 2008
@@ -62,8 +62,11 @@
} \
}
+extern int llvm_x86_64_should_pass_aggregate_in_memory(tree);
+
#define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \
- (!TARGET_64BIT)
+ ((!TARGET_64BIT) \
+ ? true : llvm_x86_64_should_pass_aggregate_in_memory(X))
/* LLVM LOCAL end (ENTIRE FILE!) */
Modified: llvm-gcc-4.2/trunk/gcc/llvm-abi.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-abi.h?rev=46004&r1=46003&r2=46004&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-abi.h (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-abi.h Tue Jan 15 02:18:25 2008
@@ -131,7 +131,7 @@
#endif
// LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR - Return true if this aggregate
-// value should be passed by reference by passing its address with the byval
+// value should be passed by value, i.e. passing its address with the byval
// attribute bit set. The default is false.
#ifndef LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X)
#define LLVM_SHOULD_PASS_AGGREGATE_USING_BYVAL_ATTR(X) \
More information about the llvm-commits
mailing list