diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eb66eff4ac8..745e89a2b74 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-05-24 Ian Lance Taylor + + PR rtl-optimization/32069 + * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx + is NULL. + 2007-05-24 Ollie Wild * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__ diff --git a/gcc/regclass.c b/gcc/regclass.c index 635f2d3a411..23fd0928bea 100644 --- a/gcc/regclass.c +++ b/gcc/regclass.c @@ -1214,6 +1214,9 @@ regclass (rtx f, int nregs) int class; struct costs *p = &costs[i]; + if (regno_reg_rtx[i] == NULL) + continue; + /* In non-optimizing compilation REG_N_REFS is not initialized yet. */ if (optimize && !REG_N_REFS (i) && !REG_N_SETS (i)) diff --git a/gcc/testsuite/gcc.dg/pr32069.c b/gcc/testsuite/gcc.dg/pr32069.c new file mode 100644 index 00000000000..2ec37c675ed --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr32069.c @@ -0,0 +1,7 @@ +/* { dg-do-compile } */ +/* { dg-options "-O0 -fsplit-wide-types" } */ + +long long int segfault (long long int a, long long int b) +{ + return a ^ b; +}