aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-01-14 20:57:34 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2016-01-14 20:57:34 +0100
commitcd65ae907103641c8581f1dc9b0b1803979637cb (patch)
tree44b2a76497314422635589c03b12410b25351368 /gcc/dwarf2out.c
parent19643948dbeafd5444ba3059c1eef813ecd6e4ed (diff)
downloadgcc-cd65ae907103641c8581f1dc9b0b1803979637cb.zip
gcc-cd65ae907103641c8581f1dc9b0b1803979637cb.tar.gz
gcc-cd65ae907103641c8581f1dc9b0b1803979637cb.tar.bz2
re PR debug/69244 (ICE in plus_constant, at explow.c:87 on i686-linux-gnu)
PR debug/69244 * lra-eliminations.c (move_plus_up): Don't change anything if either the outer or inner subreg mode is not MODE_INT. * dwarf2out.c (mem_loc_descriptor): For SUBREG, if outer mode is integral <= DWARF2_ADDR_SIZE, convert to untyped afterwards. * gcc.dg/guality/pr69244.c: New test. From-SVN: r232382
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 2c0bd63..61a7bf3 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -13239,6 +13239,13 @@ mem_loc_descriptor (rtx rtl, machine_mode mode,
cvt->dw_loc_oprnd1.v.val_die_ref.die = type_die;
cvt->dw_loc_oprnd1.v.val_die_ref.external = 0;
add_loc_descr (&mem_loc_result, cvt);
+ if (GET_MODE_CLASS (mode) == MODE_INT
+ && GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE)
+ {
+ /* Convert it to untyped afterwards. */
+ cvt = new_loc_descr (DW_OP_GNU_convert, 0, 0);
+ add_loc_descr (&mem_loc_result, cvt);
+ }
}
break;