LLVM fails to realize `-0` is still `0`
- Dominant language
- LLVM
- Stars
- 40.5k
- Forks
- 18.7k
- PR merge metrics
- PR metrics pending
Description
[Zig Godbolt](https://zig.godbo.lt/z/Peab9xbss)
[LLVM Godbolt](https://llvm.godbo.lt/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1C1aANxakl9ZATwDKjdAGFUtAK4sGexwBk8DTAA5DwAjTGIQADYATmkAB1QFQjsGF3dPPQSk2wE/AOCWMIiY6StMGxShAiZiAjSPLy5LTGschiqagjyg0PCQAFYAJktq2vqMpoVRrv8ewr6hgEpLVDdiZHYOAFJB/sSAOlp/N1V92zYFOPKAfWup4jcba65%2BmIBqLYBmABE3ggBPK4fADsACE3nhItIIVCQd8thoAII7fotKj7bC0KhQ65Cf4sD4/P6AzAg8F4T7DCEADlINLpeC4kQZUJZkjhCORSIAAgcjgwTvtTOgFKhrshaKhkABra7ATAEc6kr6/fwEcLMWhvNwMZhsdDXJjodDEN7ASUhMRvOIEU28hSHY6nfyEa7C0XiyUyuUKpV0sR4YAMN7Uznc26GATXT6fST9QmqwQaq06vWYA1Gk1vNAMKaGAgffqgrgaN6qGlbfq/ZA7QY%2BACSgTkAA1roN9pFK04NBpa/6jkG3lwwxGGFGY/1PgmIUniJrtbrWOnDcbTTm84JC6DBlwyxWq9na7d3WKJVLZfLFXg2F2e323gHB8OkZysDQAm8RWKvVbiIZ5RAkLsgAtNEgyDDGwKDBonyRNS/SSMCkSxshdKgeBkHQbB8GIcC/TUho1KLDC7Lcpe1xKnmLBxBAxE/rQ1ypkuGarmSnLYIIxD/CAnJvB8uyliqD4mFKTD8XsDr8oKlFXMgtz3I8BDPK80T9oGwahkifGiCYbymKgeDoG83ImOYjpUAq16YPsea1PscQaIBsJMnSNqmmOupuLpKIaIsvHibuQmSkaD5ECweDINatqubaxl8k6Qpfp654%2BlebALiQWDEOmamDppiJ8Si%2BxjgQ%2Bx4GVZXThF1FvJgACOUWmiiTRvAKJj%2BSEpqMuJxWoKV5UDXSBhhFqKKgl60pcBVg1vMNLTiQAKggjDTWVnKcuN55TQNZU8Vp4mDNOblEGqjXiaWRAkf5KJTkJOlakBD4KASSRYJgVAWTY/GDAo/wKPd961iqWxgn%2Bqgg98pAg6CYMQ1DoP4HD0PEEkcMAH7Q2wLAkP86PI8g4PApDGOg1ww5E6QJOgvgxBUAYwB42CVBxAoxCM6CdNMMACgQ7WTnsuBtIkW8wJsgdxE7J8wIdaac2jbs8UCqcZ7epeSr7JgqiENN61IktK07RQ127Oyd1iA9sLNYBlIizF7kCG1WqPhp50SxB0v7QoADuhDIAgwsotCcviZtMrbdNW7%2BXxj0aENTAjeJiuCirF6%2BlZGta/1a37dHsLAeBccJyiSfKxNqXq5r2sDddVa64iJf7Cn5fp5XWdG/tKJoCw2MMPs2WlagcSrXgR0ICPj2VuCN10mNE3hwNhaQ1u4nQii%2Bu94bi8z0WK8z7s6/D4vxv9PGQnVXE2rAAWE%2B7F3Pd9wq%2ByD8PaGSBo0Sdh3uyRNOChuCErVvbC1juJO%2BAgH4DyHobY%2BwJf4tHKNfQKux%2BhixRMyYBx8czoEqmfZANV6oB12KLN4vZ9qdQhEg/oWCyqF3miiIWwcUTq3rLmaoghepewzoQOuzDWH5g4Vwgge0CrZnNnpAyRkTJmBYOZSybANYMGwQ5fmQ50FuVag7Ly8t%2Bi%2BRlrNeOdDdgljrtSYRhVdg2WIKgJg%2BwNAVVZtY2xTi0BxH%2BMFIyQVrFGSAnbc6uUNL%2BXuuIwyxlTIyKOBZCuij7KOUei5M6HlHau2PtEacmZAFe0If0Sxji7HlQcTYuxdiXFuK8XSLgEE4x6MYUY0hXJEQljMQFQKRI4hjwDjvFEqlxLUi3svYCFTPh736LwjcpUxycNbkffa/cslk3WkTOuWAJQ1FJPpEJUizJMAUH/NggFdxjh1G%2BN2nxnz1LfLMGc6o5xWkevaR0SsyoMFdCeZKqs057IpIdHyvjElaOEupEMAViJMX1CuLM0N2KcW4sfb5RJqh0FEbpO5l4mAnFMGIFRMY/Jf0nFVPBF8CE3yGHSOpfFyHdWnvoouCtJIJRPIcVAqBpRuCHq3M4CBspGlodozEShs71L5dZduIjA5VUEEQdRxLDqXTcsfU%2BRJLzwLYIIKVDAQirEUQoVqbhMl4CFuowOYtXjHx/p4kKjI1GxRRCggFeUYHTgAF6a0QWa7%2BfxUBXVxb1AggxJA4KJOfWqDVLXiXQWSt4FLKE%2Br9TQ6lhiJIPMFAyyUzLWWCI5Vy9APLFrLQYFNWgxB7IIAFZydeBai1tN2sfXpQlbQ6kisS2Bl1LUpPFYqQesVpUesasfEs04lX0BVQQNVGqjnaoFHqg11rdjdMepSPtLTfjuJIr45qIDnYhj7XC346TJ1zJaiiQYfbbqKoVMqxgI6u3qs1SKHVU612zuNZIPtpsiQrstY%2B/oXAhl2uDMe3FLwnUuooW6797IW1QmPqoW0TBCDhDSYorJxDPh9rNYGgl2paCup6XSF9ZCuqUPiTU/oQrw46mIMBWgyAdlMBzWvPNFbi0VQCF7Ou5bDiVpLeVVjTSUQUdcAxeDTUiSGG8ZbIhdJIgnwXbi/wGLiB4H4YPNJxp71zNtc1fox95M1CU%2BwweMZVNGX3cS3TinlNxGGS8HTDAFP6cgZ8BVu61OmYk/0czDmn5xBjNZ7TBH43aI43gdjjHq24toKzMqphJC1tae0ienTdiRaLXgUwxUXWSG6bPc82Tyq3SrNvKeuwBMmGuMJ4ZHHC3MZ45gTJlZ4Teo0JIRCAbfhtPHpbJL36qQMcYExqttX6uFeXvQw9uxQ7Sjy/sArjXRUWOa68Nr1p2mGp3o7SrYXquDYy8Npek8erh1/TlmU03ZvH1sZIaTy2OsdPBAMzb/XOM1d230g7RUpDAgqsdibE0zvTPm9%2B2BZ8JWdq6u5y7rWR6yttH2uLy6vEQkpF%2BrgxDN35T4t7X2/svkBQYQY7Rk28uRxzkjw6LUSNOG2cKqOZO3hUkp9T7aNc5vsUi5gcjDBKPUdo3xixn2Ko84UDYtpo9Oumx3gkPAooGCPfzc9wbb3uv7AF/l4ZRPvsA/Mdk8OQuRf%2ByErdtb4Ipcy7lwN7jSvis6%2B%2B%2Brv7muGsXea1D/YFGxd3YCr1/eW2uM4JG%2B9ixXKdmwTt7lh3tcmtxkiBVN3hvVvWvW1o83CvLcNaK4d23Id7f5a1z1Zr13yqx/i%2BL/p43%2BhVd9yPNPo3%2Bcu5%2B0WbPM3c8omo9RfY2NsElXxfgkN7mYN/gqyQvRlLksEvbxgH19HdhkbjSR4LGs4h0HstlZaRpwihae%2BVTAi/aDL8wKvrKTTyFz7C1vnfG/5dn7oHz/oKXouIXd4l63/e4PXOT1f3fcQV%2BYDX01f33W780sMsYNQ9TsKpt9EVHdI8XcIDRpi8Pcbp68NcP8rc88WsvtC8ud38F8l8v998f8spm8Fso9wCd93djcM8P9QCptSDID/9rdLsltMCyBc1N8cDP9v9f8iDsl89ptYDH8usGDVd2DqC%2BCyDq8A8eCrtpsKNsDYC98D8EMoDAcuBUkQcO0pUIdncMD2Ce05VcVoJpwP1kczpmpul0d/IscCA/Y6cj0QESNkDdDJ5adccKcCdxIqd%2BUP8XCbYGd3CURPCOdaDaAWc65Ajw5YCb8dx21JUu0tD0Dgi9DYcDCd0zRz0h1L1R1b0J1dV6RTDdgdwxYMcDpT0EcLVWR8ihgqQLCDC30XMTNcjpV68ANAddgYiwcsk/Uki2YAsHDG9YCwjqdgioj0NEwNC4jTZiCYCyCYcejWjgcz11QMjVVr0x0tV1N9Uv1Bh0FHpiij14dZpEcfFKjBg0cBwAkDC1DRM1NpUhYj1j5PhBJFiL0Viuob1x0Njp0moCidjnJP5AdTkjCjiKjDVdhHj/Et1cUbYhI/4AFpVsswSzlyVZZ/Dfsw9vCXwkRHDIiLthD%2BC48S9JDLsC8RDWDL8nD6DxITCAihiUCJDldeDgjhlwjEjlDtcVdWT4CKCipFto8qCySIjxDKSeSSD%2BSaSvCKT9tutdhmSmdWSI8ATSiHxXNGj4jpi6A/Nj5AD0sAgYNjMMksltTEI0IkTxJ5DhNG428u9cEe9DSosgDdSCBSVh9KFzTrlLSh4Sop9SN2dtpvT58BjMTEQZ8RV2ThC9cBCJchCXc9di1hkQzXcucqMaNhdUCPt1TaBRD5S5swzBcUyxICTTDlddd8y4zxIEyKNkzaM0z%2BcmSs90TJSLsSplsg0CFQSbdyo9c6RHYHi6iIRMMiUIdwz8yTTj4SBG4BBsEq8iQygvoR9slmy8AGRdx61MBlyqT8MREo1E4i1qElzAtE46VHkU0mUWU2VM5M0CDvSfAmU4gpo8DFDUs64bzB57zOCspwsATnNDjyjoR2yOTOyRy/1ITAcfVIhBhogWyBze9JjJxbUI1tyioSpwLIL9ySMG4Ty01zztYCBOUryDy%2BsGB/UHyCDwhS09Y81iL3yyLQzxJ/pMBTB5Q4hJAlTB1MBh0pUvjKDDggK4l/jkSCLvdGB/UQsgzkCb8VcodIya8pCC938az8I7jdhAi/cpSGDGT9zxSgiq8FTczpz2t48/91LRT5L6TjKmDZSvCFLoh68WSdKcyqTRjlTxNYKXhhlIcMCHiFixjYjwdYLYJuiHiDjjCqR2ypYITiirCbDccbp8caUG8GzAoiwfDydvSVLypTTo5fC0q5SMrQigy7KVcb9PgrifKOjiUArZjj434B10j2LMjVjsjPiv0Sqijqql0fyXKv034IrqrUi91VTYLJAy8WjtcWL2jNChqZVPV9CtyUT4rHCzlOR0qirqq%2By1RfKslKqZrkjAc4xaqlj6rXiZw1i71TMuLA5oRdjqqnKP0QSZ0EJbUai9rvLnKskrthlRqV4Di2KOLGqPjzruqrq/jqrSrOrV1KjYtercUdFf5/53riFA5ohqlUSEqwC8qxLG8uAJLhCOrbsn9Dsocsz7L08bUQEtKKokq1LCaMDLLtKVduCAKGbCzuTazNK0T0aFKAK6bKaFKWK6bw4qb5UOr0liU3LHL5VUiNryr3Nv1AqYalSQqv0SVgLIqfZrCcdoTkFf0%2BiGzvlkrSdXCcqJSvqsrDo/D4rCqvrlDlrcr9hBgb8EIJqJjxI5aqqYbvzfqGq3jTqciH1KiEI2qYbbrgS/yHqT5obAd%2BhXqBq9VZb0F7iYaDjpbJrXbm0dq5iBLdb0b7bBiTbHawaU6XabUVyM7TUnjfgvbjr/BfbmqA651YQ9jv4Oq7qw7vjXgN1ziQLtdwL9TiVIgRrTVWK6q/qfamrAb66xYmRTU%2BzW6v1UJVbTVvzYSslwLhkoNejUbHCWiNpG8HbcSXdUj8bBCabKbibmbhTv5NNlLaT7aubcaBaKp9aHKPsn7yCE8hCz76yc6qbSa2aVcebypn6/6T4lL%2BgrbuDIgnLRb3NxaS7TVXqi6/Kw0f53bAc4IgSLUTD2zIgzjAU1bsdbDv44qE1HCCtQQUqhxjbhUZtKGLaE1CrUMO4FTbalAjsb93h1DNr%2B7UGy7cVgQK60jDrR6Trx7GiLrv4G72Qm7o6W7Q6v0BHI7tcoJ9S3NYLgRB7%2BGlSkHkNpre1N6FrG8mH6kVrPgb9gR1rQdU60FeH9HAc8IDqXir0x6AbxGFHgbpGYEQ7fyFGnqu6ZHgQY6bj3MkJPqYEfqR7vbRHXH/b2yLGp7%2BLxJgQwa57KjgQhZnrtcCI4a4SQnEaiFkaDHSGjG64yGca69pKiThCvc0aaCgGFKCJAGm8zLT6gHH6c82TuKlSjcP7uKant776n6mnZsQHgRbK7bztvUg8FAAqhIYHYKPK40URPNLMnMtT7SdTMswa90gFiUjShZgJNztdnl3SGAx9tHoK7TUtNmYMstnTcVqQRbgnXLr7XhEnELdgTmyKzm28dbUaKykyuzBLy9T887hUb9qQparHi6piMD5bAdqRh7hGoma6xHYmHrIWg6EXZ75HKjEWlGelvz5melV4Cia0nKq7nHon1iJ72zMXhZp6HnXrUm6X0FMmekDiV7iV4JhlqQPY5rgXkCwXtoIXC7oXkGRSpK0HtdohBHKWsiYm8i6WpHu7xJog5GfHKjZWCWul%2BqVS47YL1WwncUbLnaJXZ09HZqs6t7s8L8RKb8jS%2ByemjK6KNhGLt84xqCKlVKQH6L3XmL6914qL8Df9VKUknWEsT6ul8nanvWSaZKnM5dg3Hyw2msdEpAbtDKZKVdv0lmObJp2x42DsNsyTk3SLUtGaNAhgf1M2R5WaddJw83Y3C3UCS3CKy3Q37KncEI4336XWPsT4m3Jte2Wm22hKiKFDy3U3QKq2B7to%2B3s2Xhabv6C2fXl4x2QXhLJ3O3K38ISxa2iyhD%2BhUKvWW3R2k9S3t2Pyu3cU/WmKrtHHliqXNjKjHWxZgIZHohvyWWHq72PW2X/GUloHnm1XXnJKdC9dLD1bor3NYhvTh2z2DaRFc52RbVGclBC2XDYR0F0PMBPgBU%2BIUO3gg5UbAiRKsP2QuA%2BXZXYtUccPSPqc8sKOhxqPmtHnqQSHtFAi%2BT8rBV2d7Wmy%2BpkIoLbT/yXh8P9yezvVkKRLu9CUGoxPB3JOtExzdzJzcHltZzEEepkKJP1zVz1ykKhPyPpOhPicbT5PKic3l2pPAdxysE4JNP4E5zKF7P1Pl3uoDOKEdOzOCPI1CMdyJzFFHO0LUaMKvxGUsKM1cKs1/S81PLMatpC2cbj2D363bE928kk212iSq3HmsuPDqdEPqaeTMum3AiJOua8v932bwHqdZOWn10y9AjzPL6eCyvavuPp2wzo60venSu52m2g2cuGTXgyZyuiuRv1Kxu/TCulBKvGvalyab6lAGu2uMvBvOvGOpu88ZuJulA%2BTGaXhzOuT%2BuFse3C3sui3RvhrLu5vMBiuQHogES6v5udvSvbv9vMA1uSvzvPutulBWvfv2v/u6bDvOmB2FvTv%2B3zudw9PL3rvrdogwHAjHvs2q24evuFv1uMea2Afvv3vYe8e6ageQGMvMf8fwfdLDtc39KVs62zv2uNAM3avhvEfdvmeRK6a0fcv02uf7vsfgeMvOevufuyeq2Rf8fSeZKSwamuub3AdohmXcX2y33F7TOCBwKRPLPiUlf7nAc/3mLPbInq6JHb8NmWsEmXSfPNe7uSMhV%2BeT8t3RKTHJvaKulk7xWskP54XrXDGkvyLEQKvPyZWxXxjzXj3bGrX/PBW55MOCr6uQ%2BAoewzXveo/dq/fimA%2BXfWHMA8sb8SwOqdHdf0/M6Y/s7V2c%2BkR5eC%2BNAoXw%2B0/ffy%2BbXs%2BL8MDa%2BkWnGFWaW3GrOl241Hojnk%2BcWsHQqHqSxf1N0h/11vznU9SYrakINPUgJBPfUTvVRLmF/v1mt9eBL5yY08tvTwvRRIuzzou8LuVgX15ILttuML8b/K9a%2BnLWyFOHqc3ZvbP2TkKte6eX%2B%2B/UvlO7UDXlAyc6tBvO66HYiuQeBrlwBFib/vH1Arf99gVACtkJBQGYBMAzqWAQuSE48cAs%2B/JASgNnyo1r%2BruB0OVBIq/44ujAVCle3XxBlSBFA6ihEBRrxVGB9/MgRVEoGH5j4hvR9kdWfZm8c2h/YWO83moJpSBbgcgRwKkFJ8W8GzBdpIUN5y5IKsgpgSG0IKLd%2BghvVqiu1UKcCFe7JOvlNDUGVNusgyL1qoPIGoFlum7BgFYK4HMDuChvYavwJEYvtVeGzd9tbVqTK8LUZvFwS1Cn7Hwv8qAbGOqHQCw0hIc/a%2BLWl8E9ovkIQqxOEPTDAZ5%2BcQ7funTJx9pCIiGbxFrX6ChCUh2aIcP5hULvxf4CALUPulzB6obYZeEsDIzJiCMxMRDbft0hKqLoi%2Bm/Aoc0N34x95yZMNwv7zDgODQu8VMjHYjUF1xJhBggvhUiMIKBOUbQooX1HTA6I8Mi6JUksOqG5FahdOBoRUkXR9lWhW/MmL%2Bgn4RpmoQGCzsGjaFkxoQCFALtcLQ4t9RhBg70mRhMHSCgyXwuYYum8beJ4kng65hCR8HfpUccnO4aGmuHhpre1w4hBX30FqDPhvpdsNMN%2BFoj/ht7HUNKEzAiZK6JvQQV%2Bm1LvtEm1w4KkcWwa/tcR%2BInVkYlUJpDr4vQqjgkI3oqFDCQkeVv9R77ot26ObeHmLVULboOqCKLUEEioDbJrCkUaGI1FQRExjIWMGyEcA2ALQxQhoDyNGDGbRAIA6iP5LpE3REZoIOKUClQFEBOIXUf4GwAYOnCWimANgDFO4GVBgg5RAcBUc1EKJD5vUZomxFNDtHWjTBQkf0QQEdFuBnRJuaKG6N%2BAeiWoppD0akTFFIotQkoqYMgEbS7huQSo%2BqAxA1HjgLGXAXUbFH1Fags0AgWgP8GAoZjRw44JzL%2BkejQRfkmiXSKWIYDljKxPUH0RaJfwBjyBqCCxJ2L9HdjSoagk0XvyNH0NtEx/VAKf3TStx4Oc8MYaUwXHYiORSpWOgaWJS2IdwHwocLwLdZMUSqbglFmb1JHCw/Ux8VuFgkpA%2Bpte0I2BlW2swQR4RuwS8ZOWvGLkj%2BR5ZNBF1TRn92UMXfCk73sEGCOB7vBbNuLp7H0oyAUU5JYJ262DGBdAv/C/SMRdEuRRI7vmdVyIog0QGILEDiDxAWB/%2BIgzccYL84ejjeyLauu8V5FKtx%2BfqMWNP1QmAi6J7dCpH40BRMTChyQtYZENSIxCaQnuWxokNxSrCIhctaISBn1RCSEhsmDkTHSQxb8xJ6w2MWUO1wVJOWVQ9TPsKNqe5%2BW6kiCnkPuGDAhYnQwDI8ShFEpehEFfoR82/TglY%2BW0E9sC1mFV9EQw7VCgX0BJzN9WG4rQhBPKQXjM4V4qaIuUskwUYJDQqts%2BNRDBS3xoUvqMQPipTiZx2FUqABMv5ATUKMw30nki8mpFIsywpSTxPElUguJP6bYVpJqG7N6h1mOSepNjBGSzhvmIcDBCuFGInM4U%2B4bGFsnPCOprwkYZNGcn29fSzOTEWwxFYnoKWGEnkVhL5Ge4PGbwckR1L8FAirUbEkPMBXBE/pk6m/JkDBOIRPDsBO0%2BcU5KSkJoyMCAtnGw2S4noUmVIsfmxIYnq8VCNVSSfP16GHjIM5U1wehKonPsaJc01iTT0FGwM34r6BMXBnFFiIUx0oskK6IngKjMx7FZURFEwBqjqxDALUSVULH2xPIBorukRmGqjiOx5ouxMGOWzBjQx4YhGZbHdFGJJAVIdqdkgHEZxYM1ounlTLEBhj4ZbkeUdGIZlUg4xDMpUomIlFSi0x3nZGTImzGYytRw1XGRonxkliCCZYisYaOMhyyJwdY2EA2ISRNiVZRoNWe2KKidjyZQ4gfhDlZkUy8AJMuyVID%2BYTDfS8PJEdlPGkc4JOBfFrEeOom11TMwIt/i8GcmkSIJr6b9kcQDlsTLeW019NA0Un7TmonrN4JSCQj6Tm%2B8VF8lAkD6ZzpoElPJH1xh4NtZuKIMjILxAZMhbBQqQtt1wCgP4/pXfWaX7WBk8lpoYsbabFkwZrSUcxpGOYBiyxNSE5DMoWMLO/RRCMMtpGEQzO6RHTBhGwq/nmlbkuTfSOsBgQvIGgF8JJzxJ9phKbkeC3%2B%2Bc/coPz7RDBO5oGFHN%2BghLlS8UtwolIPNHk1MpAYg46ZOE/FJpTgDKP2OUGlCmAyK7KcYRdOXnVx3Z88DeX2W5EuNaJe8/kQfKt6AYT4p8r5OfOhDBC4FTlASWcPgXfTj5iDHod8iMQR0vRArWeYiLeFDTzpvKdnNXLclVzc5x8g4sdAMibh/yB8tkVfO2a%2BSxarwPzE0MiCCNi%2BsDY9k32Pyo0c5QC%2BpClM/kygf5RaP%2BQXwHpHRbQJ0JhfvIjhYLAMvdeudvMbl11mFi8uJNtOQgILqRbEtesBXKmWwiQ6C3oYYrUUqFpMqjQagFAqLNQB6aGZ/l7zFr2LpWTi1aWThRxQNL5aGA4lYrwXfpcGrCtDGDXAXUsgZUCkGZbNcpwQ%2B0AjacGLJhkSyZRLovmVGMVEoyFAKo9GeqMjBYypYOMvUQbJNlGIYgJM02WTLZlWi24toocdTN5mRjEZAsoHCAmZnIDzRg49mY0qDHNLuZNM7Je0oCiKNdxgGDRqkqhlJi3gsMyWd1Glkaw6oOY4pfLILHlLlZbwFsW2I1nhhcxJS2MLakejdItlSSXZerMJmkzCk9S%2B0W3D7EszeldyjmWVDtl9SgcwwhNClN/GzjM4p094W5J%2BWnk/lOFC/ugCaRTASApIJgGFAigJIL26ie5FJHflJQm4asKyG8B7h9QBAEUAlsIvipgJe4/cOuMCqi6twC%2BKjQsgTR5LbiUR5ZLEYGJx4BTDyb8xKCf0kXfzf5F5QweMs75aKIFQMnCViDwnYhJAuIfEF%2BmEEJLxlVIXHOVIsYIL7qbEsZvSKBxEsQOzUeJq0x4q0Zkl7ihvmLQcbeKoV2UUKGEPhXtk6OviZFfSjRVlwMV6UbFUQGeTIA1VPqLqUavgoxTJ8wLIlRAmoEMA64/q/uE0lmSPRgInwfKGWjzSUrEGHi2Bsar4YqF0mMyxFEEiNXAhrYoSkBOcv%2BTo5gU/EKWP5HDWJro1iyIMssgMBmqUUCoNFKoEdH8w6IokBiKCmXD4ii1dSV8O9EuRqhkwyYjJa0pYJjLll%2BStGRjMOXYydReagmYCkoS%2BQFwaYFiBCjBBQpbQMKb1AUgy60C6e5sUSHkUNEXYt1LCuZiJFEAHrCZgSMROskkRhJZE6sWyKVGURxJGx2yoqMeoAFvKr1ukG9aEmkT3r04j6mJCohagzrtEOSW5QNBqVGIFFtQRhQWHbIXRl%2B7I7XP1UUmwM8M78NSVSShHC4LggKLyNfHcxlSNA0mGKY7IkGn5yF4kHOdwJorZzbySE2hbiidaKL4NlRJDV6ijpNT3M0IU5Kvx/63jBysFb1fgOjTIUqF15W8vPCQmBr8OdG1LIH3XjybmBzG9BrBqUUIaHqnGlfvw1SUPAzmq9BIdhvoQ5MIQ8YWwWnK6RmbqpBrZOTU2w0ErKNjACTkpqo1gTt%2Bp8r4E4Btjlh9UXwbAF%2Bk7pzrF0XU7zb5orCfBsAyfOkM6isQuhbAAYOLdumnAhBfYUowkD5sOh%2BbhwUW5pLJPBE%2BpG2C8G%2BSGmsm9TsBRW1zf/IoUYdF5JGJICwGwQ0AUYBABaNALlmMzYgGaMRZyEa3Na8ArW9rWGM60QV/Uf8uQR1LC2fAste4fzXlvXSxbwgjC5IElvoGvS4EYA8LdlooQBaYJM8GbRFrwDaYFtM247SQgZDxgWo52uVfGDrHxgrq8YE5fGB2LxhiE52oWOdrnRXaQE52smJdqHC3ahw92ocI9tKEA6Bkr2t4AMme3Q6pAEOn9AjqB0DJrt8YAZL9rR3fbodn2tHe9rR1Q7gIsOw5hDpB35wEdAWg7bNr80nbotlwAwAWEAho6uA0G/oMQHQCnAlhbgKgJUK510wGKCCEgJlqO007a5lO4XXttNwCAxdO2xIadqcCuEdi9Q97fUM%2B31C50vhX7b4Wu2%2BE5VvhOsb4Suq%2BETlvhRXebWV3m1Vd5tdXYdAcm45YJdOSXbLgd0GQzczu6XFLrd2u7ccjuhkDbB92e6Pd3ul3YHr93B6ndQe93eHtD2R7fdh0f3RHq93R7E9cesPbHutBh6Atx8NnacHCgMAWATAcsGbG8iHaZdIuzZDIg8D%2BAhQlIY7RAG21zaRdic6XQ3r20ohs9NkBAFzpZ3t7OdVAMGr3r50/ybAgu%2BvdTtb27B29ue/PaoGb1j68t/u0fdkLl245Ldbwa3a1LT3/aDhuu8nPrvJyG7ycxulPTHoD1R7j9ye9PSfoT0h7z9N%2By/Rfvj1J679j%2B2/Wfvv3P7U9p%2BtPS/vf1v6f9/%2Bz/dfr/2AGn9wBq/aAcz24pJ9/gaff2iL1wEqd5mvbeXtdy57q9gwWvYvuO3j7Wd7O9vDAYL2z6kDC2ifXgd73RBu9ZBzvVQDJg86Po9AIfUQBEyIHsDJB3AznoIOqASwRB1g9FoX0l65tC6ZfTbAP1vAj9S0tPebt/3f6QDr%2BmQ%2BAbkNf6lDQB%2BQw/tkPSHlDoB1Qx/oUMaGVDmhxQ/oaMNaGDDehkw8YcMMQGotWevA1PoL0LD4DQu0vcgbvWV7e4pgGvf0Dr0CG590WtvbYc4PcGnDLetgz3uoNkxKDHO8I5VN50MGBdzB8XaEYCN577DvWHw8Qb4Of6sDQhvw2duyp0499Zhyw8UaKOlGADuh8o2oYqPqHKjOhqo/UbqONGwDDR5o00e0OtGOj7Rro6YdqNBrrDUB5I7Ab7JBIsDZe1w2gY8MYGvDoxnA9AZSNcG0jLBxvaQaiNc6f0kRjvWseXrUHB98R4I74fEhzGhjPBkXfwZYM5HMtukiw2UZqO3Hqj9xlo90euO9Gnj5ht4yUZeM9G7jjxr4w8baO/GfjzxjPf0cBxHH7DTlEY%2Bkd4N/qzIbh9A5gahPLH2D%2BB%2BY/Dv2MZHDjVBrYyzpuFEhgxTjdE9Cf8McHUTpuwhZjiYOkhztWmKVcesXmHrN1ViSDRVDsQQanEO0Vk3SY5P7A2T%2Bczk0yfZNOJeTQpuk/ydyRCmSt76I4kIK5NxoGTgOZSR4ksVSSMhwp7k2qZZM8nZT5UMU8yd1OCn9TRSLUwKaNPCnWTC8WxepLjkuVxIipukPxqKbaIlR9AdoAUonXrKpY3W1uDlLq3rzklGm9jYhoiWAYDi64o1faZHmMi5m6G1ygc3qkHRBGK9NRgFBe6o5WBCaTOTJoU0X5qtONYTpKYMqElpSpLH0qtwjgtMEJeaFTRoPo28qj0HVaJXEp%2BRZIVc%2BZ8iQUQKnSmtiQQy9QYQuYTyMhBcckwMMoQQRvSzpxgEIDdNFLNRnp8bf8qXllnetSIB3mptQ0nDfJOkocm2f3Ijy2iPkm0x9h3OBSIsVAW0PsB9hYA0s%2BmhtJ0XjAtoTNL4uKUhlK3mbxIWIc85ecwBpZeWMU18Yoik2vlVoCmuTSvPqSZngLzAiSlQuLRmDwQtg2jappK1tc9ZJcyheWba4vdVzyFlCUMGA6HmLEMFtpGhHjNObtEEF5c4iAouTbze1zOCwdATq7BqL6gx8gpW1LAEnSNG6TRhdwt8DNFAgzikFseXak9xDFJiq9UbMBD9x2%2BMWPGaPS%2BKsDoYKLV%2BkN54MnwsKXabaUUs4HTiS2%2BLScyUxHBktlxVLelqmCEnctfhgor0hbRyW4BfUBCOWfHk68ChNk4c/IOuYcW%2B67mU8aRY%2BVFaRK1GlEMxe9L9bkBg2qYMNswCjavTmcfCGBb63XgBtQ2jrZOq63znCA8Vv01CT4WXNtLbB3S28Di0rbEtRl9bdrm8kzlnOBYLA5ZapLk1ETres7RZoB2o76cAOkHWDth1Q68dIYAHVjqCN/a2rFSVqyDrRN/aid8Sc7TDoR1g6BkpOka2%2BZR0I6Md0OrHR%2Bwh29XgIBOonXNdJ3I7LLJxvbXTthVvBGdcOjY73shEwkdjcR4fQkecNsH7dMx%2BfVkahMXHvNCuzfVIao6b719es3HJ6MBs776chR56YDfEPbE09hVwG6vrct27NdNu7XR8e%2BP/GgTfxzowCbRvvGbjGN9o5AdBODH7DBxSE0sZcP/q4TkxhE2TaeuHpGrSR1YzQeBCXXwj/e26/zvuuEmkTYJrg3cXpuZGT92R49MIcOir719g1%2BocjcB2b7Cj41%2BoeIc%2BPo3ATONxWyrdRuY2lb2NlG3jaxsa21bGNgm9rh5uciiQpNxI9FpQOU3PD3hmm1ZeRN2HebR1hm5sZoMUGbDjN6IjddiMc2mDXN2Y0TdUCoX%2BbGhoW01fl0iG094hsk1IdVva3lbcdrW7jfjtJ3E7sdlO3rYTsZ307rxzO/jZBNG2A74EacGbcesW3xjVeqm9MeDvEmUT0%2BoO7bcxMe3md7tl2xBDoO7HObL1u28bcWPm2Q7714W7kfDvm009hRtO%2BPfVs53s7utqexPZ1ua2s7c95O0vdTuT3T9htxu7XYL1oTTbYiLuzCYr0THrb%2B9muw7aHMn2Vjrdz4Cza537mZy7NxgyPuruX2z7q8YO2caO0fW8jqVGe7/YXuz217/9v%2B/reXuAOQHq9%2Be%2BA8XtgPc769/O5vbPsQm97wdy20famM22%2B7p9zg89IvvIne9uwFndCTxNDiCTuD422SYjSmqqTp8MEo9J6gfqd1EJEebyc/U6njTuSVhyKZNOcPDTn63h7QP4dcOOHkFQR%2BaeWwfoZT3Dxh5WKSFhDeJpxJkYJPfVSPVogj9Uww9UfsPCkfDrR9us1MsORHujqtoY4McSnKolpqkmuJjO2mSp6YQqw6YBIbmCLk4evOxcdLpmnTKMl01OfHUzm8xsV7hEGQnOunfHWs5JhlaESYIwh98fuN5icuFmECVS4ZGFZa2RXUr6y9Kz1sJ6TgSzKTiK21vSeajMnrcLK9k9bPVa5c1W3PEEl/UoGIkciayI4GA0vr9Zb6ixBo6g3fqtQtTu9fU6iRKJYkzkV9UkmUfinOnUJb8v4CUC1AWlso0ZXTPayf7EN/Qm6O4umchjhlQ6/mVSROXuYQ1j8Z%2BDNFNKzI5nbShZxLRfAVrzkPaj8H2puQDrUx6Y3JTLNWVhOFZYGnZarNbFXK51oiG0GsEwAKAIA%2BIwFwoDdhzzHof4IwJgBUTdIdw4L0DUWIqWXL2xogf59lCBcgudk4LuVe5mvuLrmI4KJqKupXPQoJKYU182LWGTGMxxNvIK9PnZz0v%2BgWY1ZaCH%2BDqgHQ3p92TRfWqXNlnB0GKSR3iosvaAbLjl4IlRG%2BmfTD3Gi5M8wx4bAXBG7DFtXKRpy7JA0gBUucDV4C%2BOS5jhqo12Z4vX4DqIKEsIj4XCa0PG9RuUnBH974atm1er%2BcZO5If0RpkpO4nEcPShLMj514Uh/RTRikg8UpEaE9ej8tiTDnIT7IBm10mzAkR5ctOyTHrXXziINx6/nbmp8hdDxbT65UINmZpgq7VLG5Vr90j1Jp/1ym9cRpvQ3mblHD2ZC2AZUijZwGbvLN6/b3MMjXk8m8DeVuvE9tat34sqKLX5TDUqNzvJ0UPVcXsFDt0m9OQVvg32CM9lKbDeDvJ%2BvZjbfxfcHNvm5cb73qW5dePE53HrqHmURreDvkFa79SZRIbkFvt3xb2Dnu79ezvu387mbP28QWDuOJ6l9RZ6oKGdun3E5HtyG%2BLntOy3B7591W5d7qScFE839zO4DcAeX3tXP9269Te9vIPeOAeeMuswJuozzl6EbB9A/wf3Xvbu7qM8fcofAPC79s0MBaHxy8c1mQpq0W6EwfQlf7oj6h5Dfw8yPtiLtwh6PfUei70ZoEQmc%2BqmkyL4kEV2K8BeCIL8fJKIorURzeb9pfmpS4Fo40RvaiXmmbcp8i1qf2y1RC9wdA1UmZDX/lE0gm%2B2KjvtFtLbTY8t2CwoFL2nn%2BCp4p0nEAO9b1ohE3%2BljubP7dSd0Z9hT3SQoSn5z7p62IZNDPN0XKzVA/Ahe5tqnkop9S4mVWN%2BMX5UE5/i86WY2EFB4qkSftOAdPjIHAw5JugjyjMQkNLdYQy1xectxXvRq2g16qFweeH2%2BWBhalHSSMkn9l9J65f1Iuv4rilVE%2B7jgJYnhz78vjSSrW5z7DLpc1zRKhNehueaKntTUlHs54y0KVAl5zQtWVOm4ayhPs8gRlQyhvMSteUGrXUOD7QoeIw/HQCPBrIVt9B13ZOSblu1KyM1T0//V9PAN0wZp7CGvD57iAwAXxGi4IAAugXHkTAIsBOTHekQVa1ZMElvWfe8AkSFuNEmfV/fu4NQIH2dBB9g%2BIAEPqH0Wph%2BIg4fZq/e6g4rvH3%2BbTt7ACcn%2BIcBlgtATgP0F4BeAOAWgUgKgE4A%2BAfAAANQACybwesAACU3gooNYBsCLU8BSAQidnwz%2BWDSgBgdiJCJCzalQRHm4EVSEz44CSBWfmgXgFz44C8AFAIAWOLL60DLA4AsAJAF3B3zhByAlAW33QD6AmAbABm6UHwDoDXITfEAEIPr9IBpbmAXETgNL8D81B/gAAeRCDaAEEIf3gHfEvQR/vn/vrACEDcDAAqcJgE39wF4BYB89RgcQHL9IA0wEEaWQF/781jlA3A6oOP%2BQCTDa%2BOfRwTqOH5cBYB/ftoa8LX%2BkUaolA3wdiv%2BH5CgA5fywTmNzF594A6sEfq4Gz%2Bl/8BBAIgMQOwHh1z/5ASgNQP790BNADARgEAGEn0B4AQgJvyAMsE7QpBs/wECP1OGAgsBkAcQNwCqEdR2ZwgLPzn9IsUxYAj/tEZoK0BSAOBFE4wRoFIBfAWYAKAigTIESBkgAQAADwA7IBSBugUAL6BJgaq0qBpgaAKQCf/AQA6BageAN6AIgSYFQDXABoD0BH1HAPmA8A5YHF91gJf0Z9mfPXyL9DfWaGowzretAYBpQYiAgBcAQgBH0IIZnV4BzfeX1IBFfLLHtpTkZJhiBTiKjkCYt/TgF19SAFgAkAewUgDZ8OfQ32N9TfGX318offQE4BBgOgJUDOAPgM0DlgaRSSB7ASQCAA)
Apologies for the clickbait title ;)
Currently in Zig, the standard library get-timestamp method is written in such a way that defeats LLVM optimizations. I definitely think the Zig code should be improved, and I will submit a PR to them, but LLVM could do better here too:
```zig
const std = @import("std");
export fn get_timestamp() i64 {
return (std.time.Instant.now() catch return -123).timestamp.sec + 12345;
}
```
```asm
get_timestamp:
sub rsp, 24
mov rax, qword ptr [rip + os.linux.vdso_clock_gettime]
test rax, rax
je .LBB0_1
lea rsi, [rsp + 8]
mov edi, 7
call rax
test rax, rax
je .LBB0_4
cmp rax, -22
je .LBB0_4
.LBB0_1:
lea rsi, [rsp + 8]
mov eax, 228
mov edi, 7
syscall
.LBB0_4:
mov rcx, rax
neg rcx
xor edx, edx
cmp rax, -4095
cmovae rdx, rcx
test rdx, rdx
je .LBB0_6
mov rax, -123 ; I defined this to be our error condition
add rsp, 24
ret
.LBB0_6:
mov eax, 12345 ; happy path: add 12345
add rax, qword ptr [rsp + 8]
add rsp, 24
ret
.LCPI2_1:
.byte 0
.byte 1
.byte 2
.byte 3
.byte 4
.byte 5
.byte 6
.byte 7
.byte 8
.byte 9
.byte 10
.byte 11
.byte 12
.byte 13
.byte 14
.byte 15
.byte 16
.byte 17
.byte 18
.byte 19
.byte 20
.byte 21
.byte 22
.byte 23
.byte 24
.byte 25
.byte 26
.byte 27
.byte 28
.byte 29
.byte 30
.byte 31
.LCPI2_2:
.zero 4,31
os.linux.vdso_clock_gettime:
.quad os.linux.init_vdso_clock_gettime
__anon_3345:
.asciz "LINUX_2.6"
__anon_3353:
.asciz "__vdso_clock_gettime"
```
There are some dead simple optimizations that could be had here. `LBB0_4` could be unwrapped at compile time. It can be jumped to by these two conditional jumps:
```asm
call rax
test rax, rax
je .LBB0_4
cmp rax, -22
je .LBB0_4
```
Of course, we can easily figure out what should happen when we run those inputs through the `LBB0_4` snippet. An input of `0` would make us jump to `LBB0_6`. An input of `-22` would have us pass over the conditional jump to `LBB0_6`.
If we DID need `LBB0_4`, LLVM could also have instead noticed that we do not need to produce `rdx`, since we aren't using that for anything besides checking if it's zero. Which we can already determine by checking `rax`. In any case, I am not sure why `LBB0_4` didn't get eliminated.
```diff
get_timestamp:
sub rsp, 24
mov rax, qword ptr [rip + os.linux.vdso_clock_gettime]
test rax, rax
je .LBB0_1
lea rsi, [rsp + 8]
mov edi, 7
call rax
test rax, rax
- je .LBB0_4
+ je .LBB0_6
cmp rax, -22
je .LBB0_4
.LBB0_1:
lea rsi, [rsp + 8]
mov eax, 228
mov edi, 7
syscall
+ test rax, rax
+ je .LBB0_6
+ cmp rax, -4096
+ jle .LBB0_6
.LBB0_4:
- mov rcx, rax
- neg rcx
- xor edx, edx
- cmp rax, -4095
- cmovae rdx, rcx
- test rdx, rdx
- je .LBB0_6
mov rax, -123 ; I defined this to be our error condition
add rsp, 24
ret
.LBB0_6:
mov eax, 12345 ; happy path: add 12345
add rax, qword ptr [rsp + 8]
add rsp, 24
ret
```
Contributor guide
Research direction
Start with the Zig Godbolt and LLVM Godbolt reproductions linked in the issue and compare the behavior for -0 and 0. Then locate the relevant LLVM compiler component from the reproduction; no source file, test, or acceptance criterion is named, so confirm the expected behavior before defining done.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- zig
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100