aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ira-costs.c8
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 74c2c32..d6353e8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2010-04-10 Bernd Schmidt <bernd.schmidt@codesourcery.com>
+
+ * ira-costs.c (record_reg_classes): Ignore alternatives that are
+ not enabled.
+
2010-04-09 Uros Bizjak <ubizjak@gmail.com>
PR target/43707
diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
index 9e11219..76aadff 100644
--- a/gcc/ira-costs.c
+++ b/gcc/ira-costs.c
@@ -224,6 +224,14 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
int alt_fail = 0;
int alt_cost = 0, op_cost_add;
+ if (!recog_data.alternative_enabled_p[alt])
+ {
+ for (i = 0; i < recog_data.n_operands; i++)
+ constraints[i] = skip_alternative (constraints[i]);
+
+ continue;
+ }
+
for (i = 0; i < n_ops; i++)
{
unsigned char c;