From 5230d884913ae19b5310f200b96fcaa1cf64a7db Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Thu, 9 Feb 2006 14:31:28 +0000 Subject: [PATCH] re PR tree-optimization/26179 (ICE while compiling mozilla in tree-ssa-pre.c) 2006-02-09 Andrew Pinski PR tree-opt/26179 * g++.dg/opt/pr26179.C: New test. 2006-02-09 Andrew Pinski PR tree-opt/26179 * tree-ssa-pre.c (create_component_ref_by_pieces): Handle RETURN_DECL like VAR_DECL. From-SVN: r110801 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/opt/pr26179.C | 22 ++++++++++++++++++++++ gcc/tree-ssa-pre.c | 1 + 4 files changed, 34 insertions(+) create mode 100644 gcc/testsuite/g++.dg/opt/pr26179.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 57e720cb9ad..c339897488a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-02-09 Andrew Pinski + + PR tree-opt/26179 + * tree-ssa-pre.c (create_component_ref_by_pieces): + Handle RETURN_DECL like VAR_DECL. + 2006-02-09 Andrew Pinski PR middle-end/26134 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dd78250d0ed..d7ea0007e48 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-02-09 Andrew Pinski + + PR tree-opt/26179 + * g++.dg/opt/pr26179.C: New test. + 2006-02-09 Andrew Pinski PR middle-end/26134 diff --git a/gcc/testsuite/g++.dg/opt/pr26179.C b/gcc/testsuite/g++.dg/opt/pr26179.C new file mode 100644 index 00000000000..32cd7a00ea9 --- /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 d2edf218758..95df3887895 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: -- 2.30.2