PR target/35084
* config/i386/i386.c (ix86_function_sseregparm): Add an arg
to indicate if a message should be generated.
(init_cumulative_args): Updated.
(function_value_32): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@132122
138bc75d-0d04-0410-961f-
82ee72b054a4
+2008-02-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/35084
+ * config/i386/i386.c (ix86_function_sseregparm): Add an arg
+ to indicate if a message should be generated.
+ (init_cumulative_args): Updated.
+ (function_value_32): Likewise.
+
2008-02-05 Joseph Myers <joseph@codesourcery.com>
* doc/include/texinfo.tex: Update to version 2008-02-04.16.
2008-02-05 Joseph Myers <joseph@codesourcery.com>
* doc/include/texinfo.tex: Update to version 2008-02-04.16.
indirectly or considering a libcall. Otherwise return 0. */
static int
indirectly or considering a libcall. Otherwise return 0. */
static int
-ix86_function_sseregparm (const_tree type, const_tree decl)
+ix86_function_sseregparm (const_tree type, const_tree decl, bool warn)
{
gcc_assert (!TARGET_64BIT);
{
gcc_assert (!TARGET_64BIT);
- if (decl)
- error ("Calling %qD with attribute sseregparm without "
- "SSE/SSE2 enabled", decl);
- else
- error ("Calling %qT with attribute sseregparm without "
- "SSE/SSE2 enabled", type);
+ if (warn)
+ {
+ if (decl)
+ error ("Calling %qD with attribute sseregparm without "
+ "SSE/SSE2 enabled", decl);
+ else
+ error ("Calling %qT with attribute sseregparm without "
+ "SSE/SSE2 enabled", type);
+ }
/* Set up the number of SSE registers used for passing SFmode
and DFmode arguments. Warn for mismatching ABI. */
/* Set up the number of SSE registers used for passing SFmode
and DFmode arguments. Warn for mismatching ABI. */
- cum->float_in_sse = ix86_function_sseregparm (fntype, fndecl);
+ cum->float_in_sse = ix86_function_sseregparm (fntype, fndecl, true);
SSE math is enabled or for functions with sseregparm attribute. */
if ((fn || fntype) && (mode == SFmode || mode == DFmode))
{
SSE math is enabled or for functions with sseregparm attribute. */
if ((fn || fntype) && (mode == SFmode || mode == DFmode))
{
- int sse_level = ix86_function_sseregparm (fntype, fn);
+ int sse_level = ix86_function_sseregparm (fntype, fn, false);
if ((sse_level >= 1 && mode == SFmode)
|| (sse_level == 2 && mode == DFmode))
regno = FIRST_SSE_REG;
if ((sse_level >= 1 && mode == SFmode)
|| (sse_level == 2 && mode == DFmode))
regno = FIRST_SSE_REG;