diff options
author | Marek Polacek <polacek@redhat.com> | 2013-02-26 11:06:14 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2013-02-26 11:06:14 +0000 |
commit | f1ad33546dc659604fd842520a9b4600cb966c75 (patch) | |
tree | ccd71ce2f7e56ea2ce3d68f4e1c18658cf1c2ab6 /gcc | |
parent | a6af0f4274cb0a94ccbe49b0fccebe99c6fd23f1 (diff) | |
download | gcc-f1ad33546dc659604fd842520a9b4600cb966c75.zip gcc-f1ad33546dc659604fd842520a9b4600cb966c75.tar.gz gcc-f1ad33546dc659604fd842520a9b4600cb966c75.tar.bz2 |
re PR tree-optimization/56426 (Segmentation fault in find_var_scev_info, at tree-scalar-evolution.c:358)
2013-02-26 Marek Polacek <polacek@redhat.com>
PR tree-optimization/56426
* tree-ssa-loop.c (tree_ssa_loop_init): Always call
scev_initialize.
From-SVN: r196281
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr56436.c | 22 | ||||
-rw-r--r-- | gcc/tree-ssa-loop.c | 5 |
4 files changed, 37 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c2accb7..ebd19f7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-02-26 Marek Polacek <polacek@redhat.com> + + PR tree-optimization/56426 + * tree-ssa-loop.c (tree_ssa_loop_init): Always call + scev_initialize. + 2013-02-26 Richard Biener <rguenther@suse.de> PR target/56444 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1da7b6f..9f00b87 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-02-26 Marek Polacek <polacek@redhat.com> + + PR tree-optimization/56426 + * gcc.dg/pr56436.c: New test. + 2013-02-26 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/56448 diff --git a/gcc/testsuite/gcc.dg/pr56436.c b/gcc/testsuite/gcc.dg/pr56436.c new file mode 100644 index 0000000..cae4d2a --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr56436.c @@ -0,0 +1,22 @@ +/* PR tree-optimization/56426 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +int a, *c; + +void +f (void) +{ + int b = 0; + + for (a = 0;; a++) + if (--b) + { + if (a) + lbl: + a++; + + c = &b; + goto lbl; + } +} diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c index f4a2704..edc04ea 100644 --- a/gcc/tree-ssa-loop.c +++ b/gcc/tree-ssa-loop.c @@ -70,10 +70,13 @@ tree_ssa_loop_init (void) | LOOPS_HAVE_RECORDED_EXITS); rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa); + /* We might discover new loops, e.g. when turning irreducible + regions into reducible. */ + scev_initialize (); + if (number_of_loops () <= 1) return 0; - scev_initialize (); return 0; } |