diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-04-12 21:30:00 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-04-12 21:30:00 +0200 |
commit | ff111948988e61cd44da618d0a4231b9bb8aa66c (patch) | |
tree | 7b8b11409bbb5056a857ad264f7aa8c215986189 /gcc/var-tracking.c | |
parent | 6b95d1af3e88992ddea645227eba39ab9f3584df (diff) | |
download | gcc-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.c | 4 |
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)) { |