diff options
author | Jakub Jelinek <jakub@redhat.com> | 2002-03-05 12:01:09 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2002-03-05 12:01:09 +0100 |
commit | 6d051694012ae2a672775499b5bac5c860575f62 (patch) | |
tree | cbe11b8bd74b28a3471cca15fd289add04ad61fe | |
parent | a562995d9198cc6ec9aa64137dde261370cdbb90 (diff) | |
download | gcc-6d051694012ae2a672775499b5bac5c860575f62.zip gcc-6d051694012ae2a672775499b5bac5c860575f62.tar.gz gcc-6d051694012ae2a672775499b5bac5c860575f62.tar.bz2 |
ssa-ccp.c (ssa_ccp_substitute_constants): Don't crash if def is NULL.
* ssa-ccp.c (ssa_ccp_substitute_constants): Don't crash if def
is NULL.
* gcc.dg/20020304-1.c: New test.
From-SVN: r50311
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ssa-ccp.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/20020304-1.c | 37 |
4 files changed, 52 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dc43ba3..1ea58af 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-03-05 Jakub Jelinek <jakub@redhat.com> + + * ssa-ccp.c (ssa_ccp_substitute_constants): Don't crash if def + is NULL. + 2002-03-05 Richard Henderson <rth@redhat.com> * rs6000.h (TOTAL_ALTIVEC_REGS): Fix off-by-one error. diff --git a/gcc/ssa-ccp.c b/gcc/ssa-ccp.c index 9d2d9c9..d1b597c 100644 --- a/gcc/ssa-ccp.c +++ b/gcc/ssa-ccp.c @@ -856,10 +856,14 @@ ssa_ccp_substitute_constants () { if (values[i].lattice_val == CONSTANT) { - rtx def = VARRAY_RTX (ssa_definition, i); - rtx set = single_set (def); + rtx def = VARRAY_RTX (ssa_definition, i), set; struct df_link *curruse; + /* Definition might have been deleted already. */ + if (! def) + continue; + + set = single_set (def); if (! set) continue; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8e4daad..378dba7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2002-03-05 Jakub Jelinek <jakub@redhat.com> + + * gcc.dg/20020304-1.c: New test. + 2002-03-04 Zack Weinberg <zack@codesourcery.com> * gcc.c-torture/compile/20020304-1.c: New test case diff --git a/gcc/testsuite/gcc.dg/20020304-1.c b/gcc/testsuite/gcc.dg/20020304-1.c new file mode 100644 index 0000000..f6d6b4e --- /dev/null +++ b/gcc/testsuite/gcc.dg/20020304-1.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-options "-O -fssa -fssa-ccp" } */ + +double a[10][35], b[10][8]; +int c, c, d, e, f, g, h; + +int foo () +{ + int i, j, k, l; + + if (c > 10) + c = 10; + + for (j = 0; j < c; j++) + { + k = 0; + for (l = 0; l < h; l++) + { + if (d != 5) + return -1; + k = l * g; + a[j][k] = (double) e; k++; + a[j][k] = (double) f; k++; + } + for (i = 0;i < 35; i++) + { + if (a[j][i] >= 0.9) + a[j][i] = 0.9; + if (a[j][i] <= 0.1) + a[j][i] = 0.1; + } + k = 0; + b[j][k] = (double) e; k++; + b[j][k] = (double) f; k++; + } + return 0; +} |