From 2123cf2bf3f5e3ca2a1a28d9e3abef44d31e2b52 Mon Sep 17 00:00:00 2001 From: rguenth Date: Mon, 14 May 2018 10:35:06 +0000 Subject: [PATCH] 2018-05-14 Richard Biener * doc/match-and-simplify.texi: Adjust :s documentation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260223 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/doc/match-and-simplify.texi | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index edf2e41e234..c8bb4c7b3dd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2018-05-14 Richard Biener + + * doc/match-and-simplify.texi: Adjust :s documentation. + 2018-05-14 Alexander Monakov * sort.cc (REORDER_23): Pass the type for the temporaries instead of diff --git a/gcc/doc/match-and-simplify.texi b/gcc/doc/match-and-simplify.texi index 6bc2c47bee7..024d747cafd 100644 --- a/gcc/doc/match-and-simplify.texi +++ b/gcc/doc/match-and-simplify.texi @@ -250,7 +250,9 @@ come second in commutative expressions. The second supported flag is @code{s} which tells the code generator to fail the pattern if the expression marked with -@code{s} does have more than one use. For example in +@code{s} does have more than one use and the simplification +results in an expression with more than one operator. +For example in @smallexample (simplify @@ -261,6 +263,14 @@ generator to fail the pattern if the expression marked with this avoids the association if @code{(pointer_plus @@0 @@1)} is used outside of the matched expression and thus it would stay live and not trivially removed by dead code elimination. +Now consider @code{((x + 3) + -3)} with the temporary +holding @code{(x + 3)} used elsewhere. This simplifies down +to @code{x} which is desirable and thus flagging with @code{s} +does not prevent the transform. Now consider @code{((x + 3) + 1)} +which simplifies to @code{(x + 4)}. Despite being flagged with +@code{s} the simplification will be performed. The +simplification of @code{((x + a) + 1)} to @code{(x + (a + 1))} will +not performed in this case though. More features exist to avoid too much repetition. -- 2.11.4.GIT