From 1e92df7eed596c8604e7653ee828d881b5d965a4 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 7 Jan 2019 10:51:46 +0100 Subject: [PATCH] re PR debug/88723 (PR debug/88635 patch breaks testsuite_shared.cc compilation) PR debug/88723 * dwarf2out.c (const_ok_for_output_1): Remove redundant call to const_not_ok_for_debug_p target hook. (mem_loc_descriptor) : Only call const_ok_for_output_1 on UNSPEC and subexpressions thereof if all subexpressions of the UNSPEC are CONSTANT_P. From-SVN: r267638 --- gcc/ChangeLog | 7 +++++++ gcc/dwarf2out.c | 20 +++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 44e9eb3a291..a17c6c7b020 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2019-01-07 Jakub Jelinek + PR debug/88723 + * dwarf2out.c (const_ok_for_output_1): Remove redundant call to + const_not_ok_for_debug_p target hook. + (mem_loc_descriptor) : Only call const_ok_for_output_1 + on UNSPEC and subexpressions thereof if all subexpressions of the + UNSPEC are CONSTANT_P. + PR tree-optimization/88676 * tree-ssa-phiopt.c (two_value_replacement): New function. (tree_ssa_phiopt_worker): Call it. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 0d643dd713d..8b4f7bc95bf 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -14445,13 +14445,6 @@ const_ok_for_output_1 (rtx rtl) if (CONST_POLY_INT_P (rtl)) return false; - if (targetm.const_not_ok_for_debug_p (rtl)) - { - expansion_failed (NULL_TREE, rtl, - "Expression rejected for debug by the backend.\n"); - return false; - } - /* FIXME: Refer to PR60655. It is possible for simplification of rtl expressions in var tracking to produce such expressions. We should really identify / validate expressions @@ -15660,8 +15653,17 @@ mem_loc_descriptor (rtx rtl, machine_mode mode, bool not_ok = false; subrtx_var_iterator::array_type array; FOR_EACH_SUBRTX_VAR (iter, array, rtl, ALL) - if ((*iter != rtl && !CONSTANT_P (*iter)) - || !const_ok_for_output_1 (*iter)) + if (*iter != rtl && !CONSTANT_P (*iter)) + { + not_ok = true; + break; + } + + if (not_ok) + break; + + FOR_EACH_SUBRTX_VAR (iter, array, rtl, ALL) + if (!const_ok_for_output_1 (*iter)) { not_ok = true; break; -- 2.30.2