From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6303 invoked by alias); 29 Apr 2011 11:16:02 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 29109 Received: (qmail 3391 invoked from network); 29 Apr 2011 11:16:00 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.1 Received-SPF: none (ns1.primenet.com.au: domain at vinc17.net does not designate permitted sender hosts) Date: Fri, 29 Apr 2011 13:15:58 +0200 From: Vincent Lefevre To: zsh-workers@zsh.org Subject: Re: completion on brace + 4 characters doesn't work Message-ID: <20110429111557.GF5625@prunille.vinc17.org> Mail-Followup-To: zsh-workers@zsh.org References: <20110428111148.GA3109@ypig.lip.ens-lyon.fr> <110428081240.ZM11395@torch.brasslantern.com> <20110428222754.GC5625@prunille.vinc17.org> <20110429003149.GA21935@prunille.vinc17.org> <20110429005909.GB21935@prunille.vinc17.org> <20110429013438.GC21935@prunille.vinc17.org> <110428205657.ZM12615@torch.brasslantern.com> <20110429084444.GE5625@prunille.vinc17.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20110429084444.GE5625@prunille.vinc17.org> X-Mailer-Info: http://www.vinc17.net/mutt/ User-Agent: Mutt/1.5.21-6171-vl-r42848 (2011-03-30) On 2011-04-29 10:44:44 +0200, Vincent Lefevre wrote: > On 2011-04-28 20:56:57 -0700, Bart Schaefer wrote: > > Out of curiosity, does the behavior change if you crank down the > > degree of optimization (or up the of debugging) in the compiler flags > > when building? > > For the test with valgrind, zsh was compiled with no optimizations, > because I configured it with the option --enable-zsh-debug. > > Now, the optimization level doesn't affect the use of GCC builtins > (there's one for strcpy). In fact, the behavior comes from glibc on x86_64. It can be reproduced with: #include #include int main (void) { static char s[] = "{abcd"; volatile int len = 1; printf ("s = %s\n", s); strcpy (s, s + len); printf ("s = %s\n", s); return 0; } and gcc -fno-builtin (the strcpy builtin was not used anyway). According to gdb, the source in eglibc-2.11.2 is sysdeps/x86_64/multiarch/strcpy.S (strcpy with SSSE3). It can load 16 bytes at a time, and it uses special code on these 16 bytes (I'm not sure, but it seems to have code for each length). -- Vincent Lefèvre - Web: 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)