re PR rtl-optimization/66626 (gcc.dg/torture/stackalign/non-local-goto-5.c segfaults...
authorVladimir Makarov <vmakarov@redhat.com>
Thu, 16 Jul 2015 15:26:35 +0000 (15:26 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Thu, 16 Jul 2015 15:26:35 +0000 (15:26 +0000)
commitb81a2f0dbcf13e72503c05420e399d7edf23384b
tree8007d3add2ae6117cc209d5f0d76980482f23ff8
parenta7d1f3fedcddc06f8f4b3d761c928fb5de3a3082
re PR rtl-optimization/66626 (gcc.dg/torture/stackalign/non-local-goto-5.c segfaults w/ -mregparm=3 or -miamcu)

2015-07-16  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/66626
* ira.h (emit-rtl.h): Include.
(non_spilled_static_chain_regno_p): New.
* ira-color.c (setup_profitable_hard_regs): Clear profitable regs
unless it is non spilled static chain pseudo.
(assign_hard_rego): Spill memory profitable allocno unless it is
non spilled static chain pseudo.
(allocno_spill_priority_compare): Put non spilled static chain
pseudo at the end of sorted array.
(improve_allocation): Do nothing if we have static chain and
non-local goto.
(allocno__priority_compare_func): Put non spilled static chain
pseudo at the beginning of sorted array.
(move_spill_restore): Ignore non spilled static chain pseudo.
* ira-costs.c (find_costs_and_classes): Don't assign class NO_REGS
to non spilled static chain pseudo.
* lra-assigns.c (pseudo_compare_func): Put non spilled static chain
pseudo at the beginning of sorted array.
(spill_for): Spill non spilled static chain pseudo last.
* lra-constraints.c (lra_constraints): Remove static chain pseudo
check for equivalence.

2015-07-16  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/66626
* gcc.target/i386/pr66626-2.c: New.

From-SVN: r225891
gcc/ChangeLog
gcc/ira-color.c
gcc/ira-costs.c
gcc/ira.h
gcc/lra-assigns.c
gcc/lra-constraints.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr66626-2.c [new file with mode: 0644]