From f4c91e0d876115fe3e6a04d88fc89235127a5390 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Sun, 13 Jul 2008 17:28:26 +0000 Subject: [PATCH] re PR middle-end/36811 (endless (?) loop building with -O3) 2008-07-13 Richard Guenther PR middle-end/36811 * langhooks.c (lhd_print_error_function): Deal with recursive BLOCK trees. From-SVN: r137754 --- gcc/ChangeLog | 6 ++++++ gcc/langhooks.c | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d38611b..7bc3702 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-07-13 Richard Guenther + + PR middle-end/36811 + * langhooks.c (lhd_print_error_function): Deal with recursive + BLOCK trees. + 2008-07-12 Jan Hubicka * cgraph.c (assembler_name_hash): New static var. diff --git a/gcc/langhooks.c b/gcc/langhooks.c index 3943f02..e246047 100644 --- a/gcc/langhooks.c +++ b/gcc/langhooks.c @@ -394,7 +394,9 @@ lhd_print_error_function (diagnostic_context *context, const char *file, if (abstract_origin) { ao = BLOCK_ABSTRACT_ORIGIN (abstract_origin); - while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao)) + while (TREE_CODE (ao) == BLOCK + && BLOCK_ABSTRACT_ORIGIN (ao) + && BLOCK_ABSTRACT_ORIGIN (ao) != ao) ao = BLOCK_ABSTRACT_ORIGIN (ao); gcc_assert (TREE_CODE (ao) == FUNCTION_DECL); fndecl = ao; @@ -424,7 +426,9 @@ lhd_print_error_function (diagnostic_context *context, const char *file, { ao = BLOCK_ABSTRACT_ORIGIN (block); - while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao)) + while (TREE_CODE (ao) == BLOCK + && BLOCK_ABSTRACT_ORIGIN (ao) + && BLOCK_ABSTRACT_ORIGIN (ao) != ao) ao = BLOCK_ABSTRACT_ORIGIN (ao); if (TREE_CODE (ao) == FUNCTION_DECL) -- 2.7.4