summaryrefslogtreecommitdiff
path: root/gcc/simplify-rtx.c
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-12 07:30:05 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-12 07:30:05 +0000
commit6ad7c2acd2c4385886e1abc29c1d1b8343eff795 (patch)
tree9b992f0744c5928eb8918d446171b3cfd011a7c2 /gcc/simplify-rtx.c
parent1a3da51ba7278d909c3486748878c1e525ebb61d (diff)
downloadgcc-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.c13
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;
}