aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2001-09-06 15:14:43 -0700
committerRichard Henderson <rth@gcc.gnu.org>2001-09-06 15:14:43 -0700
commit7d8be4dab0814a35eb8150722dec6626e7f7162e (patch)
treee092e83c22a3a8cf7bfdb46857702de8b9cbd22d
parenta1dc9455a34010a845a20f7d3dc8a0c64988b44d (diff)
downloadgcc-7d8be4dab0814a35eb8150722dec6626e7f7162e.zip
gcc-7d8be4dab0814a35eb8150722dec6626e7f7162e.tar.gz
gcc-7d8be4dab0814a35eb8150722dec6626e7f7162e.tar.bz2
simplify-rtx.c (simplify_binary_operation): Simplify contents of CONST.
* simplify-rtx.c (simplify_binary_operation): Simplify contents of CONST. From-SVN: r45447
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/simplify-rtx.c22
2 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7c49298..16c65e2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-09-06 Richard Henderson <rth@redhat.com>
+
+ * simplify-rtx.c (simplify_binary_operation): Simplify contents
+ of CONST.
+
2001-09-06 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* config/rs6000/rs6000.c (rs6000_emit_prologue): Fix DWARF2 register
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index ea1cc6d..7f358d3 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -1275,6 +1275,28 @@ simplify_binary_operation (code, mode, op0, op1)
return simplify_gen_binary (AND, mode, op0,
gen_rtx_NOT (mode, XEXP (op1, 0)));
}
+
+ /* Simplify operations with constants containing embedded offsets. */
+ if (GET_CODE (op0) == CONST)
+ {
+ tem = simplify_binary_operation (code, mode, XEXP (op0, 0), op1);
+ if (tem)
+ {
+ if (CONSTANT_P (op1) && ! CONSTANT_P (tem))
+ tem = gen_rtx_CONST (mode, tem);
+ return tem;
+ }
+ }
+ if (GET_CODE (op1) == CONST)
+ {
+ tem = simplify_binary_operation (code, mode, op0, XEXP (op1, 0));
+ if (tem)
+ {
+ if (CONSTANT_P (op0) && ! CONSTANT_P (tem))
+ tem = gen_rtx_CONST (mode, tem);
+ return tem;
+ }
+ }
break;
case MULT: