From 6687b74039b24bf8e3bdd35c4f250d5e08e5d5a3 Mon Sep 17 00:00:00 2001 From: Eric Botcazou <ebotcazou@gcc.gnu.org> Date: Sat, 3 Jul 2010 13:14:48 +0000 Subject: [PATCH] * gimplify.c (mostly_copy_tree_r): Deal with BIND_EXPR. From-SVN: r161774 --- gcc/ChangeLog | 6 +++++- gcc/gimplify.c | 11 ++++------- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gnat.dg/cond_expr1.adb | 7 +++++++ 4 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 gcc/testsuite/gnat.dg/cond_expr1.adb diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d2e3ba539a78..8ef121a9dcf6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,8 @@ -2010-07-02 Jan Hubicka <jh@suse.cz> +2010-07-03 Eric Botcazou <ebotcazou@adacore.com> + + * gimplify.c (mostly_copy_tree_r): Deal with BIND_EXPR. + +2010-07-03 Jan Hubicka <jh@suse.cz> * config/i386/i386.c (override_options): Revert accidental commit. diff --git a/gcc/gimplify.c b/gcc/gimplify.c index a9c93ac972d0..9eb8fa70d3e7 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -868,9 +868,9 @@ mostly_copy_tree_r (tree *tp, int *walk_subtrees, void *data) tree t = *tp; enum tree_code code = TREE_CODE (t); - /* Do not copy SAVE_EXPR or TARGET_EXPR nodes themselves, but copy - their subtrees if we can make sure to do it only once. */ - if (code == SAVE_EXPR || code == TARGET_EXPR) + /* Do not copy SAVE_EXPR, TARGET_EXPR or BIND_EXPR nodes themselves, but + copy their subtrees if we can make sure to do it only once. */ + if (code == SAVE_EXPR || code == TARGET_EXPR || code == BIND_EXPR) { if (data && !pointer_set_insert ((struct pointer_set_t *)data, t)) ; @@ -895,10 +895,7 @@ mostly_copy_tree_r (tree *tp, int *walk_subtrees, void *data) /* Leave the bulk of the work to copy_tree_r itself. */ else - { - gcc_assert (code != BIND_EXPR); - copy_tree_r (tp, walk_subtrees, NULL); - } + copy_tree_r (tp, walk_subtrees, NULL); return NULL_TREE; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fb71e59a560c..d64f5054b31f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2010-07-03 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/cond_expr1.adb: New test. + 2010-07-03 Eric Botcazou <ebotcazou@adacore.com> * gnat.dg/modular3.adb: New test. diff --git a/gcc/testsuite/gnat.dg/cond_expr1.adb b/gcc/testsuite/gnat.dg/cond_expr1.adb new file mode 100644 index 000000000000..e1a87a36ab53 --- /dev/null +++ b/gcc/testsuite/gnat.dg/cond_expr1.adb @@ -0,0 +1,7 @@ +-- { dg-do compile } +-- { dg-options "-gnat12" } + +function Cond_Expr1 (Dir : in String) return String is +begin + return (if Dir (Dir'Last) = '\' then Dir else Dir & '\'); +end; -- GitLab