From 0dc7d7cc944ddf8903d14199922fe31cec9693dd Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 20 Jun 2017 21:43:29 +0200 Subject: [PATCH] ira-costs.c (find_costs_and_classes): Initialize cost_classes later to make sure not to dereference a NULL... * ira-costs.c (find_costs_and_classes): Initialize cost_classes later to make sure not to dereference a NULL cost_classes_ptr pointer. From-SVN: r249426 --- gcc/ChangeLog | 5 +++++ gcc/ira-costs.c | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8f1bb3d35fa..200dbe41fd6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-06-20 Jakub Jelinek + + * ira-costs.c (find_costs_and_classes): Initialize cost_classes later + to make sure not to dereference a NULL cost_classes_ptr pointer. + 2017-06-20 Carl Love * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c index 9cf01194225..2cd102a0810 100644 --- a/gcc/ira-costs.c +++ b/gcc/ira-costs.c @@ -1744,7 +1744,7 @@ find_costs_and_classes (FILE *dump_file) int best_cost, allocno_cost; enum reg_class best, alt_class; cost_classes_t cost_classes_ptr = regno_cost_classes[i]; - enum reg_class *cost_classes = cost_classes_ptr->classes; + enum reg_class *cost_classes; int *i_costs = temp_costs->cost; int i_mem_cost; int equiv_savings = regno_equiv_gains[i]; @@ -1755,6 +1755,7 @@ find_costs_and_classes (FILE *dump_file) continue; memcpy (temp_costs, COSTS (costs, i), struct_costs_size); i_mem_cost = temp_costs->mem_cost; + cost_classes = cost_classes_ptr->classes; } else { @@ -1762,6 +1763,7 @@ find_costs_and_classes (FILE *dump_file) continue; memset (temp_costs, 0, struct_costs_size); i_mem_cost = 0; + cost_classes = cost_classes_ptr->classes; /* Find cost of all allocnos with the same regno. */ for (a = ira_regno_allocno_map[i]; a != NULL; -- 2.30.2