aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorWaldek Hebisch <hebisch@math.uni.wroc.pl>2003-10-23 10:03:13 +0200
committerAndreas Jaeger <aj@gcc.gnu.org>2003-10-23 10:03:13 +0200
commit448ec26cf73c72bc4293f99d56ac465b0d48f11d (patch)
tree3ef9b0ddadb1e1b58a572d2d811d7aa9bfe2b789 /gcc
parent4b5aa8815e853a213360c7e35c0a2dad4ba9897f (diff)
downloadgcc-448ec26cf73c72bc4293f99d56ac465b0d48f11d.zip
gcc-448ec26cf73c72bc4293f99d56ac465b0d48f11d.tar.gz
gcc-448ec26cf73c72bc4293f99d56ac465b0d48f11d.tar.bz2
i386.c (classify_argument): Handle SET_TYPE.
2003-10-22 Waldek Hebisch <hebisch@math.uni.wroc.pl> * config/i386/i386.c (classify_argument): Handle SET_TYPE. [[Split portion of a mixed commit.]] From-SVN: r72838.2
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c25
2 files changed, 30 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3f00fc4..1bf13c0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2003-10-22 Waldek Hebisch <hebisch@math.uni.wroc.pl>
+
+ * config/i386/i386.c (classify_argument): Handle SET_TYPE.
+
2003-10-22 Chris Demetriou <cgd@broadcom.com>
* configure.in: In --enable-generated-files-in-srcdir option
@@ -186,7 +190,7 @@
* tree.c (build1): Fix off-by-one error.
-2003-09-28 Robert Millan <robertmh@gnu.org>
+2003-10-21 Robert Millan <robertmh@gnu.org>
* config/i386/kfreebsdgnu.h: New. i386-*-kfreebsd-gnu definitions.
* config/kfreebsdgnu.h: New. *-*-kfreebsd-gnu definitions.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index cfdc7d2..a8b2ea7 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -2080,6 +2080,31 @@ classify_argument (enum machine_mode mode, tree type,
}
}
}
+ else if (TREE_CODE (type) == SET_TYPE)
+ {
+ if (bytes <= 4)
+ {
+ classes[0] = X86_64_INTEGERSI_CLASS;
+ return 1;
+ }
+ else if (bytes <= 8)
+ {
+ classes[0] = X86_64_INTEGER_CLASS;
+ return 1;
+ }
+ else if (bytes <= 12)
+ {
+ classes[0] = X86_64_INTEGER_CLASS;
+ classes[1] = X86_64_INTEGERSI_CLASS;
+ return 2;
+ }
+ else
+ {
+ classes[0] = X86_64_INTEGER_CLASS;
+ classes[1] = X86_64_INTEGER_CLASS;
+ return 2;
+ }
+ }
else
abort ();