[llvm-commits] [llvm-gcc-4.2] r49732 - /llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp
Devang Patel
dpatel at apple.com
Tue Apr 15 11:11:08 PDT 2008
Author: dpatel
Date: Tue Apr 15 13:11:07 2008
New Revision: 49732
URL: http://llvm.org/viewvc/llvm-project?rev=49732&view=rev
Log:
Refactor code.
No expected change in behavior.
Modified:
llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp
Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp?rev=49732&r1=49731&r2=49732&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386.cpp Tue Apr 15 13:11:07 2008
@@ -744,6 +744,32 @@
return llvm_x86_64_should_pass_aggregate_in_memory(TreeType, Mode);
}
+/* llvm_x86_64_type_needs_multiple_regs - Return number of register classes
+ need by TREETYPE. Return 0 if TREETYPE does not need multiple registers.
+ This helper routine is used to determine LLVM type of the function
+ arguments as well as return values. */
+static int
+llvm_x86_64_type_needs_multiple_regs(enum machine_mode Mode, tree TreeType,
+ enum x86_64_reg_class Class[MAX_CLASSES]) {
+ int NumClasses = ix86_ClassifyArgument(Mode, TreeType, Class, 0);
+ if (!NumClasses)
+ return 0;
+
+ for (int i = 0; i < NumClasses; ++i) {
+ switch (Class[i]) {
+ case X86_64_X87_CLASS:
+ case X86_64_X87UP_CLASS:
+ case X86_64_COMPLEX_X87_CLASS:
+ return 0;
+ case X86_64_NO_CLASS:
+ return 0;
+ default:
+ break;
+ }
+ }
+ return NumClasses;
+}
+
/* Target hook for llvm-abi.h. It returns true if an aggregate of the
specified type should be passed in a number of registers of mixed types.
It also returns a vector of types that correspond to the registers used
@@ -755,7 +781,7 @@
enum machine_mode Mode = ix86_getNaturalModeForType(TreeType);
HOST_WIDE_INT Bytes =
(Mode == BLKmode) ? int_size_in_bytes(TreeType) : (int) GET_MODE_SIZE(Mode);
- int NumClasses = ix86_ClassifyArgument(Mode, TreeType, Class, 0);
+ int NumClasses = llvm_x86_64_type_needs_multiple_regs(Mode, TreeType, Class);
if (!NumClasses)
return false;
More information about the llvm-commits
mailing list