summaryrefslogtreecommitdiff
path: root/lib/Analysis/AliasSetTracker.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-08-29 04:14:47 +0000
committerChris Lattner <sabre@nondot.org>2010-08-29 04:14:47 +0000
commitfedac7d9b0c83c94f0f8cc2aaa6b4cce4a6e9a55 (patch)
treeeea6373985c32634dd991b6479e9cc422e987a3f /lib/Analysis/AliasSetTracker.cpp
parent9476d746d655524b5460724fbcb9507dd96d2791 (diff)
downloadllvm-fedac7d9b0c83c94f0f8cc2aaa6b4cce4a6e9a55.tar.gz
llvm-fedac7d9b0c83c94f0f8cc2aaa6b4cce4a6e9a55.tar.bz2
llvm-fedac7d9b0c83c94f0f8cc2aaa6b4cce4a6e9a55.tar.xz
when merging two alias sets, the result set is volatile if either
of the sets is volatile. We were dropping the volatile bit of the merged in set, leading (luckily) to assertions in cases like PR7535. I cannot produce a testcase that repros with opt, but this is obviously correct. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112402 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/AliasSetTracker.cpp')
-rw-r--r--lib/Analysis/AliasSetTracker.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/Analysis/AliasSetTracker.cpp b/lib/Analysis/AliasSetTracker.cpp
index 6c18f22700..d52085e575 100644
--- a/lib/Analysis/AliasSetTracker.cpp
+++ b/lib/Analysis/AliasSetTracker.cpp
@@ -35,6 +35,7 @@ void AliasSet::mergeSetIn(AliasSet &AS, AliasSetTracker &AST) {
// Update the alias and access types of this set...
AccessTy |= AS.AccessTy;
AliasTy |= AS.AliasTy;
+ Volatile |= AS.Volatile;
if (AliasTy == MustAlias) {
// Check that these two merged sets really are must aliases. Since both