aboutsummaryrefslogtreecommitdiffstats
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
commit7e9b6e94af4532c11aed709d1e3603eef9584177 (patch)
treeeea6373985c32634dd991b6479e9cc422e987a3f /lib/Analysis/AliasSetTracker.cpp
parent23dbc5b73c99db2f337c037a2d6b2e521a7c2bae (diff)
downloadexternal_llvm-7e9b6e94af4532c11aed709d1e3603eef9584177.zip
external_llvm-7e9b6e94af4532c11aed709d1e3603eef9584177.tar.gz
external_llvm-7e9b6e94af4532c11aed709d1e3603eef9584177.tar.bz2
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 6c18f22..d52085e 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