Commit cd91371c by Ilya Tocar Committed by Ilya Tocar

re PR target/62120 ([ICE] ADDITIONAL_REGISTER_NAMES for [YZ]MMs, regno>8 should…

re PR target/62120 ([ICE] ADDITIONAL_REGISTER_NAMES for [YZ]MMs, regno>8 should be disable in 32-bit)

Fix PR 62120.

gcc/
2014-09-30  Ilya Tocar  <ilya.tocar@intel.com>

       PR middle-end/62120
       * varasm.c (decode_reg_name_and_count): Check availability for
       registers from ADDITIONAL_REGISTER_NAMES.

testsuite/
2014-09-30  Ilya Tocar  <ilya.tocar@intel.com>

       PR middle-end/62120
       * gcc.target/i386/avx512f-additional-reg-names.c: Use register valid
       in 32-bit mode.
       * gcc.target/i386/pr62120.c: New.

From-SVN: r215729
parent b355f52e
2014-09-30 Ilya Tocar <ilya.tocar@intel.com>
PR middle-end/62120
* varasm.c (decode_reg_name_and_count): Check availability for
registers from ADDITIONAL_REGISTER_NAMES.
2014-09-30 David Malcolm <dmalcolm@redhat.com> 2014-09-30 David Malcolm <dmalcolm@redhat.com>
PR plugins/63410 PR plugins/63410
2014-09-30 Ilya Tocar <ilya.tocar@intel.com>
PR middle-end/62120
* gcc.target/i386/avx512f-additional-reg-names.c: Use register valid
in 32-bit mode.
* gcc.target/i386/pr62120.c: New.
2014-09-30 James Greenhalgh <james.greenhalgh@arm.com> 2014-09-30 James Greenhalgh <james.greenhalgh@arm.com>
* gcc.target/aarch64/simd/vqdmullh_laneq_s16.c: New. * gcc.target/aarch64/simd/vqdmullh_laneq_s16.c: New.
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
void foo () void foo ()
{ {
register int zmm_var asm ("zmm9") __attribute__((unused)); register int zmm_var asm ("zmm6") __attribute__((unused));
__asm__ __volatile__("vxorpd %%zmm0, %%zmm0, %%zmm7\n" : : : "zmm7" ); __asm__ __volatile__("vxorpd %%zmm0, %%zmm0, %%zmm7\n" : : : "zmm7" );
} }
/* { dg-do compile } */
/* { dg-options "-mno-sse" } */
void foo ()
{
register int zmm_var asm ("ymm9");/* { dg-error "invalid register name" } */
register int zmm_var2 asm ("23");/* { dg-error "invalid register name" } */
}
...@@ -888,7 +888,7 @@ decode_reg_name_and_count (const char *asmspec, int *pnregs) ...@@ -888,7 +888,7 @@ decode_reg_name_and_count (const char *asmspec, int *pnregs)
if (asmspec[0] != 0 && i < 0) if (asmspec[0] != 0 && i < 0)
{ {
i = atoi (asmspec); i = atoi (asmspec);
if (i < FIRST_PSEUDO_REGISTER && i >= 0) if (i < FIRST_PSEUDO_REGISTER && i >= 0 && reg_names[i][0])
return i; return i;
else else
return -2; return -2;
...@@ -925,7 +925,8 @@ decode_reg_name_and_count (const char *asmspec, int *pnregs) ...@@ -925,7 +925,8 @@ decode_reg_name_and_count (const char *asmspec, int *pnregs)
for (i = 0; i < (int) ARRAY_SIZE (table); i++) for (i = 0; i < (int) ARRAY_SIZE (table); i++)
if (table[i].name[0] if (table[i].name[0]
&& ! strcmp (asmspec, table[i].name)) && ! strcmp (asmspec, table[i].name)
&& reg_names[table[i].number][0])
return table[i].number; return table[i].number;
} }
#endif /* ADDITIONAL_REGISTER_NAMES */ #endif /* ADDITIONAL_REGISTER_NAMES */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment