From fedac7d9b0c83c94f0f8cc2aaa6b4cce4a6e9a55 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 29 Aug 2010 04:14:47 +0000 Subject: 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 --- lib/Analysis/AliasSetTracker.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/Analysis/AliasSetTracker.cpp') 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 -- cgit v1.2.3