aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-09-07 09:32:46 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2011-09-07 09:32:46 +0200
commit5d506c7788d7a5eef80c04f1073f6373fc4021aa (patch)
treed037890424ed98467b076d3cbfb4d95937c261ce /gcc
parent990b7842d47b9f34630495b328fe1e0e1749560d (diff)
downloadgcc-5d506c7788d7a5eef80c04f1073f6373fc4021aa.zip
gcc-5d506c7788d7a5eef80c04f1073f6373fc4021aa.tar.gz
gcc-5d506c7788d7a5eef80c04f1073f6373fc4021aa.tar.bz2
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) <case MEM>: Try avoid_constant_pool_reference first instead of last. From-SVN: r178625
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/dwarf2out.c18
2 files changed, 17 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3abfc4f..5812c4b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-09-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/50191
+ * dwarf2out.c (mem_loc_descriptor) <case MEM>: Try
+ avoid_constant_pool_reference first instead of last.
+
2011-09-06 Michael Meissner <meissner@linux.vnet.ibm.com>
* doc/configfiles.texi (Configuration Files): Update documentation
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index a38bcf8..c11f666 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: