aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-03-22 15:09:29 -0800
committerRichard Henderson <rth@gcc.gnu.org>2000-03-22 15:09:29 -0800
commitea2e5dbeca4179d9c4ab0544d17413b4b2c0715e (patch)
treecd5b3be82233e7e4fa30070ce38808522b8e6bb3 /gcc
parent5d64361bdcda957ce1bb002593d3fb2c0de7df3d (diff)
downloadgcc-ea2e5dbeca4179d9c4ab0544d17413b4b2c0715e.zip
gcc-ea2e5dbeca4179d9c4ab0544d17413b4b2c0715e.tar.gz
gcc-ea2e5dbeca4179d9c4ab0544d17413b4b2c0715e.tar.bz2
alpha.c (function_arg): Check for void_type_node before using MUST_PASS_IN_STACK.
* config/alpha/alpha.c (function_arg): Check for void_type_node before using MUST_PASS_IN_STACK. From-SVN: r32692
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/alpha/alpha.c9
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9fe40d1..4a08c32 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-03-21 Richard Henderson <rth@cygnus.com>
+
+ * config/alpha/alpha.c (function_arg): Check for void_type_node
+ before using MUST_PASS_IN_STACK.
+
2000-03-21 Stephane Carrez <stcarrez@worldnet.fr>
* regmove.c (combine_stack_adjustments_for_block): Check that
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 601c1d2..7c53f52 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -3697,10 +3697,15 @@ function_arg(cum, mode, type, named)
{
int basereg;
- if (cum >= 6 || MUST_PASS_IN_STACK (mode, type))
+ if (cum >= 6)
return NULL_RTX;
- if (FUNCTION_ARG_PASS_BY_REFERENCE (cum, mode, type, named))
+ /* VOID is passed as a special flag for "last argument". */
+ if (type == void_type_node)
+ basereg = 16;
+ else if (MUST_PASS_IN_STACK (mode, type))
+ return NULL_RTX;
+ else if (FUNCTION_ARG_PASS_BY_REFERENCE (cum, mode, type, named))
basereg = 16;
else if (TARGET_FPREGS
&& (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT