mirror of git://gcc.gnu.org/git/gcc.git
re PR rtl-optimization/78580 (Segfault in gcc with multilib (-m32) and -ffixed-*)
2016-12-21 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/78580 * ira-costs.c (find_costs_and_classes): Make regno_aclass translated into an allocno class. 2016-12-21 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/78580 * gcc.target/i386/pr78580.c: New. From-SVN: r243875
This commit is contained in:
parent
0dba79602a
commit
bc13623efe
|
|
@ -1,3 +1,9 @@
|
|||
2016-12-21 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
PR rtl-optimization/78580
|
||||
* ira-costs.c (find_costs_and_classes): Make regno_aclass
|
||||
translated into an allocno class.
|
||||
|
||||
2016-12-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR bootstrap/78817
|
||||
|
|
|
|||
|
|
@ -1846,14 +1846,19 @@ find_costs_and_classes (FILE *dump_file)
|
|||
short in -O0 code and so register pressure tends to be low.
|
||||
|
||||
Avoid that by ignoring the alternative class if the best
|
||||
class has plenty of registers. */
|
||||
regno_aclass[i] = best;
|
||||
class has plenty of registers.
|
||||
|
||||
The union class arrays give important classes and only
|
||||
part of it are allocno classes. So translate them into
|
||||
allocno classes. */
|
||||
regno_aclass[i] = ira_allocno_class_translate[best];
|
||||
else
|
||||
{
|
||||
/* Make the common class the biggest class of best and
|
||||
alt_class. */
|
||||
regno_aclass[i]
|
||||
= ira_reg_class_superunion[best][alt_class];
|
||||
alt_class. Translate the common class into an
|
||||
allocno class too. */
|
||||
regno_aclass[i] = (ira_allocno_class_translate
|
||||
[ira_reg_class_superunion[best][alt_class]]);
|
||||
ira_assert (regno_aclass[i] != NO_REGS
|
||||
&& ira_reg_allocno_class_p[regno_aclass[i]]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
2016-12-21 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
PR rtl-optimization/78580
|
||||
* gcc.target/i386/pr78580.c: New.
|
||||
|
||||
2016-12-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/77830
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
/* PR rtl-optimization/78580 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O0 -ffixed-ebx" } */
|
||||
|
||||
extern const signed char a;
|
||||
|
||||
int
|
||||
foo (signed char x)
|
||||
{
|
||||
return x;
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
foo (a);
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in New Issue