mirror of git://gcc.gnu.org/git/gcc.git
re PR target/58792 (ICE at mode-switching.c:421 when compiling clang lib/AST/MicrosoftCXXABI.cpp)
PR target/58792 * config/i386/i386.c (ix86_function_value_regno): Add DX_REG, ST1_REG and XMM1_REG for 32bit and 64bit targets. Also add DI_REG and SI_REG for 64bit SYSV ABI targets. From-SVN: r203857
This commit is contained in:
parent
c07757e536
commit
6eb793dd0f
|
|
@ -1,3 +1,10 @@
|
||||||
|
2013-10-19 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
|
PR target/58792
|
||||||
|
* config/i386/i386.c (ix86_function_value_regno): Add DX_REG,
|
||||||
|
ST1_REG and XMM1_REG for 32bit and 64bit targets. Also add DI_REG
|
||||||
|
and SI_REG for 64bit SYSV ABI targets.
|
||||||
|
|
||||||
2013-10-19 Uros Bizjak <ubizjak@gmail.com>
|
2013-10-19 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
* mode-switching.c (create_pre_exit): Rename maybe_builtin_apply
|
* mode-switching.c (create_pre_exit): Rename maybe_builtin_apply
|
||||||
|
|
|
||||||
|
|
@ -7393,9 +7393,15 @@ ix86_function_value_regno_p (const unsigned int regno)
|
||||||
switch (regno)
|
switch (regno)
|
||||||
{
|
{
|
||||||
case AX_REG:
|
case AX_REG:
|
||||||
|
case DX_REG:
|
||||||
return true;
|
return true;
|
||||||
|
case DI_REG:
|
||||||
|
case SI_REG:
|
||||||
|
return TARGET_64BIT && ix86_abi != MS_ABI;
|
||||||
|
|
||||||
case FIRST_FLOAT_REG:
|
/* Complex values are returned in %st(0)/%st(1) pair. */
|
||||||
|
case ST0_REG:
|
||||||
|
case ST1_REG:
|
||||||
/* TODO: The function should depend on current function ABI but
|
/* TODO: The function should depend on current function ABI but
|
||||||
builtins.c would need updating then. Therefore we use the
|
builtins.c would need updating then. Therefore we use the
|
||||||
default ABI. */
|
default ABI. */
|
||||||
|
|
@ -7403,10 +7409,12 @@ ix86_function_value_regno_p (const unsigned int regno)
|
||||||
return false;
|
return false;
|
||||||
return TARGET_FLOAT_RETURNS_IN_80387;
|
return TARGET_FLOAT_RETURNS_IN_80387;
|
||||||
|
|
||||||
case FIRST_SSE_REG:
|
/* Complex values are returned in %xmm0/%xmm1 pair. */
|
||||||
|
case XMM0_REG:
|
||||||
|
case XMM1_REG:
|
||||||
return TARGET_SSE;
|
return TARGET_SSE;
|
||||||
|
|
||||||
case FIRST_MMX_REG:
|
case MM0_REG:
|
||||||
if (TARGET_MACHO || TARGET_64BIT)
|
if (TARGET_MACHO || TARGET_64BIT)
|
||||||
return false;
|
return false;
|
||||||
return TARGET_MMX;
|
return TARGET_MMX;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue