From owner-freebsd-hackers@FreeBSD.ORG Mon May 27 08:37:42 2013 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 9D723687 for ; Mon, 27 May 2013 08:37:42 +0000 (UTC) (envelope-from vhaisman@gmail.com) Received: from mail-la0-x235.google.com (mail-la0-x235.google.com [IPv6:2a00:1450:4010:c03::235]) by mx1.freebsd.org (Postfix) with ESMTP id 2ACE5D7C for ; Mon, 27 May 2013 08:37:41 +0000 (UTC) Received: by mail-la0-f53.google.com with SMTP id ea20so6287801lab.12 for ; Mon, 27 May 2013 01:37:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=BYIeOUlrnTW2QwJDD/P4nS/3a95JQ1tQKmT6EgirZQI=; b=SdTmKtyn+SpWFcrq2TGYl+pp0vEqGwKTrAabQXFN83RmuCFjF5JvZgM3cCfMWLw0Gk 9wvLF0Z4UoUmvI5D8J+1t4XePDGDVhTP6Wtjg83MelxAL+k6LvQxHKSBG9PvtG1xw9Cg MoOsGusGKH+iOC60ZCd/5r8iQkKqyfazwl3Z6JKPerOlq6GNy2NoqRVVa/ZfX1qAWTlD 02G7BVVMZLpGpLCNBP2wxgNOgRQ1Q6FLDFnm/uT6a91kCaXYmkSTU/rDxBo4pyCP6tAA hh/HJunkO5aPCzfV8OWjtra3Vxd+0mH6AqcIahosxqtrEIJPcDZVjMa56tT2iIrLevZC ZGWg== MIME-Version: 1.0 X-Received: by 10.112.20.3 with SMTP id j3mr13483988lbe.90.1369643860141; Mon, 27 May 2013 01:37:40 -0700 (PDT) Received: by 10.114.98.129 with HTTP; Mon, 27 May 2013 01:37:40 -0700 (PDT) In-Reply-To: <2adc4d8e7c55e92d935f61efb4c9d723@lthomas.net> References: <2adc4d8e7c55e92d935f61efb4c9d723@lthomas.net> Date: Mon, 27 May 2013 10:37:40 +0200 Message-ID: Subject: Re: Performance improvement to strnlen(). From: =?UTF-8?Q?V=C3=A1clav_Zeman?= To: Lee Thomas Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: freebsd-hackers@freebsd.org X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 May 2013 08:37:42 -0000 On 26 May 2013 21:01, Lee Thomas wrote: > On 2013-05-26 08:00, V=C3=A1clav Zeman wrote: >> >> On 05/25/2013 10:27 PM, Lee Thomas wrote: >>> >>> + lp =3D (const unsigned long *)((uintptr_t)str & ~LONGPTR_MASK); >>> + va =3D (*lp - mask01); >>> + vb =3D ((~*lp) & mask80); >> >> I do not think that this correct C. This is type punning violating the >> rules of the language. > > > Hello V=C3=A1clav, > > The aliasing here is safe, because there are no writes through either of = the > pointers, and the reads are correctly aligned. I disagree. IANALL but AFAIK, this is simply not allowed by the language =3D> UB =3D> even though it seems to work in this instance, you are just lucky the UB is actually doing what you expect. -- VZ