From: Danny Smith Date: Mon, 31 Jan 2005 05:49:07 +0000 (+0000) Subject: re PR target/19704 (ICE for tail call of regparm 3 and dllimport) X-Git-Tag: releases/gcc-4.0.0~1174 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6cc37e7e24bb91d009d0a0c9ae9f37dd3c329d74;p=thirdparty%2Fgcc.git re PR target/19704 (ICE for tail call of regparm 3 and dllimport) PR target/19704 * config/i386/i386.c (ix86_function_ok_for_sibcall): Also check that dllimport'd functions do not use all call-clobbered registers to pass parameters. From-SVN: r94467 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 218a95aa7cd0..e66f1f8a768d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-01-31 Danny Smith + + PR target/19704 + * config/i386/i386.c (ix86_function_ok_for_sibcall): Also check + that dllimport'd functions do not use all call-clobbered registers + to pass parameters. + 2005-01-30 Richard Henderson PR 19696 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 4b6b3f20db12..f72bd3d67885 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -1678,6 +1678,13 @@ ix86_function_ok_for_sibcall (tree decl, tree exp) } } +#if TARGET_DLLIMPORT_DECL_ATTRIBUTES + /* Dllimport'd functions are also called indirectly. */ + if (decl && lookup_attribute ("dllimport", DECL_ATTRIBUTES (decl)) + && ix86_function_regparm (TREE_TYPE (decl), NULL) >= 3) + return false; +#endif + /* Otherwise okay. That also includes certain types of indirect calls. */ return true; }