{"push_id":3176704247,"size":39,"distinct_size":39,"ref":"refs/heads/master","head":"f5faa65ba318a630bfdaeaf99dd43afc2a055557","before":"3a48e4d866bd8e82083375c68d55e5195460724b","commits":[{"sha":"4501266c75157beb1e5e0cd343d310d12981c955","author":{"name":"Hal Finkel","email":"76a8e82c3bdc78a1f9490a34857cdee8b1b06a45@anl.gov"},"message":"[BasicAA] Support arbitrary pointer sizes (and fix an overflow bug)\n\nMotivated by the discussion in D38499, this patch updates BasicAA to support\narbitrary pointer sizes by switching most remaining non-APInt calculations to\nuse APInt. The size of these APInts is set to the maximum pointer size (maximum\nover all address spaces described by the data layout string).\n\nMost of this translation is straightforward, but this patch contains a fix for\na bug that revealed itself during this translation process. In order for\ntest/Analysis/BasicAA/gep-and-alias.ll to pass, which is run with 32-bit\npointers, the intermediate calculations must be performed using 64-bit\nintegers. This is because, as noted in the patch, when GetLinearExpression\ndecomposes an expression into C1*V+C2, and we then multiply this by Scale, and\ndistribute, to get (C1*Scale)*V + C2*Scale, it can be the case that, even\nthrough C1*V+C2 does not overflow for relevant values of V, (C2*Scale) can\noverflow. If this happens, later logic will draw invalid conclusions from the\n(base) offset value. Thus, when initially applying the APInt conversion,\nbecause the maximum pointer size in this test is 32 bits, it started failing.\nSuspicious, I created a 64-bit version of this test (included here), and that\nfailed (miscompiled) on trunk for a similar reason (the multiplication can\noverflow).\n\nAfter fixing this overflow bug, the first test case (at least) in\nAnalysis/BasicAA/q.bad.ll started failing. This is also a 32-bit test, and was\nrelying on having 64-bit intermediate values to have BasicAA return an accurate\nresult. In order to fix this problem, and because I believe that it is not\nuncommon to use i64 indexing expressions in 32-bit code (especially portable\ncode using int64_t), it seems reasonable to always use at least 64-bit\nintegers. In this way, we won't regress our analysis capabilities (and there's\na command-line option added, so experimenting with this should be easy).\n\nAs pointed out by Eli during the review, there are other potential overflow\nconditions that this patch does not address. Fixing those is left to follow-up\nwork.\n\nPatch by me with contributions from Michael Ferguson (mferguson@cray.com).\n\nDifferential Revision: https://reviews.llvm.org/D38662","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/4501266c75157beb1e5e0cd343d310d12981c955"},{"sha":"113a61542fdac66e5afa3d9e7ff76eacdaf8e542","author":{"name":"Sanjay Patel","email":"4a8dfeb3a1c6b90c15fd5a5a91e8e25ea46ffe0b@rotateright.com"},"message":"[x86] add more tests for potential horizontal ops; NFC\n\nAs discussed in D56011 - add runs for AVX512 and tests with extra uses.","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/113a61542fdac66e5afa3d9e7ff76eacdaf8e542"},{"sha":"790a98648aa159d428daea16838d6afc4dbcf26e","author":{"name":"Simon Pilgrim","email":"af4b1a06dcc93e086b35435d5654eb2aff59399a@redking.me.uk"},"message":"[X86] Support SHLD/SHRD masked shift-counts (PR34641)\n\nPeek through shift modulo masks while matching double shift patterns.\n\nI was hoping to delay this until I could remove the X86 code with generic funnel shift matching (PR40081) but this will do for now.\n\nDifferential Revision: https://reviews.llvm.org/D56199","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/790a98648aa159d428daea16838d6afc4dbcf26e"},{"sha":"dce6b46c35e9c3060d43066cf3d1e1f2124fbe77","author":{"name":"Wei Mi","email":"c7a93d10b09f6e991164d9c1ce8125070c3e456b@google.com"},"message":"[PowerPC] Remove SeenUse check when optimizing conditional branch in\nPPCPreEmitPeephole pass.\n\nPPCPreEmitPeephole will convert a BC to B when the conditional branch is\nbased on a constant CR by CRSET or CRUNSET. This is added in\nhttps://reviews.llvm.org/rL343100.\n\nWhen the conditional branch is known to be always taken, all branches will\nbe removed and a new unconditional branch will be inserted. However, when\nSeenUse is false the original patch will not remove the branches, but still\ninsert the new unconditional branch, update the successors and create\ninconsistent IR. Compiling the synthetic testcase included can show the\nproblem we run into.\n\nThe patch simply removes the SeenUse condition when adding branches into\nInstrsToErase set.\n\nDifferential Revision: https://reviews.llvm.org/D56041","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/dce6b46c35e9c3060d43066cf3d1e1f2124fbe77"},{"sha":"302baed605a9bb7cb16c94b30fef5dbd699d0bfc","author":{"name":"Pete Cooper","email":"607a4aeae37c8a26eb86f95c436fb926ad94d55c@apple.com"},"message":"Only convert objc messages to alloc to objc_alloc if the receiver is a class.\n\nr348687 converted [Foo alloc] to objc_alloc(Foo).  However the objc runtime method only takes a Class, not an arbitrary pointer.\n\nThis makes sure we are messaging a class before we convert these messages.\n\nrdar://problem/46943703","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/302baed605a9bb7cb16c94b30fef5dbd699d0bfc"},{"sha":"f1984271b6bca709ebb6cf4ee4b1d987125a3cb1","author":{"name":"Michal Gorny","email":"1fe88f9866fd319c016c0a70a5ad09cd63d4a9e4@gentoo.org"},"message":"[sanitizer_common] Add tests for more stdio.h functions\n\nAdd two new test cases that test the following stdio.h functions:\n- clearerr()\n- feof()\n- ferror()\n- fileno()\n- fgetc()\n- getc()\n- ungetc()\n\nDifferential Revision: https://reviews.llvm.org/D56136","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/f1984271b6bca709ebb6cf4ee4b1d987125a3cb1"},{"sha":"7de387c08cfd8a3fd075733901e3ffa0a84c3e91","author":{"name":"Nico Weber","email":"0d2d6fe0cb2e9ade0d2bf90d72a72b8ac034ef0e@gmx.de"},"message":"[gn build] Add some llvm/tools: lli, lli-child-target\n\nAlso add build files for dependencies llvm/lib/ExecutionEngine/{Interpreter,Orc}\n\nNeeded for check-llvm.\n\nDifferential Revision: https://reviews.llvm.org/D56193","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/7de387c08cfd8a3fd075733901e3ffa0a84c3e91"},{"sha":"c30f61fc37495d503a6dee8d12eed11f737615a1","author":{"name":"Michal Gorny","email":"1fe88f9866fd319c016c0a70a5ad09cd63d4a9e4@gentoo.org"},"message":"[sanitizer_common] Rewrite more Posix tests to use asserts\n\nRewrite the tests for Posix functions that silently 'return 1'\nor 'exit(1)' on error, to instead verbosely report the error using\nassert.  This is based on requests made in review of D56136.\n\nDifferential Revision: https://reviews.llvm.org/D56149","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/c30f61fc37495d503a6dee8d12eed11f737615a1"},{"sha":"f431ac6a6a819f6317cd7c7b1fcc4709428179c3","author":{"name":"Michal Gorny","email":"1fe88f9866fd319c016c0a70a5ad09cd63d4a9e4@gentoo.org"},"message":"[sanitizer_common] Fix devname_r() return type on !NetBSD\n\nUpdate the interceptor for devname_r() to account for correct return\ntypes on different platforms.  This function returns int on NetBSD\nbut char* on FreeBSD/OSX.  Noticed by @krytarowski.\n\nDifferential Revision: https://reviews.llvm.org/D56150","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/f431ac6a6a819f6317cd7c7b1fcc4709428179c3"},{"sha":"b3a55a10a29e17b41d50725e7552139d050ff1fa","author":{"name":"Michal Gorny","email":"1fe88f9866fd319c016c0a70a5ad09cd63d4a9e4@gentoo.org"},"message":"[sanitizer_common] Add tests for more *putc and *getc variants\n\nAdd tests for the more character-oriented functions, that is:\n- fputc(), putc() and putchar()\n- getc_unlocked()\n- putc_unlocked() and putchar_unlocked()\n\nDifferential Revision: https://reviews.llvm.org/D56152","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/b3a55a10a29e17b41d50725e7552139d050ff1fa"},{"sha":"01f989e1f2698fa07c9f747d4d506ade5f667793","author":{"name":"Michal Gorny","email":"1fe88f9866fd319c016c0a70a5ad09cd63d4a9e4@gentoo.org"},"message":"[sanitizer_common] Add test for popen()\n\nDifferential Revision: https://reviews.llvm.org/D56153","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/01f989e1f2698fa07c9f747d4d506ade5f667793"},{"sha":"7a32edebd3dba811ffdc991edfa1d5823241abdd","author":{"name":"Michal Gorny","email":"1fe88f9866fd319c016c0a70a5ad09cd63d4a9e4@gentoo.org"},"message":"[sanitizer_common] Add tests for NetBSD funopen*() functions\n\nDifferential Revision: https://reviews.llvm.org/D56154","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/7a32edebd3dba811ffdc991edfa1d5823241abdd"},{"sha":"30076efafe7c141104c7156209d2dff79c9fa4e6","author":{"name":"Michal Gorny","email":"1fe88f9866fd319c016c0a70a5ad09cd63d4a9e4@gentoo.org"},"message":"[sanitizer_common] Implement popen, popenve, pclose interceptors\n\nImplement the interceptors for popen(), pclose() and popenve()\nfunctions.  The first two are POSIX, the third one is specific\nto NetBSD.  popen() spawns a process and creates a FILE object piping\ndata from/to that process.  pclose() closes the pipe and waits for\nthe process to terminate appropriately.\n\nFor the purpose of popen(), the COMMON_INTERCEPTOR_FILE_OPEN macro is\nmodified to allow null path parameter.\n\nDifferential Revision: https://reviews.llvm.org/D56157","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/30076efafe7c141104c7156209d2dff79c9fa4e6"},{"sha":"e85ae0b6aa153dca593acaef36024d70bac77002","author":{"name":"Michal Gorny","email":"1fe88f9866fd319c016c0a70a5ad09cd63d4a9e4@gentoo.org"},"message":"[sanitizer_common] Implement funopen*() interceptors for NetBSD\n\nDifferential Revision: https://reviews.llvm.org/D56158","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/e85ae0b6aa153dca593acaef36024d70bac77002"},{"sha":"cb5d50d0b066ba67894a4b36b1837b8514fec8b7","author":{"name":"Nico Weber","email":"0d2d6fe0cb2e9ade0d2bf90d72a72b8ac034ef0e@gmx.de"},"message":"[gn build] Add build files for bugpoint-passes and LLVMHello plugins\n\nThese two plugins are loaded into a host process that contains all LLVM\nsymbols, so they don't link against anything. This required minor readjustments\nto the tablegen() setup of IR.\n\nNeeded for check-llvm.\n\nDifferential Revision: https://reviews.llvm.org/D56204","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/cb5d50d0b066ba67894a4b36b1837b8514fec8b7"},{"sha":"25a55fc79d964f07d9ad05ea1521aa459e9095e9","author":{"name":"Craig Topper","email":"0c9ca018c303606191d06dd2c0bdf1206717c3f3@intel.com"},"message":"[DAGCombiner][X86][PowerPC] Teach visitSIGN_EXTEND_INREG to fold (sext_in_reg (aext/sext x)) -> (sext x) when x has more than 1 sign bit and the sext_inreg is from one of them.\n\nIf x has multiple sign bits than it doesn't matter which one we extend from so we can sext from x's msb instead.\n\nThe X86 setcc-combine.ll changes are a little weird. It appears we ended up with a (sext_inreg (aext (trunc (extractelt)))) after type legalization. The sext_inreg+aext now gets optimized by this combine to leave (sext (trunc (extractelt))). Then we visit the trunc before we visit the sext. This ends up changing the truncate to an extractvectorelt from a bitcasted vector. I have a follow up patch to fix this.\n\nDifferential Revision: https://reviews.llvm.org/D56156","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/25a55fc79d964f07d9ad05ea1521aa459e9095e9"},{"sha":"c6fe562816cdb24ec6c47c09e7fca0e74e514ac9","author":{"name":"Craig Topper","email":"0c9ca018c303606191d06dd2c0bdf1206717c3f3@intel.com"},"message":"[LegalizeIntegerTypes] When promoting the result of an extract_vector_elt also promote the input type if necessary\n\nBy also promoting the input type we get a better idea for what scalar type to use. This can provide better results if the result of the extract is sign extended. What was previously happening is that the extract result would be legalized, sometime later the input of the sign extend would be legalized using the result of the extract. Then later the extract input would be legalized forcing a truncate into the input of the sign extend using a replace all uses. This requires DAG combine to combine out the sext/truncate pair. But sometimes we visited the truncate first and messed things up before the sext could be combined.\n\nBy creating the extract with the correct scalar type when we create legalize the result type, the truncate will be added right away. Then when the sign_extend input is legalized it will create an any_extend of the truncate which can be optimized by getNode to maybe remove the truncate. And then a sign_extend_inreg. Now DAG combine doesn't have to worry about getting rid of the extend.\n\nThis fixes the regression on X86 in D56156.\n\nDifferential Revision: https://reviews.llvm.org/D56176","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/c6fe562816cdb24ec6c47c09e7fca0e74e514ac9"},{"sha":"7c0b5ae24b6f26bac6aff51622709ca1e62139cf","author":{"name":"Craig Topper","email":"0c9ca018c303606191d06dd2c0bdf1206717c3f3@intel.com"},"message":"[X86] Adding full coverage of MC encoding for the XOP and LWP ISAs.\n\nAdding MC regressions tests to cover the XOP isa set.\nThis patch is part of a larger task to cover MC encoding of all X86 isa sets started in revision: https://reviews.llvm.org/D39952\n\nDifferential Revision: https://reviews.llvm.org/D41392","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/7c0b5ae24b6f26bac6aff51622709ca1e62139cf"},{"sha":"db6fd29fe8578aaa3b8a4be39d6202321363d5d6","author":{"name":"Nico Weber","email":"0d2d6fe0cb2e9ade0d2bf90d72a72b8ac034ef0e@gmx.de"},"message":"[gn build] Add fuzzers in llvm/tools that are needed for check-llvm\n\nAlso add a fuzzer() template for defining fuzzers that's similar to\nadd_llvm_fuzzer in the CMake build, and a build file for dependency\nllvm/lib/FuzzMutate.\n\nAlso make `assert(defined(...` error strings a bit more self-consistent.\n\nDifferential Revision: https://reviews.llvm.org/D56194","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/db6fd29fe8578aaa3b8a4be39d6202321363d5d6"},{"sha":"3516de362c3db0f3fab130edb110b2dc1cc20806","author":{"name":"Craig Topper","email":"0c9ca018c303606191d06dd2c0bdf1206717c3f3@intel.com"},"message":"[DAGCombiner] After performing the division by constant optimization for a DIV or REM node, replace the users of the corresponding REM or DIV node if it exists.\n\nCurrently we expand the two nodes separately. This gives DAG combiner an opportunity to optimize the expanded sequence taking into account only one set of users. When we expand the other node we'll create the expansion again, but might not be able to optimize it the same way. So the nodes won't CSE and we'll have two similarish sequences in the same basic block. By expanding both nodes at the same time we'll avoid prematurely optimizing the expansion until both the division and remainder have been replaced.\n\nImproves the test case from PR38217. There may be additional opportunities after this.\n\nDifferential Revision: https://reviews.llvm.org/D56145","distinct":true,"url":"https://api.github.com/repos/kraj/llvm-project-20170507/commits/3516de362c3db0f3fab130edb110b2dc1cc20806"}]}
{"actor":{"display_login":"kraj"}}