aboutsummaryrefslogtreecommitdiff
path: root/gcc/var-tracking.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-04-12 21:30:00 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2018-04-12 21:30:00 +0200
commitff111948988e61cd44da618d0a4231b9bb8aa66c (patch)
tree7b8b11409bbb5056a857ad264f7aa8c215986189 /gcc/var-tracking.c
parent6b95d1af3e88992ddea645227eba39ab9f3584df (diff)
downloadgcc-ff111948988e61cd44da618d0a4231b9bb8aa66c.zip
gcc-ff111948988e61cd44da618d0a4231b9bb8aa66c.tar.gz
gcc-ff111948988e61cd44da618d0a4231b9bb8aa66c.tar.bz2
re PR debug/83157 (gcc.dg/guality/pr41616-1.c fail, inline instances refer to concrete instance as abstract origin)
PR debug/83157 * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST. * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest, lookup if dest in some wider mode is known to be const0_rtx and if so, record permanent equivalence for it to be ZERO_EXTEND of the narrower mode destination. From-SVN: r259353
Diffstat (limited to 'gcc/var-tracking.c')
-rw-r--r--gcc/var-tracking.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index 56a701c..2b21da3 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -5962,7 +5962,9 @@ add_stores (rtx loc, const_rtx expr, void *cuip)
mo.type = MO_CLOBBER;
mo.u.loc = loc;
if (GET_CODE (expr) == SET
- && SET_DEST (expr) == loc
+ && (SET_DEST (expr) == loc
+ || (GET_CODE (SET_DEST (expr)) == STRICT_LOW_PART
+ && XEXP (SET_DEST (expr), 0) == loc))
&& !unsuitable_loc (SET_SRC (expr))
&& find_use_val (loc, mode, cui))
{