From bb60bb974d8408320457ab4e8b9fc829f121eaac Mon Sep 17 00:00:00 2001 From: pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu, 9 Feb 2006 14:31:28 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110801 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 57e720cb9ad6..c339897488ab 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dd78250d0edc..d7ea0007e484 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +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 diff --git a/gcc/testsuite/g++.dg/opt/pr26179.C b/gcc/testsuite/g++.dg/opt/pr26179.C new file mode 100644 index 000000000000..32cd7a00ea9d --- /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 d2edf218758b..95df38878956 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: -- GitLab