diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-12-13 20:58:37 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-12-13 20:58:37 -0500 |
commit | 7bef86801b607472d152d0cd561064965d874c22 (patch) | |
tree | 4b31f36d4e3827f8a947d86dc8565ca71c0b6d0e /gcc | |
parent | 9e269f7292efa5a81ecf66544d0bb6192e84ca65 (diff) | |
download | gcc-7bef86801b607472d152d0cd561064965d874c22.zip gcc-7bef86801b607472d152d0cd561064965d874c22.tar.gz gcc-7bef86801b607472d152d0cd561064965d874c22.tar.bz2 |
(subst, case MINUS): Canonicalize (minus A (plus A B)).
From-SVN: r6226
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/combine.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index f4da033..801d26c 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -3564,6 +3564,17 @@ subst (x, from, to, in_dest, unique_copy) - INTVAL (XEXP (XEXP (x, 1), 1)) - 1); goto restart; } + + /* Canonicalize (minus A (plus B C)) to (minus (minus A B) C) for + integers. */ + if (GET_CODE (XEXP (x, 1)) == PLUS && INTEGRAL_MODE_P (mode)) + { + x = gen_binary (MINUS, mode, + gen_binary (MINUS, mode, XEXP (x, 0), + XEXP (XEXP (x, 1), 0)), + XEXP (XEXP (x, 1), 1)); + goto restart; + } break; case MULT: |