{"push_id":594887565,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"b7edfc616af9adba2aa20bcf59611d7d9e5606c3","before":"06b05d74b59f518f4e2bc87713ec8f37c52ade9d","commits":[{"sha":"b7edfc616af9adba2aa20bcf59611d7d9e5606c3","author":{"email":"477cf5b24d5c0cb561469a6faea86f0cd78ed1ab@sn.scee.net","name":"Andrea Di Biagio"},"message":"[DAGCombiner] Fix wrong folding of AND dag nodes.\n\nThis patch fixes the logic in the DAGCombiner that folds an AND node according\nto rule: (and (X (load V)), C) -> (X (load V))\n\nAn AND between a vector load 'X' and a constant build_vector 'C' can be folded\ninto the load itself only if we can prove that the AND operation is redundant.\nThe algorithm implemented by 'visitAND' firstly computes the splat value 'S'\nfrom C, and then checks if S has the lower 'B' bits set (where B is the size in\nbits of the vector element type). The algorithm takes into account also the\n'undef' bits in the splat mask.\n\nUnfortunately, the algorithm only worked under the assumption that the size of S\nis a multiple of the vector element type. With this patch, we conservatively\navoid folding the AND if the splat bits are not compatible with the vector\nelement type.\n\nAdded X86 test and-load-fold.ll\n\nDifferential Revision: http://reviews.llvm.org/D8085","distinct":true,"url":"https://api.github.com/repos/llvm-project/llvm-project-submodule/commits/b7edfc616af9adba2aa20bcf59611d7d9e5606c3"}]}