diff options
author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-11-12 07:30:05 +0000 |
---|---|---|
committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-11-12 07:30:05 +0000 |
commit | 6ad7c2acd2c4385886e1abc29c1d1b8343eff795 (patch) | |
tree | 9b992f0744c5928eb8918d446171b3cfd011a7c2 /gcc/simplify-rtx.c | |
parent | 1a3da51ba7278d909c3486748878c1e525ebb61d (diff) | |
download | gcc-6ad7c2acd2c4385886e1abc29c1d1b8343eff795.tar.gz |
PR middle-end/41930
* simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
processing if XEXP (x, i) is NULL.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154116 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/simplify-rtx.c')
-rw-r--r-- | gcc/simplify-rtx.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index ee119bcd65c..c0427770267 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -489,12 +489,15 @@ simplify_replace_fn_rtx (rtx x, const_rtx old_rtx, break; case 'e': - op = simplify_replace_fn_rtx (XEXP (x, i), old_rtx, fn, data); - if (op != XEXP (x, i)) + if (XEXP (x, i)) { - if (x == newx) - newx = shallow_copy_rtx (x); - XEXP (newx, i) = op; + op = simplify_replace_fn_rtx (XEXP (x, i), old_rtx, fn, data); + if (op != XEXP (x, i)) + { + if (x == newx) + newx = shallow_copy_rtx (x); + XEXP (newx, i) = op; + } } break; } |