summaryrefslogtreecommitdiff
path: root/gcc/config/i386/winnt.c
diff options
context:
space:
mode:
authordannysmith <dannysmith@138bc75d-0d04-0410-961f-82ee72b054a4>2003-09-18 21:16:02 +0000
committerdannysmith <dannysmith@138bc75d-0d04-0410-961f-82ee72b054a4>2003-09-18 21:16:02 +0000
commita155f1e5cea8b0a1d58de4ff034cf3ce6b159ecb (patch)
tree7b37f0334c64b712dec59da9e2fe7960ca5b73d5 /gcc/config/i386/winnt.c
parent8a94dd75400820e434541236d4eca131bb788e82 (diff)
downloadgcc-a155f1e5cea8b0a1d58de4ff034cf3ce6b159ecb.tar.gz
* config/i386/winnt.c (gen_stdcall_suffix): Quit summation of
total parm size if a parm has incomplete type. (gen_fastcall_suffix): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71543 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/winnt.c')
-rw-r--r--gcc/config/i386/winnt.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c
index 076a2934a78..11a93a42ff1 100644
--- a/gcc/config/i386/winnt.c
+++ b/gcc/config/i386/winnt.c
@@ -420,7 +420,10 @@ gen_fastcall_suffix (tree decl)
{
tree formal_type = TYPE_ARG_TYPES (TREE_TYPE (decl));
- while (TREE_VALUE (formal_type) != void_type_node)
+ /* Quit if we hit an incomplete type. Error is reported
+ by convert_arguments in c-typeck.c or cp/typeck.c. */
+ while (TREE_VALUE (formal_type) != void_type_node
+ && COMPLETE_TYPE_P (TREE_VALUE (formal_type)))
{
int parm_size
= TREE_INT_CST_LOW (TYPE_SIZE (TREE_VALUE (formal_type)));
@@ -458,7 +461,10 @@ gen_stdcall_suffix (tree decl)
{
tree formal_type = TYPE_ARG_TYPES (TREE_TYPE (decl));
- while (TREE_VALUE (formal_type) != void_type_node)
+ /* Quit if we hit an incomplete type. Error is reported
+ by convert_arguments in c-typeck.c or cp/typeck.c. */
+ while (TREE_VALUE (formal_type) != void_type_node
+ && COMPLETE_TYPE_P (TREE_VALUE (formal_type)))
{
int parm_size
= TREE_INT_CST_LOW (TYPE_SIZE (TREE_VALUE (formal_type)));