From 5d506c7788d7a5eef80c04f1073f6373fc4021aa Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 7 Sep 2011 09:32:46 +0200 Subject: [PATCH] re PR rtl-optimization/50191 (Strange debug insn produced for TOC compiling 416.gamess with profile-generate) PR debug/50191 * dwarf2out.c (mem_loc_descriptor) : Try avoid_constant_pool_reference first instead of last. From-SVN: r178625 --- gcc/ChangeLog | 6 ++++++ gcc/dwarf2out.c | 18 +++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3abfc4f6f2a..5812c4b8bfd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-09-07 Jakub Jelinek + + PR debug/50191 + * dwarf2out.c (mem_loc_descriptor) : Try + avoid_constant_pool_reference first instead of last. + 2011-09-06 Michael Meissner * doc/configfiles.texi (Configuration Files): Update documentation diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index a38bcf8f21c..c11f666bfbf 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -11695,12 +11695,22 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode, break; case MEM: + { + rtx new_rtl = avoid_constant_pool_reference (rtl); + if (new_rtl != rtl) + { + mem_loc_result = mem_loc_descriptor (new_rtl, mode, mem_mode, + initialized); + if (mem_loc_result != NULL) + return mem_loc_result; + } + } mem_loc_result = mem_loc_descriptor (XEXP (rtl, 0), get_address_mode (rtl), mode, VAR_INIT_STATUS_INITIALIZED); if (mem_loc_result == NULL) mem_loc_result = tls_mem_loc_descriptor (rtl); - if (mem_loc_result != 0) + if (mem_loc_result != NULL) { if (GET_MODE_SIZE (mode) > DWARF2_ADDR_SIZE || GET_MODE_CLASS (mode) != MODE_INT) @@ -11728,12 +11738,6 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode, new_loc_descr (DW_OP_deref_size, GET_MODE_SIZE (mode), 0)); } - else - { - rtx new_rtl = avoid_constant_pool_reference (rtl); - if (new_rtl != rtl) - return mem_loc_descriptor (new_rtl, mode, mem_mode, initialized); - } break; case LO_SUM: -- 2.30.2