Correctly combine alias.scope metadata by a union instead of intersecting
authorBjorn Steinbrink <bsteinbr@gmail.com>
Sun, 8 Feb 2015 17:07:14 +0000 (17:07 +0000)
committerBjorn Steinbrink <bsteinbr@gmail.com>
Sun, 8 Feb 2015 17:07:14 +0000 (17:07 +0000)
commit61a16d2a16724548f0f216165229950758bc2b25
tree3aca2ea48caddd4c1cbc39d976aacdffbaf0f729
parent186332c0c98aab21acb91ae11055e44ec1acb95a
Correctly combine alias.scope metadata by a union instead of intersecting

Summary:
The alias.scope metadata represents sets of things an instruction might
alias with. When generically combining the metadata from two
instructions the result must be the union of the original sets, because
the new instruction might alias with anything any of the original
instructions aliased with.

Reviewers: hfinkel

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D7490

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228525 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/IR/Metadata.h
lib/Analysis/TypeBasedAliasAnalysis.cpp
lib/IR/Metadata.cpp
lib/Transforms/Utils/Local.cpp
lib/Transforms/Vectorize/SLPVectorizer.cpp
test/Transforms/Util/combine-alias-scope-metadata.ll [new file with mode: 0644]