From b8faca75e7b2a0c0a0b4185be32432e578c2b945 Mon Sep 17 00:00:00 2001 From: Vladimir Makarov Date: Thu, 31 Mar 2011 19:54:02 +0000 Subject: [PATCH] re PR rtl-optimization/48381 (internal compiler error: in check_allocation, at ira.c:2094) 2011-03-31 Vladimir Makarov PR rtl-optimization/48381 * ira-color.c (assign_hard_reg): Use hard reg set intersection instead of ira_class_hard_reg_index for calculating conflicting hard registers. From-SVN: r171795 --- gcc/ChangeLog | 7 +++++++ gcc/ira-color.c | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a0ba31aa4b2..3fe316c943d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2011-03-31 Vladimir Makarov + + PR rtl-optimization/48381 + * ira-color.c (assign_hard_reg): Use hard reg set intersection + instead of ira_class_hard_reg_index for calculating conflicting + hard registers. + 2011-03-31 Steven Bosscher * cprop.c: Clean up hash table building. diff --git a/gcc/ira-color.c b/gcc/ira-color.c index 6c09dc3b1d4..8fa3393b367 100644 --- a/gcc/ira-color.c +++ b/gcc/ira-color.c @@ -1620,7 +1620,9 @@ assign_hard_reg (ira_allocno_t a, bool retry_p) { hard_regno = ALLOCNO_HARD_REGNO (conflict_a); if (hard_regno >= 0 - && ira_class_hard_reg_index[aclass][hard_regno] >= 0) + && (ira_hard_reg_set_intersection_p + (hard_regno, ALLOCNO_MODE (conflict_a), + reg_class_contents[aclass]))) { int n_objects = ALLOCNO_NUM_OBJECTS (conflict_a); int conflict_nregs; -- 2.30.2