From dfde35b359c23dd0d1542f9fbb2ddb5bad3272fe Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 1 Feb 2015 18:26:17 +0100 Subject: re PR debug/64817 (compilation hangs at -O3 with -g enabled on x86_64-linux-gnu) PR debug/64817 * cfgexpand.c (deep_ter_debug_map): New variable. (avoid_deep_ter_for_debug): New function. (expand_debug_expr): If TERed SSA_NAME is in deep_ter_debug_map, use the corresponding DEBUG_EXPR_DECL instead of trying to expand SSA_NAME's def stmt. (expand_debug_locations): When expanding debug bind of a DEBUG_EXPR_DECL to corresponding SSA_NAME, temporarily remove the DEBUG_EXPR_DECL from deep_ter_debug_map's value. (pass_expand::execute): Call avoid_deep_ter_for_debug on all debug bind stmts. Delete deep_ter_debug_map after expand_debug_location if non-NULL and clear it. * gcc.dg/pr64817-1.c: New test. * gcc.dg/pr64817-2.c: New test. From-SVN: r220320 --- gcc/testsuite/gcc.dg/pr64817-1.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr64817-1.c (limited to 'gcc/testsuite/gcc.dg/pr64817-1.c') diff --git a/gcc/testsuite/gcc.dg/pr64817-1.c b/gcc/testsuite/gcc.dg/pr64817-1.c new file mode 100644 index 0000000..9d016da --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr64817-1.c @@ -0,0 +1,20 @@ +/* PR debug/64817 */ +/* { dg-do compile } */ +/* { dg-options "-O3 -g" } */ + +int a, b, d; + +void +foo (void) +{ + for (b = 0; b < 9; b++) + { + int e; + for (d = 0; d < 5; d++) + { + a &= 231; + a ^= 14; + } + e = (a ^= 1) < 0; + } +} -- cgit v1.1