diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2006-02-09 14:31:28 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2006-02-09 06:31:28 -0800 |
commit | 5230d884913ae19b5310f200b96fcaa1cf64a7db (patch) | |
tree | 414530352d848afa2d7eae2febf33dbf2fa85e93 /gcc | |
parent | 4853940ccb7949141793454476b7436c1a431598 (diff) | |
download | gcc-5230d884913ae19b5310f200b96fcaa1cf64a7db.zip gcc-5230d884913ae19b5310f200b96fcaa1cf64a7db.tar.gz gcc-5230d884913ae19b5310f200b96fcaa1cf64a7db.tar.bz2 |
re PR tree-optimization/26179 (ICE while compiling mozilla in tree-ssa-pre.c)
2006-02-09 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/26179
* g++.dg/opt/pr26179.C: New test.
2006-02-09 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/26179
* tree-ssa-pre.c (create_component_ref_by_pieces):
Handle RETURN_DECL like VAR_DECL.
From-SVN: r110801
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/opt/pr26179.C | 22 | ||||
-rw-r--r-- | gcc/tree-ssa-pre.c | 1 |
4 files changed, 34 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 57e720c..c339897 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2006-02-09 Andrew Pinski <pinskia@physics.uc.edu> + PR tree-opt/26179 + * tree-ssa-pre.c (create_component_ref_by_pieces): + Handle RETURN_DECL like VAR_DECL. + +2006-02-09 Andrew Pinski <pinskia@physics.uc.edu> + PR middle-end/26134 * fold-const.c (fold_indirect_ref_1): Fold "*(foo *)&complexfoo" to "__real__ complexfoo" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dd78250..d7ea000 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2006-02-09 Andrew Pinski <pinskia@physics.uc.edu> + PR tree-opt/26179 + * g++.dg/opt/pr26179.C: New test. + +2006-02-09 Andrew Pinski <pinskia@physics.uc.edu> + PR middle-end/26134 * gcc.dg/tree-ssa/complex-3.c: New test. diff --git a/gcc/testsuite/g++.dg/opt/pr26179.C b/gcc/testsuite/g++.dg/opt/pr26179.C new file mode 100644 index 0000000..32cd7a0 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/pr26179.C @@ -0,0 +1,22 @@ +/* The problem here is that Load PRE on the tree level + forgot to handle RETURN_DECL which causes us to ICE. */ + +// { dg-do compile } +// { dg-options "-O2" } + +struct a +{ + int i; +}; +void h(struct a&); +void l(void); + +struct a g(void) +{ + struct a fl; + h(fl); + if (fl.i) + l(); + fl.i+=2; + return fl; +} diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index d2edf21..95df388 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -2161,6 +2161,7 @@ create_component_ref_by_pieces (basic_block block, tree expr, tree stmts) break; case VAR_DECL: case PARM_DECL: + case RESULT_DECL: case SSA_NAME: return genop; default: |