From owner-freebsd-hackers@freebsd.org Thu Jan 14 19:00:36 2021 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 64AD24EACF9 for ; Thu, 14 Jan 2021 19:00:36 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic314-20.consmr.mail.gq1.yahoo.com (sonic314-20.consmr.mail.gq1.yahoo.com [98.137.69.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4DGttW2wJwz4mSZ for ; Thu, 14 Jan 2021 19:00:34 +0000 (UTC) (envelope-from marklmi@yahoo.com) X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1610650833; bh=CQttohcWIzVBKoNGQt497TrhnQ8PSn9lzrET/UIeBmi=; h=Subject:From:Date:To:From:Subject:Reply-To; b=aPMmDXEj/H45dNtrLLl1DOsl0z4pZhXvSDqBtl1wlBLmOJDhwFxDQ2HTOFI6YAoK0YukLyB6M0pX+kRuA7ZIATJ+rSHd7Ck6o4Bjc+b8tbNNvLCsPMeU8YkRQsFPXgTirJ+PPUmCa5vfqrLTCbQezRubOhBTQwpVJMkk2g3bWON+Lb0FnrvVsm3AA9KUoEtM4ADh26ziQNNCiPckW+90dsJ1JhT8Ov4fZXWRHh6VboLpfuXimnRVmMsn553UWvyWr4X6U+1Xu5TOjPJBVBHwugxqjcrPD69Vba/EITMM19WPuk+WNlvS545PQeJrIVOltHL6YUeQ+MfvnjKo6AufGw== X-YMail-OSG: u4bkWUoVM1k3wQJ36Cvxame2ofF5jxGgABTlpkn.361sL4R17gBWTmoeiTP9u8z _Cz.xY6aQStYbYhluAi8CmFc6pdyoQHuaSEt4GkTNMbacWMJbOI_2E4Rbv5y.0TVGT8ducN3zm0c QYxLBJdzYFT09YJyq8tJEOdY4yQkkX4WnKf_ASA6H2zMgj7Zo2xumnZBu9Iw7lFxYLwC659UPqxz 6O5ryXVFrZHob74d5iCOa9Lvx2NsTK0mS_KPuo95DL1ZTT65rwLy1yWUdiu68Of06n6ACS0LSbfB C3urRWrD78sBSdHSd6H3LaYynxZE2dX35BYdXcCODZLZYeLSBz52Jzxt936sJ2OaYAMNkx204DYs vji0puqq9I3fgOlerHTHY_WaGgOIxnADLTACdPsmGHl5q9du0_lA8APcVx_9ZvKuxLYyY6AqL0Le BqqSN7IxAM_yMouZttQAuFHJFdyQAqJgvcGjQdgTqHZMvd.fHi461E5MQExr17gR8j8gZicW2Gi2 dcupCDkTNYRKtGLdCOucMwe6aB4ysgLpSX.Rt5VwKl_NIuA0_HQu7lCQA9YvmVtgfx1pp4hh84e8 Um._o1tFoRCEHlkuvu8fYJo_jkQBv1KQiQDiNqdLVrkh_qq8ck9QSJD15xDqVuW58ghY.hsINvZD Zy_IsT0jsWQLUiM1HBaVg8STU4S3hfpTGjk0HmQaFO5O3PkHxEDhKN_YwQF0sFkxavTslJoTeNEJ v0IHUzYjW2gTmGmzVtPmUW9.NckkAxbNEcN3yj16R01ybJCAND8pgyW8uj9B.0A2aZ_L6QQAmZIu 9BzrKG6QeK5lCmpixmcMHlAe48Tng2kNf76BwwQkaSN8e8JuJAu87CgmE2Le.ku6RhmteuBdfySk 820RsnMoDlQRcsulIOlwOzgFLshW7e46gDgv4BJwhkLpdvTCfMNFYeha7unZ1CUnuNuVOALtVCuW 5LDNGNAZ_26t0xtycrbLgOvJCNo.Sdvx6STJd8FbEaNQrsczHMEH8sPddh4Z70497CRrr46o6xZy DZV6Ku5fBKguxa.c86O4NZ7Rc7k8IPjMsFPSd9YEAQe_vuVYFNw3oTOex2tKfje1AlutE65.Z4Jr 72MDFdBD3IM.fUzGOsfDE.EfoxH5uszu7jnFOlT5hBM0EKpdjWukZC.8pZvNdVJZcrX9rr82ny4v k7Z2cv9UQL_Sekt38FvytdXHPC.I0DBq4bbOCL3RglvV2TGYVCPCNcWbgxvU0FAFNVxqzeQZY.vJ PUG0qCWX3tlUUUNG1OLbxT6cEtwoPcnvTcKJZthi.Q1KhnJpTJUFn0PUjS0n4ytFiwBy56ZoTyR6 9aUJR1Jf6xGY1V6Xbx2YKQnMk9pnDEiO9JBgP8z2cB4gvae8coDK7urLhQr2SQv5zKVYejvZwgMx 602QmBLaamqwMJv2B9uWgSPn9iY6h9K7LE978LDzR6riZpA7Rh4t0NOni_K7AAQBDdszA2xc7BlX ybhu24OsynaNb4dXFs6DAYJyBV9DvSsvG12mUViOBXQgbhACjbvvGUxYoaSY6b1Lj0h7IOMC7Gwg aFTUPuL0OeUvLuOwz9v2gmFzwFOpaz72eTIy2C27hyl5_.d7PyDS4sTGTct1TVR0UFoc75ZUufbC ol6oqieqNJ4lCJMubPVQHgANEaZcDBc7qZAaxmrkh3b7Ti9uwsluu0CiJDE8vr8pHRnSxzqqCIxD JsRAzEjhY8xjxLNkexAUp7.XkBv5XRHZTf0xA5oVdHANJM4olUyiLsx24aS_jRxV_ij81Cx1ai28 KzJQDS0JlcNl7PmCy6cIq9I7pAJk70jr8_TIcOALjVzVcDQmVplWT23woNBKNgY7Sgr407Xe4JfB ao6CWJi9_ADJy50eYJ_x.HLG0S8RkqLZ0Jh4Tu6Zr6URRdcju9l6a7COM8L_zP7cghMK1DxQmFVR bPrZBnfDcDuDRH3tnxkPDr7QqKl7a_C1TSDh2V0JmncXFnZP9l7cm_Rue5Ha583FgiFXseiJPi8g 6kD_C88CGhJ8bTgEBvK0os7Zwv7SyA5pqmEixIo.UjT6Z0x7LT0M7UT8W6ecL3Xe1OhSSmu6gPsZ uIMKulUhu9riYcJMeR7CZKYbqeJ5UweyDf6.Pj0hGVP2G4T8xVf4_978AydCpt3bjMp3qBDHNNGy X26OjyJJUngBnW_5QQeN5xv.4qJLz9r5MUpWtwnrtHI7kCr94FZnINmFUqsVKZWdZbZ7KNtLdMoJ A6OwgurQeItWrzgDQ0uII28GYUBov.Dl9histDJOWb7g.sI6Uyw7jmPslFw34Rucuc5VKwpEg.3j pe1nMl87Ov3gz4DHpkWckT7XERgUQD6EUnYN0Bl0JrzuK_3BL6osK_aOzIlZe8aMr96amVtVQHyK y7wY5vNSt71ftPaK83_Mq2lLOU5Vra84uvYZ06m9MqsoJXquQaTCokga3GwV4DeODTcP.KwCc2tg JTuIxLyw7f4HA5tdqbbwj1srWP0SUwVBJAEKCHkxrAZnoB5Ff Received: from sonic.gate.mail.ne1.yahoo.com by sonic314.consmr.mail.gq1.yahoo.com with HTTP; Thu, 14 Jan 2021 19:00:33 +0000 Received: by smtp423.mail.gq1.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 9c140821402804f808e7dca8f5345c7d; Thu, 14 Jan 2021 19:00:32 +0000 (UTC) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.40.0.2.32\)) Subject: Re: Implicit assuptions (was: Re: Some fun with -O2) From: Mark Millard In-Reply-To: <12075361.5MqMfjp4zD@t450s.local.lan> Date: Thu, 14 Jan 2021 11:00:31 -0800 Cc: freebsd-hackers@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <12075361.5MqMfjp4zD@t450s.local.lan> To: Walter von Entferndt X-Mailer: Apple Mail (2.3654.40.0.2.32) X-Rspamd-Queue-Id: 4DGttW2wJwz4mSZ X-Spamd-Bar: - X-Spamd-Result: default: False [-1.50 / 15.00]; TO_DN_SOME(0.00)[]; FREEMAIL_FROM(0.00)[yahoo.com]; MV_CASE(0.50)[]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; DKIM_TRACE(0.00)[yahoo.com:+]; RCPT_COUNT_TWO(0.00)[2]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; NEURAL_HAM_SHORT(-1.00)[-1.000]; FROM_EQ_ENVFROM(0.00)[]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; ASN(0.00)[asn:36647, ipnet:98.137.64.0/20, country:US]; RBL_DBL_DONT_QUERY_IPS(0.00)[98.137.69.83:from]; DWL_DNSWL_NONE(0.00)[yahoo.com:dkim]; MID_RHS_MATCH_FROM(0.00)[]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; FROM_HAS_DN(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; NEURAL_SPAM_MEDIUM(1.00)[1.000]; SPAMHAUS_ZRD(0.00)[98.137.69.83:from:127.0.2.255]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[98.137.69.83:from]; RWL_MAILSPIKE_POSSIBLE(0.00)[98.137.69.83:from]; RCVD_COUNT_TWO(0.00)[2]; MAILMAN_DEST(0.00)[freebsd-hackers] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Jan 2021 19:00:36 -0000 On 2021-Jan-14, at 09:44, Walter von Entferndt = wrote: > At Donnerstag, 14. Januar 2021, 13:00:00 CET, Konstantin Belousov = wrote: >> The time_t type is signed, then the loop >> for (time_t_max =3D 1; 0 < time_t_max; time_t_max *=3D 2) >> continue; >>=20 >> intent is to get signed overflow, which is UB. Modern compilers = prefer to >> shoot into your foot instead of following common sense. >>=20 > The next line in the program is: time_t_max--; >=20 > The problem here is one of the most common in programming: to rely on = an / > implicit assumption/ (e.g. how the compiler (or the CPU,...) handles = some=20 > expression). Obviously, the above loop condition (0 < time_t_max) is=20= > (mathematically) always true and thus can be optimized right away to = an=20 > infinite loop. Isn't that common sense, too? How should the compiler = (or the=20 > CPU) know that this was /not/ intended? >=20 >> Workaround is to add -fwrapv compiler switch. >>=20 > And the correct solution is: Do not rely on implicit assumptions. = Instead,=20 > write down /explicitely/ what you intend to do or get as result. If = that's=20 > not possible (or too complicated), at least add a comment explaining = your=20 > intention. >=20 > Since the behaviour on signed overflow is undefined in C, the above = statement=20 > must be rewritten completely. For the case above, it's obvious (also = from the=20 > name of the variable) that the author wants to have time_t_max =3D = the largest=20 > possible positive number of type time_t (all bits 1 except the sign = bit). OK,=20 > then write that instead: >=20 > [add #include ] > add #include > change static time_t time_t_max; > to static const time_t time_t_max =3D LONG_MAX; > [because time_t equals long int] Not on FreeBSD for 32-bit powerpc it is not: time_t is 64 bits wide there but long int is not: =46rom /usr/include/machine/_types.h : typedef __int64_t __time_t; /* time()... */ =46rom /usr/include/sys/types.h : typedef __time_t time_t; > del for (time_t_max =3D 1; 0 < time_t_max; time_t_max *=3D 2) > del continue; > del time_t_max--; >=20 > You may also > add #include > add printf ("time_t_max =3D %ld\n", time_t_max); >=20 > in main() to verify that's giving you what you want. =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)