On Wed, Nov 23, 2016 at 2:27 PM, Richard Biener <richard.guent...@gmail.com> wrote: > On Wed, Nov 23, 2016 at 2:54 PM, Bin Cheng <bin.ch...@arm.com> wrote: >> Hi, >> This is actually the review suggestion for patch >> @https://gcc.gnu.org/ml/gcc-patches/2016-11/msg02341.html, but I forgot to >> incorporate it when committing that patch. Here comes this one doing that, >> as well as adding a missing convert keyword. Toolchain built successfully, >> is it OK? > > As said you _do_ need the outermost (convert ...) on the (max .. and > (min ... expressions given @1 may not be of type 'type'. Sorry about the stupid mistake. How about this one? The from_type in the last branch looks like necessary to me.
Thanks, bin > >> Thanks, >> bin >> >> 2016-11-23 Bin Cheng <bin.ch...@arm.com> >> >> * match.pd: Refine type conversion in result expressions for below >> pattern: >> (cond (cmp (convert1? x) c1) (convert2? x) c2) -> (minmax (x c)).
Index: gcc/match.pd =================================================================== --- gcc/match.pd (revision 242751) +++ gcc/match.pd (working copy) @@ -2022,11 +2022,12 @@ } } (if (code == MAX_EXPR) - (convert (max @1 (convert:from_type @2))) + (convert (max @1 (convert @2))) (if (code == MIN_EXPR) - (convert (min @1 (convert:from_type @2))) + (convert (min @1 (convert @2))) (if (code == EQ_EXPR) - (cond (cmp @1 (convert:from_type @3)) (convert:from_type @3) @2))))))) + (convert (cond (cmp @1 (convert @3)) + (convert:from_type @3) (convert:from_type @2))))))))) (for cnd (cond vec_cond) /* A ? B : (A ? X : C) -> A ? B : C. */