From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 108017 invoked by alias); 16 Sep 2016 06:47:46 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 108008 invoked by uid 89); 16 Sep 2016 06:47:45 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-languages-length:1936 X-HELO: mx2.suse.de Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 16 Sep 2016 06:47:35 +0000 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id F3A4AAAC7; Fri, 16 Sep 2016 06:47:30 +0000 (UTC) Date: Fri, 16 Sep 2016 07:05:00 -0000 From: Richard Biener To: Jakub Jelinek cc: Segher Boessenkool , gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Don't clobber dominator info in the combiner (PR target/77526) In-Reply-To: <20160915225044.GC7282@tucnak.redhat.com> Message-ID: References: <20160915225044.GC7282@tucnak.redhat.com> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-SW-Source: 2016-09/txt/msg00998.txt.bz2 On Fri, 16 Sep 2016, Jakub Jelinek wrote: > Hi! > > As mentioned in the PR, combiner sometimes calls > purge_all_dead_edges or purge_dead_edges that can invalidate the dominator > info if it is computed. Other passes like CSE in that case free the > dominance info, this patch does the same in the combiner. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? Ok. (I wonder if/why cleanup_cfg (0) doesn't do this then?) Thanks, Richard. > 2016-09-16 Jakub Jelinek > > PR target/77526 > * combine.c (rest_of_handle_combine): If any edges have been purged, > free dominators if available. > > * gcc.target/i386/pr77526.c: New test. > > --- gcc/combine.c.jj 2016-08-12 17:33:46.000000000 +0200 > +++ gcc/combine.c 2016-09-15 16:12:26.154982064 +0200 > @@ -14393,6 +14393,8 @@ rest_of_handle_combine (void) > instructions. */ > if (rebuild_jump_labels_after_combine) > { > + if (dom_info_available_p (CDI_DOMINATORS)) > + free_dominance_info (CDI_DOMINATORS); > timevar_push (TV_JUMP); > rebuild_jump_labels (get_insns ()); > cleanup_cfg (0); > --- gcc/testsuite/gcc.target/i386/pr77526.c.jj 2016-09-15 16:13:37.149105476 +0200 > +++ gcc/testsuite/gcc.target/i386/pr77526.c 2016-09-15 16:13:13.000000000 +0200 > @@ -0,0 +1,13 @@ > +/* PR target/77526 */ > +/* { dg-do compile { target int128 } } */ > +/* { dg-options "-Os -fno-forward-propagate -fno-gcse -fno-rerun-cse-after-loop -mstringop-strategy=byte_loop -Wno-psabi" } */ > + > +typedef char U __attribute__((vector_size(64))); > +typedef __int128 V __attribute__((vector_size(64))); > + > +V > +foo (int a, int b, __int128 c, U u) > +{ > + u = (u >> (u & 7)) | (u << -(u & 7)); > + return a + b + c + (V)u; > +} > > Jakub > > -- Richard Biener SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)