Author: evancheng
Date: Tue Jan 15 02:18:25 2008
New Revision: 46004
URL: http://llvm.org/viewvc/llvm-project?rev=46004view=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=46004r1=46003r2=46004view=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=46004r1=46003r2=46004view=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=46004r1=46003r2=46004view=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) \
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits